docs(tasks): order evidence before attempt events

This commit is contained in:
QiuSW
2026-08-04 22:41:59 +08:00
parent cd47d0c959
commit 8092431208
4 changed files with 64 additions and 44 deletions
+12 -8
View File
@@ -2,17 +2,17 @@
id: T-210
title: 扩展闸门二与闸门三证据类型
phase: 2
deps: [T-107, T-205]
deps: [T-107, T-204, T-302]
status: TODO
created: 2026-08-04
vikunja_task_id: 43
context_ref: 772e379
context_ref: cd47d0c
work_branch: task/t-210-gate-evidence-kinds
needs_device: false
needs_human_review: false
write_paths:
- docs/tasks/T-210.md
- admin/migrations/00007_gate_evidence_kinds.sql
- admin/migrations/00006_gate_evidence_kinds.sql
- admin/internal/migrations/migrations_test.go
- admin/internal/evidence/**
- admin/internal/storage/evidence/**
@@ -22,7 +22,7 @@ write_paths:
- docs/06-tasks.md
---
<!-- BEGIN VIKUNJA EXPORT id=43 synced=2026-08-04T14:08:48Z sha256=d6e95fa22d1c417c3546f7dbf06a2868def55b63fe9d1f8096ed83f86f28ac2c -->
<!-- BEGIN VIKUNJA EXPORT id=43 synced=2026-08-04T14:39:13Z sha256=db95cfcdb109c264b188336cbf1625411d3457baf8525532613aac7e7487c3fd -->
## 问题 / 背景
T-204 当前数据库和 API 只允许 SKU_PANEL_GATE_1;T-107 将以真机证据批准闸门二规格面板和闸门三确认页截图。T-210 在不改变上传身份、大小、隐私或幂等边界的前提下,安全扩展两个固定证据类型,为 T-305 提供完整三闸门审计。
@@ -30,15 +30,15 @@ T-204 当前数据库和 API 只允许 SKU_PANEL_GATE_1;T-107 将以真机证
## 关联需求与交互
- 功能:F-007、F-013、F-017 的证据部分。
- 依赖:T-107、T-205;T-204/T-302 由 T-205 传递。
- 后续消费者:T-305、T-208。
- 依赖:T-107、T-204、T-302。
- 后续消费者:T-205、T-305、T-208。
- 只修改采购服务证据 schema/validation,不修改 client 或页面判据。
## 方案
1. 新增 00007 迁移,把 evidence kind 白名单精确扩展为 SKU_PANEL_GATE_1、SKU_PANEL_GATE_2、ORDER_CONFIRM_GATE_3;保留所有旧 gate1 资产和审计身份,不把 kind 变成任意字符串。
1. 新增 00006 迁移,把 evidence kind 白名单精确扩展为 SKU_PANEL_GATE_1、SKU_PANEL_GATE_2、ORDER_CONFIRM_GATE_3;保留所有旧 gate1 资产和审计身份,不把 kind 变成任意字符串。
2. SQLite 表重建/约束迁移必须在事务内保持 foreign_keys=ON,迁移后运行 foreign_key_check;保留 T-302 claim ownership trigger、唯一键、索引、已有外键和所有列约束。不得通过关闭 FK 或丢弃历史行绕过。
3. 降级只在没有 gate2/gate3 资产及其事件引用时允许;存在新事实必须原子拒绝,不能静默把新 kind 改名为 gate1 或删除记录。
3. 降级只在没有 gate2/gate3 资产时允许;存在新事实必须原子拒绝,不能静默把新 kind 改名为 gate1 或删除记录。
4. 领域白名单、multipart handler、store 与返回 DTO 只增加这两个常量;设备认证仍先于 Content-Type/body,首次写入仍要求当前设备未关闭 claim,closed claim 只允许旧 key replay。
5. 三个 kind 均只接受单个显式 INTERNAL_RAW PNG,沿用 10 MiB、像素、SHA-256、原子文件发布、固定字段和不上传 XML/path 的边界。
6. kind 与页面事实固定映射:Gate1/Gate2 只能规格面板,Gate3 只能订单确认页。服务端不解析图片或推断页面;真实性由 T-107/T-305 事件顺序和人工验收保证。
@@ -57,6 +57,10 @@ T-204 当前数据库和 API 只允许 SKU_PANEL_GATE_1;T-107 将以真机证
### 2026-08-04T14:06:35Z · ila
2026-08-04 从 T-305 拆出服务端证据类型扩展:只在 T-107 取证批准后增加固定 Gate2/Gate3 kind,保留 Gate1 与 T-302 ownership/replay 边界;不让 T-306 或 dry-run 临时改 schema。
### 2026-08-04T14:39:05Z · ila
2026-08-04 依赖审计反转 T-210/T-205:三种 evidence kind 必须先进入真实 SQLite schema,T-205 才能对 Gate1/2/3 成功事件做真实正向与错 kind/跨归属测试。T-210 改为 00006,依赖 T-107/T-204/T-302。
<!-- END VIKUNJA EXPORT -->
## 边界