已完成采集任务在后续重新采集失败后,会产生待发送的 task_failure。此时如果手工“重新上报”旧的 collect_result,通用的 mark_outbox_sent() 会无条件把任务主状态改回 succeeded,形成以下矛盾:
task_failure
collect_result
mark_outbox_sent()
succeeded
现场记录 COL-3dec8b1e10f28954 已复现:旧结果已发送,最新 task_failure 为 pending。
COL-3dec8b1e10f28954
pending
client/src/task_repository.py
client/src/pdd_ui_event.py
docs/client/03-data-model.md
docs/client/05-ui-specification.md
client/test/test_task_repository.py
client/test/test_pdd_ui_event.py
从 client/ 目录执行:
client/
C:/Python310/python.exe -m unittest discover -s test -p "test_task_repository.py" C:/Python310/python.exe -m unittest discover -s test -p "test_pdd_ui_event.py" C:/Python310/python.exe -m unittest discover -s test -p "test_*.py"
使用临时 SQLite 构造“旧结果已发送 → 新执行失败未上报 → 手工重新上报”的时间线,核对任务状态、事件选择和幂等键。真实 Admin 联调单独记录,不操作手机。
attempt_id
task_runs
已完成以下修复:
submit_result
submit_failure
Ran 235 tests in 9.777s
OK
最初从仓库根目录执行模块测试时因项目 src 导入路径不成立而未加载测试,已把工单验证命令更正为从 client/ 目录执行;正确命令均通过。
src
077cba6
fix: 修复重新上报任务状态不一致 (#91)
3bfaf44
docs: 归档任务 #91
docs/task/91-修复重新上报任务状态不一致.md
升级并重启 Client 后:
现场数据库没有由开发过程直接修改。工单保持开启,#1、#2 清单保持未完成,等待用户验收。
用户已于 2026-08-11 明确验收通过。
eca9289
No dependencies set.
The note is not visible to the blocked user.
基本信息
要解决什么
已完成采集任务在后续重新采集失败后,会产生待发送的
task_failure。此时如果手工“重新上报”旧的collect_result,通用的mark_outbox_sent()会无条件把任务主状态改回succeeded,形成以下矛盾:现场记录
COL-3dec8b1e10f28954已复现:旧结果已发送,最新task_failure为pending。做什么 / 不做什么
task_failure;没有未发送事件时才重发最新结果。怎么做
client/src/task_repository.py中区分“首次结果提交成功”和“历史事件重新上报成功”的状态更新语义。client/src/pdd_ui_event.py中让重新上报 Worker 使用新的事件选择和完成方法。docs/client/03-data-model.md、docs/client/05-ui-specification.md中的稳定规则。client/test/test_task_repository.py、client/test/test_pdd_ui_event.py。验收标准
task_failure时,“重新上报”优先发送该失败事件。怎么验证
从
client/目录执行:使用临时 SQLite 构造“旧结果已发送 → 新执行失败未上报 → 手工重新上报”的时间线,核对任务状态、事件选择和幂等键。真实 Admin 联调单独记录,不操作手机。
风险和回退
attempt_id与最新task_runs。实施完成,等待用户验收
已完成以下修复:
task_failure。submit_result或submit_failure,复用原始负载和幂等键。attempt_id一致的事件才能更新任务状态。验证结果
Ran 235 tests in 9.777s,OKOK最初从仓库根目录执行模块测试时因项目
src导入路径不成立而未加载测试,已把工单验证命令更正为从client/目录执行;正确命令均通过。提交与归档
077cba6fix: 修复重新上报任务状态不一致 (#91)3bfaf44docs: 归档任务 #91docs/task/91-修复重新上报任务状态不一致.md现场验收
升级并重启 Client 后:
COL-3dec8b1e10f28954,点击“重新上报”。现场数据库没有由开发过程直接修改。工单保持开启,#1、#2 清单保持未完成,等待用户验收。
用户已于 2026-08-11 明确验收通过。
eca9289