docs: 记录 WO-18 running 排查结论

This commit is contained in:
meijiali
2026-07-03 17:40:02 +08:00
parent 4dc6878f45
commit f91d2272d8
+31
View File
@@ -1378,6 +1378,37 @@ Git 流程:
- 对“长时间无变化”的阈值,第一版是否使用 10 分钟作为提示阈值。
- 不存在的任务 ID 页面是否保留 404,还是跳回首页并显示提示。
完成记录:
- 完成日期:2026-07-03
- 相关 commit:本记录对应 WO-18 排查与运行环境恢复,代码侧未新增业务逻辑;当前源码中已有 `ensure_sqlite_schema_compat()``hydrate_task_progress()` 和启动恢复 running 任务逻辑。
- 核查任务 ID`d1107382-9343-4d8f-9f4f-a1232712bacb`
- 核查结论:
- `data/app.db` 中该任务记录不存在。
- 该任务对应热点、内容、评论、报告数量均为 0。
- 旧运行容器中的 `app.db` 模块缺少 `ensure_sqlite_schema_compat()`,说明浏览器访问的是旧镜像 / 旧代码。
-`data/app.db``tasks` 表缺少 `current_stage``last_progress_at` 字段,旧容器不会自动补齐。
- 点击该任务页和报告页出现 500 的直接错误是 `sqlite3.OperationalError: disk I/O error`
- 将当前 `app/` 代码同步到正在运行的容器并重启后,旧库已自动补齐 `current_stage``last_progress_at` 字段。
- 同步后 `/tasks/d1107382-9343-4d8f-9f4f-a1232712bacb` 返回 200,并显示失败状态“系统重启,任务被中断”,不再无限显示 running。
- 同步后 `/hotspots/914665b3-258d-417c-9e5d-f627acdfb99e/report` 返回 200。
- 验证命令:
- `docker ps --format 'table {{.Names}}\t{{.Image}}\t{{.Status}}\t{{.Ports}}'`
- `curl -i -s http://localhost:8000/health`
- `sqlite3 data/app.db ".schema tasks"`
- `sqlite3 data/app.db "SELECT ... FROM tasks WHERE id='d1107382-9343-4d8f-9f4f-a1232712bacb';"`
- `curl -i -s http://localhost:8000/tasks/d1107382-9343-4d8f-9f4f-a1232712bacb`
- `curl -i -s http://localhost:8000/hotspots/914665b3-258d-417c-9e5d-f627acdfb99e/report`
- 验收结论:
- WO-18 的主要根因是运行容器未加载当前代码,叠加旧 SQLite schema 和 SQLite I/O 异常。
- 当前本机服务已恢复到可访问状态,旧任务不再表现为无限 running。
- `tasks` 表已具备 `current_stage``last_progress_at` 字段。
- 遗留问题:
- `docker compose up -d --build` 因构建阶段下载 `uv` 网络卡住被中断,本轮采用 `docker cp app/. hot-comments-tool-app-1:/app/app/ && docker restart hot-comments-tool-app-1` 临时同步运行环境;后续 WO-15 部署前仍需完成一次正常镜像重建。
- 本机 `.venv` 缺少依赖,`uv run pytest ...` 因依赖下载卡住未完成;需要在网络恢复后补跑自动化测试。
- 页面仍显示长 UUID、内部错误枚举和页脚演示文案,这些归入 WO-16。
- 全站数据库异常友好兜底仍归入 WO-11 / WO-19,不在 WO-18 内混修。
### WO-19 Internal Network Error / 500 统一排查与前端错误提示
优先级:P0