-
Notifications
You must be signed in to change notification settings - Fork 0
03 sample traceability design
github-actions[bot] edited this page Apr 1, 2026
·
1 revision
本文从 数据模型 说明样品从委托到留样/处置的追溯链路,并标注代码与页面位置。
文件:backend/apps/samples/models.py
| 模型 | 作用 |
|---|---|
SampleGroup |
组样(group_no) |
Sample |
单件样品(sample_no、blind_no 等) |
SampleDisposal |
处置记录(退还/销毁/丢弃等) |
Project(工程)
↓
Commission(委托单 commission_no)
↓
Sample(sample_no, commission_id)
├─ 可选 SampleGroup(组样)
└─ SampleDisposal(多条处置历史)
业务含义:
- 由
Sample.commission可追溯到 委托单 → 项目。 -
blind_no支持盲样管理(唯一约束允许 null)。 -
status:pending/testing/tested/retained/disposed/returned。
-
Sample.project:property,经commission.project访问。 -
is_overdue_retention:留样超期判断(status == retained且日期过线)。
路由模块:frontend/src/router/modules/samples.ts
| 路径 | permission |
|---|---|
/sample |
sample:list |
/sample/register |
sample:create |
/sample/:id |
sample:list |
视图:SampleList.vue、SampleRegister.vue、SampleDetail.vue(目录 frontend/src/views/samples/)。
API:frontend/src/api/samples.ts → backend/apps/samples/views.py。
委托评审通过 → 创建/关联样品
↓
检测中 status=testing → tested
↓
留样 retained + retention_deadline
↓
到期处置 → SampleDisposal 记录 → disposed / returned 等
| 风险 | 建议 |
|---|---|
| 编号唯一性冲突 | 依赖 DB 唯一约束;并发创建需重试策略 |
| 盲样泄露 | 权限控制 blind_no 可见范围(若需细化应扩展模型或字段级权限) |
| 追溯断裂 | 禁止硬删委托;使用软删或状态约束 |
删除样品或委托可能导致 级联删除(on_delete=CASCADE);生产应禁用硬删或改为软删策略(若后续迭代提供)。
backend/apps/samples/models.pybackend/apps/samples/views.pyfrontend/src/views/samples/frontend/src/api/samples.ts