summary.md 3.52 KB

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_<hash> 2-12KB), 点击放大还是缩略图,看不清。

发现

微信在 image2/XX/YY/<hash>.jpg 缓存了原图(56-123KB), 和缩略图 th_<hash> 在同一个目录下,但 _resolve_image_path 没有搜索 .jpg 扩展名。

改动

app.py — _resolve_image_path

  • 优先搜索 <hash>.jpg → <hash>.png → <hash>(无扩展名) → th_<hash>
  • 找到原图则返回原图路径,找不到才回退缩略图

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