feat(admin): add routed task evidence details
This commit is contained in:
@@ -246,6 +246,27 @@ CREATE TABLE order_submissions (
|
||||
UNIQUE (authorization_id),
|
||||
UNIQUE (attempt_id)
|
||||
);
|
||||
|
||||
-- INTERNAL_RAW 原始截图;原文件名和客户端路径不进入数据库
|
||||
CREATE TABLE evidence_assets (
|
||||
id TEXT PRIMARY KEY,
|
||||
upload_key TEXT NOT NULL,
|
||||
task_id TEXT NOT NULL,
|
||||
attempt_id TEXT NOT NULL,
|
||||
kind TEXT NOT NULL, -- T-204 仅 SKU_PANEL_GATE_1
|
||||
privacy_tier TEXT NOT NULL, -- 仅 INTERNAL_RAW
|
||||
sha256 TEXT NOT NULL, -- 64 位小写十六进制
|
||||
byte_size INTEGER NOT NULL,
|
||||
content_type TEXT NOT NULL, -- 仅 image/png
|
||||
width_px INTEGER NOT NULL,
|
||||
height_px INTEGER NOT NULL,
|
||||
storage_key TEXT NOT NULL, -- 由 SHA-256 唯一派生
|
||||
uploaded_by_device_id TEXT NOT NULL,
|
||||
captured_at TEXT NOT NULL,
|
||||
created_at TEXT NOT NULL,
|
||||
UNIQUE (uploaded_by_device_id, upload_key),
|
||||
FOREIGN KEY (task_id, attempt_id) REFERENCES purchase_attempts(task_id, id)
|
||||
);
|
||||
```
|
||||
|
||||
MVP 不再用 `spec_trials` 作为审批记录,也不存在 `authorized_unit_price`。实际读价属于
|
||||
@@ -306,6 +327,19 @@ DRAFT / PENDING / NEEDS_MANUAL ─管理员取消(围栏前)→ CANCELED
|
||||
截图上传器只能接收调用方显式指定的截图,不能枚举证据目录或顺带上传 XML/manifest。证据响应
|
||||
使用 `Cache-Control: no-store`,不能暴露为免登录静态目录。
|
||||
|
||||
内部截图存储采用以下固定边界:
|
||||
|
||||
- 单个 PNG 最大 10 MiB、单边最大 8192 px、总像素最大 16,777,216;同时验证 multipart MIME、
|
||||
PNG 魔数、完整解码、字节数、尺寸和调用方声明的 SHA-256。
|
||||
- 上传 handler 必须先通过设备认证,再解析 Content-Type 或读取 body。T-301 前生产认证器固定拒绝,
|
||||
不创建临时 token,也不把管理员 session 当设备身份。
|
||||
- 文件写入显式配置的私有证据根目录:同目录随机临时文件 → 流式 hash → 校验 → `fsync` → 原子
|
||||
rename 到 SHA-256 内容地址 → 最后事务写数据库。数据库永远不指向半文件或缺失文件。
|
||||
- SQLite 与文件系统不能组成跨资源事务;极端故障最多留下不可达孤儿文件。不得为清理孤儿而删除
|
||||
可能被其他资产记录并发复用的内容文件,自动保留/删除策略留给部署任务。
|
||||
- SHA-256 只用于物理内容寻址,不是业务资产唯一键;不同合法证据可以引用相同内容。同设备主体与
|
||||
`upload_key` 同载荷重放原资产,任一规范字段变化即冲突。
|
||||
|
||||
## 六、关键技术难点
|
||||
|
||||
| 难点 | 风险 | 应对 |
|
||||
|
||||
Reference in New Issue
Block a user