feat(t214): persist candidate observation identities

This commit is contained in:
QiuSW
2026-07-28 12:21:55 +08:00
parent acd3c85b5b
commit 56e7a2be33
29 changed files with 622 additions and 94 deletions
+18 -8
View File
@@ -5,13 +5,14 @@ phase: 2
deps:
- T-208
- T-213
status: DOING
status: DONE
created: 2026-07-28
context_ref: e7f4c3e
work_branch: null
write_paths:
- docs/tasks/T-214.md
- docs/00-ai-start-here.md
- docs/03-tech-stack.md
- docs/04-architecture.md
- docs/06-tasks.md
- docs/api.md
@@ -71,13 +72,13 @@ T-208 已能保存原始候选 observation 和人工结论,但 Admin 与后续
## 验收要点
- [ ] v7 migration `up/down/up` 可重复;有 identity 数据时破坏性 down 失败。
- [ ] App 回传全部 observation 的卡片/详情/双证据 SHA-256,不因模型拒绝而缺失。
- [ ] 后端拒绝格式错误、跨 execution、与 evidence 实际哈希不一致的指纹。
- [ ] 同一请求重放 candidate key 稳定,不同 observation key 不同。
- [ ] Admin API/Web 可按 candidate key 查看 observation、模型判断、人工结论和截图。
- [ ] 后端不会请求候选 URL;没有真实 URL 时保持空值而不是生成伪链接。
- [ ] Android/Go 测试、race、migration、Debug/Release 和根验证通过。
- [x] v7 migration `up/down/up` 可重复;有 identity 数据时破坏性 down 失败。
- [x] App 回传全部 observation 的卡片/详情/双证据 SHA-256,不因模型拒绝而缺失。
- [x] 后端拒绝格式错误、跨 execution、与 evidence 实际哈希不一致的指纹。
- [x] 同一请求重放 candidate key 稳定,不同 observation key 不同。
- [x] Admin API/Web 可按 candidate key 查看 observation、模型判断、人工结论和截图。
- [x] 后端不会请求候选 URL;没有真实 URL 时保持空值而不是生成伪链接。
- [x] Android/Go 测试、race、migration、Debug/Release 和根验证通过。
## 边界
@@ -91,3 +92,12 @@ T-208 已能保存原始候选 observation 和人工结论,但 Admin 与后续
- 2026-07-28:T-208 实现提交 `e7f4c3e` 后领取。确认当前 observation 已有可选
product/image URL 和受控 evidence,但 App 实际无法从拼多多无障碍树取得可信 URL,
因此冻结 execution-scoped candidate key 与多指纹方案。
- 2026-07-28:App manifest 升级到 v4,保存 best-effort 可见标题、卡片/详情语义
SHA-256 和详情/规格双截图哈希;候选出站固定提交两个不同的 evidence asset。
- 2026-07-28:后端 migration v7 增加 `candidate_observation_identities`,候选写入
同事务生成稳定 key,并按顺序核对两个 evidence 的实际哈希。Admin API/Web 已能
查看 identity、原始 observation、模型/人工结论和受控截图。
- 2026-07-28:`go test ./...`、`go test -race ./...`、`go vet ./...`,migration
CLI `up/down/up`,Android `test assembleDebug assembleRelease` 和根
`.\init.ps1` 全部通过。Debug APK `1.4.12 (17)` 已覆盖安装到 PKG110,采购无障碍
仍在启用列表。