From 542b2283f4daf6a66bac41ef787d23312ba31985 Mon Sep 17 00:00:00 2001 From: QiuSW <105186638@qq.com> Date: Tue, 4 Aug 2026 21:42:15 +0800 Subject: [PATCH] docs(tasks): freeze T-303 evidence upload slot --- docs/tasks/T-303.md | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/docs/tasks/T-303.md b/docs/tasks/T-303.md index e611c1c..ebe5da6 100644 --- a/docs/tasks/T-303.md +++ b/docs/tasks/T-303.md @@ -28,7 +28,7 @@ write_paths: - docs/06-tasks.md --- - + ## 问题 / 背景 T-302 完成后,采购工具需要真实、安全、可恢复地领取/续租任务;T-204 已提供受控截图上传接口。但 client 当前只有真机能力和最小窗口,没有 HTTP 抽象、设备凭据存储或断网/重启幂等状态。T-303 建立 `HttpTaskSource`、窄 `HttpEvidenceSink` 与 Windows 本地恢复底座;事件/fail/fence/result 尚分别依赖 T-205/T-208,本任务不伪造完整 `HttpResultSink` 或占位请求。 @@ -70,6 +70,10 @@ T-302 完成后,采购工具需要真实、安全、可恢复地领取/续租 ### 2026-08-04T13:27:53Z · ila 2026-08-04 T-304 预研反向约束 T-303:localstate 必须提供唯一的原子 API 给 UI 使用,至少覆盖 profile 配置读写、同 profile 单实例 guard、recovery snapshot、polling session start/resume/stop、pending claim/active claim 查询与原 session_id+claim_request_id 恢复;T-304 不得另写 SQLite/DPAPI/mutex。profile 需承载 service_url/device_id+加密 token、adb_path、serial、transport、poll interval、failure threshold、request/step timeout。当前服务端没有 heartbeat,配置页不能拿 claim-next 做无副作用连接探测,只能显示“凭据已安全保存,将在领取时验证”。 + +### 2026-08-04T13:41:49Z · ila + +2026-08-04 T-306 预研反向收紧 T-303:localstate 必须按 (attempt_id, evidence_kind) 暴露唯一原子上传槽。首次 HTTP 前保存 upload_key、完整元数据、文件 identity/hash;结果不明只能恢复同一槽;成功后持久保留 AssetRef,重复调用返回原结果,不能清 pending 后生成新 key 或上传第二张。T-306 不得另建 SQLite。 ## 边界 @@ -89,6 +93,9 @@ T-302 完成后,采购工具需要真实、安全、可恢复地领取/续租 会产生 EMPTY 幂等事实甚至领取任务;配置页只能说明凭据将在真实领取时验证。 - EvidenceSink 只传调用方显式给出的单个 PNG 和 T-204 固定字段;不得枚举目录、读取或上传 XML、 manifest、本机路径、外部支付页或支付凭据,不得自行向 multipart 增加 claim token/session 字段。 +- Localstate 必须按 `(attempt_id, evidence_kind)` 提供唯一、原子的上传槽:首次 HTTP 前持久化 upload key、 + 完整元数据、文件身份和 hash;结果不明只能恢复同一槽,同一槽成功后继续保留服务端 AssetRef,后续 + 调用只能返回该结果,不能清掉 pending 后生成新 key 或上传第二张。T-306 不得另建 SQLite 绕过它。 - 本任务不修改 `app.py` 或实现配置/轮询 UI,不连接真机,不导入 PDD 点击能力。T-304 负责桌面交互, T-306 负责把真实截图接入 sink。 - 不伪造尚不存在的 event/fail/fence/result HTTP,不提供假 `HttpResultSink`,不实现或引用