Repository navigation
Releases: FuRuiORG/ZJMF-UpstreamMonitor
Releases · FuRuiORG/ZJMF-UpstreamMonitor
Release list
V2.1.0 - 分组变更监控支持
新功能
分组变更监控
- 新增分组变更识别:监控器现在能够识别产品在不同分组之间的移动,不再将分组移动误报为产品的新增或删除
- 邮件通知增强:SMTP 通知中新增分组变更的独立展示区块,清晰呈现产品的分组移动情况
- 统计面板优化:HTML 邮件中的变化统计面板新增分组变更计数,一目了然掌握所有变化类型
改进
- 优化产品变化提取逻辑,准确识别分组移动事件
- 避免分组移动被重复报告为新增/删除,减少误报干扰
升级说明
直接替换 upstream_monitor.py 文件即可,配置文件和数据库保持兼容。
Full Changelog: V2.0.0...V2.1.0
v2.0.0 - 性能优化与安全性重构
安全修复
- HTML XSS 风险修复:邮件通知中的所有动态内容(产品名称、分组名称、价格等)现在都经过 HTML
转义,防止恶意脚本注入
Bug 修复
- 价格解析增强:支持多种价格格式
- 货币符号:
¥100、$50、100元 - 中文标识:
免费、试用 - 异常格式:解析失败时记录警告而不中断程序
- 货币符号:
- SQLite 并发处理:添加数据库锁重试机制
- 最多重试 5 次
- 递增延迟策略
- 连接超时 30 秒
性能优化
- 单次遍历提取:合并
_extract_products和_build_product_description_map,从 6 次遍历优化为 2 次 - 预构建映射复用:
_check_price_changes和_detect_product_reshuffling直接使用预构建的 ID
映射和分组映射 - 分组 ID 匹配:
first_group和group改为按 ID 匹配而非索引,避免顺序变化导致的误报
新功能
- 日志系统配置:支持通过环境变量控制
LOG_LEVEL:设置日志级别(默认 INFO)LOG_FILE:设置日志文件路径(默认仅控制台输出)
其他改进
- 监控日志从
print()改为logging模块,便于 cron job 场景收集日志 - 配置向导的交互式提示保留
print(),确保用户体验
Breaking Changes
无,向后兼容所有现有配置。
Full Changelog: V1.2.3...V2.0.0
V1.2.2 - 改进比对逻辑,支持分组ID匹配
Bug Fixes
- 改进分组比对逻辑:将一级分组(
first_group)和二级分组(group
)的比对改为按ID匹配,而非按索引位置匹配 - 避免因分组顺序变化导致的误报(之前会错误报告为"删除+新增")
Changes
- 扩展
is_products_list检测逻辑为is_id_based_list - 现在支持按ID匹配的列表:
products、first_group、group
Example
之前:分组顺序改变会被误报为删除和新增
现在:只要分组ID相同,正确识别为该分组内容的变化
Full Changelog: V1.2.2...V1.2.3
V1.2.2 - 修复新增产品不发邮件的问题
修复
新增产品不发邮件的问题
- 修复了当上游在新分组中上架产品时,邮件通知无法发送的问题
- 原因:列表长度变化时,新增分组内的产品未被正确提取
配置键名不匹配
- 修复了配置向导使用
email键,但初始化代码查找smtp键的问题 - 现在同时支持两种键名,确保向后兼容
日志显示不准确
- 修复了邮件发送日志写死显示"价格变化"的问题
- 现在会根据实际变化类型动态显示(新增/删除/修改/价格变化)
Full Changelog: V1.2.1...V1.2.2
优化产品列表变更检测与数据库存储处理
Bug 修复
产品列表变更检测优化
-
改进产品列表变更检测逻辑,现在按产品ID进行匹配而非依赖顺序比较,解决了因产品顺序变化导致的误报问题
数据库存储增强 -
新增对字典和列表类型值的JSON序列化处理,确保复杂数据结构能够正确存入数据库
路径解析兼容性 -
更新路径解析逻辑,支持新旧格式的产品路径匹配,提升向后兼容性
更新详情
本次更新主要解决了以下问题:
- 变更检测更准确 - 当上游产品列表顺序发生变化但实际内容未变时,不再误报变更
- 数据存储更可靠 - 复杂的数据类型(如字典、列表)现在可以正确序列化存储
- 兼容性更好 - 支持多种产品路径格式,适应不同的上游数据源
新增库存状态监控模式,优化性能与稳定性
新增功能
库存监控模式
- 新增
stock_notify_mode配置项,支持三种模式:full- 完全对比:监控所有库存数值变化status_only- 状态变化:仅在库存状态切换时通知(有货 ↔ 缺货)disabled- 禁用:不监控库存变化
- 配置向导新增"配置库存监控"选项(菜单项 6)
Bug 修复
- 修复
get_recent_changes方法查询错误的数据库表名(price_changes→change_records)
性能优化
- 消除
_extract_products重复计算,改为预先提取后传递 - 新增
_build_product_description_map方法,预构建产品描述映射 - 数据库连接使用上下文管理器,防止连接泄漏
稳定性改进
- 网络请求新增重试机制,支持指数退避(默认最多 3 次重试)
- 关键错误处理添加
logging日志记录
升级指南
建议旧版用户执行以下步骤:
- 备份现有配置文件
upstream_config.json - 删除旧的配置文件
- 运行
python3 upstream_monitor.py --config重新配置
Full Changelog: V1.1.1...V1.2.0
简化差异存储机制
变更内容
🗑️ 移除功能
- 移除
upstream_diffs目录 - 不再生成差异 JSON 文件- 变化记录已通过数据库持久化存储,差异文件冗余
- 减少磁盘占用,简化项目结构
🔧 优化
- 简化变化检测输出信息
- 更新文档,移除差异文件相关说明
升级说明
从 v1.1.0 升级:
- 下载新版本源码覆盖旧版本
- 原有的
upstream_diffs目录可以手动删除(可选) - 数据库和配置文件完全兼容,无需额外操作
数据目录结构(更新后)
/opt/ZJMFUpstreamMonitor/ # Linux
├── upstream_config.json # 配置文件
├── upstream_data/ # 初始数据存储目录
│ └── {上游名称}_initial.json
└── upstream_monitor.db # SQLite 数据库文件
Full Changelog: V1.1.0...V1.1.1
增强邮件通知与数据追踪功能
🚀 新功能
- 增强的邮件通知模板 - 全新的 HTML 邮件格式,支持颜色区分涨价/降价/新增/删除等变化类型
- 产品链接支持 - 邮件通知中包含可直接访问的产品链接,快速定位变化产品
- 字段级变化追踪 - 精确追踪产品字段级别的修改,记录旧值与新值对比
- 变化记录数据库存储 - 所有变化记录持久化到 SQLite 数据库,支持历史查询
✨ 改进
- 优化差异比较算法 - 改进数据对比逻辑,更准确地识别产品级别变化
- 邮件内容截断 - 过长的字段值自动截断,避免邮件过大
- 配置向导增强 - 支持更友好的交互式配置流程
- 跨平台路径支持 - Windows 与 Linux 自动适配数据存储路径
🐛 修复
- 修复首次运行时数据文件路径问题
- 修复价格变化检测的边界情况处理
- 修复邮件发送失败时的异常处理

上游产品信息监控工具正式发布!这是一个用于自动化监控上游供应商产品变化的工具。
主要功能
- 多上游监控 - 支持同时配置和监控多个上游供应商
- 价格变化检测 - 自动检测产品价格涨跌,记录变化幅度
- 数据变化追踪 - 检测产品新增、删除、字段修改等变化
- 差异文件存储 - 将每次变化保存为独立的 JSON 差异文件
- SQLite 数据库 - 持久化存储所有变化记录,便于查询分析
- 邮件通知 - 支持 SMTP 邮件通知,实时推送变化信息
- HTML 邮件格式 - 直观的邮件模板,清晰展示变化详情
- 配置向导 - 交互式命令行配置工具,快速完成设置
Full Changelog: https://github.com/FuRuiORG/ZJMF-UpstreamMonitor/commits/V1.0.0