# 2026-07-08 工作总结 ## 一、文章摘要/学习去重 (A) ### 问题 点击"📝 摘要"或"🔧 学习"按钮时,每次都重复 spawn hermes 子进程, 不管这篇文章是否已经有过摘要或学习结果。 ### 改动 **local_db.py** - `daily_reports` 表新增 `dedup_key` 列 (TEXT) 和 `article_url` 列 (TEXT) - 新增联合索引 `idx_daily_reports_dedup ON (dedup_key, report_date)` - 新增 `find_article_summary(dedup_key, report_type)` — 单篇查询 - 新增 `find_article_summaries_batch(dedup_keys, report_type)` — 批量查询 - `report_add()` 新增可选参数 `dedup_key` 和 `article_url` **app.py** - 新增 `_extract_dedup_key(url)` — 从微信文章 URL 提取 `biz|mid|idx|sn` 去重标识 - `api_article_summarize()` — 先查去重,已有则返回 `status: "cached"` + 完整内容 - `api_article_learn()` — 同上 - 新增 `POST /api/articles/check-summaries` — 批量查询 API 接受 `{urls: [{url, title}, ...], type: "summary"|"learn"|""}` 返回 `{results: {dedup_key: {id, content, ...}}, missing: [{url, title, dedup_key}]}` - 日报生成 prompt 更新:告诉 hermes 子进程先调 check-summaries 查已有摘要 **articles.html** - 页面加载后自动调用 check-summaries 批量查询缓存状态 - 已有摘要 → 按钮变灰 "✅ 已有摘要" - 已学习 → 按钮变灰 "✅ 已学习" - 点击已缓存文章弹窗提示无需重新生成 - 顶栏显示统计 "共 N 篇(已有摘要 X / 已学习 Y)" ## 二、群日报引用已有摘要 (B) ### 问题 生成群日报时,群里的所有文章都会重新抓取摘要, 即使之前在文章列表已经生成过。 ### 改动 **app.py** — 日报生成 prompt (api_report_generate) - 步骤 3 改为:先收集所有 URL → 调 check-summaries 批量查 → 已有摘要直接引用 → 只对新文章做摘要 → 新摘要通过 summarize API 写回 daily_reports 供下次复用 **wechat-group-digest skill** - 新增 Article Summary Reuse API 文档 - Digest Pipeline 步骤 3 更新为摘要复用流程 ## 三、图片原图查看 ### 问题 聊天页面的图片只显示缩略图(`th_` 2-12KB), 点击放大还是缩略图,看不清。 ### 发现 微信在 `image2/XX/YY/.jpg` 缓存了原图(56-123KB), 和缩略图 `th_` 在同一个目录下,但 `_resolve_image_path` 没有搜索 `.jpg` 扩展名。 ### 改动 **app.py** — `_resolve_image_path` - 优先搜索 `.jpg` → `.png` → ``(无扩展名) → `th_` - 找到原图则返回原图路径,找不到才回退缩略图 **chat.html** - 图片缩略图仍用 `/media/image`(自动选原图如果存在) - 点击弹窗改用 `/media/image/full`(显式请求最佳版本) ## 四、其他修复 - `app.py` 完全重建(因 patch 操作导致 f-string 语法错误 + 文件截断) - 清理了 `/api/articles/generate-image` 破损路由 - `local_db.py` 重建(修复 ALTER TABLE + 多行字符串断裂) - 移除 `_su_stat` 未使用的导入 ## 备份文件 | 文件 | 路径 | |------|------| | app.py | ~/backup/2026-07-08/app.py | | local_db.py | ~/backup/2026-07-08/local_db.py | | articles.html | ~/backup/2026-07-08/articles.html | | chat.html | ~/backup/2026-07-08/chat.html | | config.py | ~/backup/2026-07-08/config.py | | wechat_db.py | ~/backup/2026-07-08/wechat_db.py | | restart.sh | ~/backup/2026-07-08/restart.sh | | wechat-group-digest skill | ~/backup/2026-07-08/skills/wechat-group-digest.md | | wechat-web-viewer skill | ~/backup/2026-07-08/skills/wechat-web-viewer.md |