diff --git a/.workbuddy/memory/2026-10-22.md b/.workbuddy/memory/2026-10-22.md index 655a822..6461889 100644 --- a/.workbuddy/memory/2026-10-22.md +++ b/.workbuddy/memory/2026-10-22.md @@ -314,3 +314,17 @@ 全部读完的「没有未读提问了」提示 —— 三条行为都正确,`Location` 带 `from=admin&read=unread&sort=new`。 - 断言坑:页面上有 `/user/questions`(导航)和 `/user/questions?from=admin&…`(页脚返回)两个链接, 用 `re.search` 取第一个会误判「返回丢参数」。要按 href 全量匹配。 + +## 部署后复验:14/14 通过(含「日志重复」排障) + +- 复验结果:`answer?from=admin&read=unread&sort=new`(未被编码)、 + 回答并下一条 → 次早、页脚下一条 → 再下一条、读完后「没有未读提问了」、 + 下一条页「返回」= `/user/questions?from=admin&read=unread&sort=new`。数据已删净(0 条)。 +- 🔴 **日志「一直重复同一个操作」的真相:是自检脚本,不是站点。** + 两个原因叠加:① 补数据循环 `while len(ids) < 3` 没有上限、不校验 POST 结果; + ② 每轮发的**内容完全相同**,被 `shared.DuplicateGuard`(同 IP + 相同内容防刷屏, + `route/question/page.go:587`)拦下 —— 返回 200 + 错误提示但不落库,脚本没读提示于是无限重发。 + → 泛化教训:跑端到端脚本时,注入的文本必须逐条不同;循环必须有 attempts 上限 + 「未增长即停」。 +- `urllib` 偶发 `TimeoutError` 的根因是代理复用 stale keep-alive 连接:请求头加 + `Connection: close` 后不再出现,比加重试更有效。 +- 测试账号 `tbunread1022181904`(自建,密码不入库)。提问已全部删除,账号可留作后续自检。