feat: 补齐消毒、种源与二维码身份链
This commit is contained in:
@@ -1027,3 +1027,34 @@ MVP 沿用 IoTDB(现状);TDengine 作为生产规模化候选(先基准
|
||||
- 本任务前分支提交为 `a25bc7a`;回滚可还原 Task 9 提交;
|
||||
- 数据库回滚执行 `000005_detection_disease_events.down.sql`,可删除新表和关联列;已建立 `DiseaseEvent -> TraceRecord` 关联的数据会随回滚断开,回滚前需先备份;
|
||||
- Web 新页面回滚只需还原路由/菜单/页面文件,旧 LAMP 页面不受影响。
|
||||
|
||||
## 2026-08-14 整改 Task 10:补齐消毒、种源与二维码身份链
|
||||
|
||||
### 做了什么
|
||||
|
||||
- 新增 `seed_sources`、`disinfection_records`、`identity_links` 表及 `000006_biosecurity` 迁移;`batches` 增加 `seed_source_id`;
|
||||
- 新增 `biosecurity:read/write` 权限并接入 admin/operator/viewer/farmer 角色;
|
||||
- 种源链支持供应商、蚕种批号、检疫证号、入场时间、凭证 URL 和上链来源,创建/更新时检测循环引用;
|
||||
- 消毒记录支持计划/执行两类,必填药剂和浓度,记录计划时间、执行时间、执行人、复核人和照片 URL;
|
||||
- 二维码载荷只包含 `silk:v1:entityType:publicId:version`,通过 `identity_links` 映射到批次/蚕匾/样本;解析时校验实体存在、版本和权限;
|
||||
- 溯源初报新增生物安全证据汇总,种源或消毒缺失时返回 `missing` 和 `evidenceSufficient=false`;
|
||||
- Web 新增「生物安全」页面;小程序新增扫码与现场消毒执行页。
|
||||
|
||||
### 设计思路与决策依据
|
||||
|
||||
- 二维码不包含内部 ID、密码或个人信息,使用随机 `publicId` 和数据库映射,避免可猜测身份;
|
||||
- 种源链采用 `parent_id` 表达跨批次关系,并用循环检测阻止错误引用;
|
||||
- 消毒记录使用同一表承载计划和执行,执行记录可关联计划,便于现场录入和复核;
|
||||
- 当前项目还没有组织级 ACL,二维码解析先按实体存在性和 `biosecurity:read` RBAC 控制,组织/房间级对象授权仍待后续任务。
|
||||
|
||||
### 验证结果
|
||||
|
||||
- `scripts/verify.ps1` exit 0:Go test/vet/build、Web test/lint/build、小程序 typecheck/build、APP typecheck/lint、AI pytest 15/15 均通过;
|
||||
- 新增测试覆盖二维码篡改/版本解析、种源链循环/无环、消毒必填项;
|
||||
- 未部署开发服务器,未执行 `000006` 迁移;未做真实二维码打印与小程序扫码联调。
|
||||
|
||||
### 回滚点
|
||||
|
||||
- 本任务前分支提交为 `cc93c9a`;回滚可还原 Task 10 提交;
|
||||
- 数据库回滚执行 `000006_biosecurity.down.sql`,可删除种源、消毒、二维码映射表和 `batches.seed_source_id`;
|
||||
- 页面回滚需同时还原 Web 路由/菜单、小程序页面与设置入口,并移除 `biosecurity` 权限种子。
|
||||
|
||||
Reference in New Issue
Block a user