feat(lab-sample): 实验室样本处理三表台账与部门字段 ACL
按造血/单个核/间充质聚合展示,部门员工只改本部门、主管可改全部,并支持筛选与 Excel 导出;同步纠正采集接受人串权与严格菜单守卫。
This commit is contained in:
1 parent
58b252ce6b
commit
5fe1193a2c
22 files changed
+2136
-5
No files matched your search
@@ -0,0 +1,2 @@
|
||||
schema: spec-driven
|
||||
created: 2026-11-12
|
||||
@@ -0,0 +1,23 @@
|
||||
## Context
|
||||
|
||||
附件三张表字段覆盖市场采集信息、实验室接收/处理与质检结果。系统内对应源主要为:
|
||||
|
||||
- 市场:`biz_protocol_party_customer`、`biz_protocol_collection_info`、`biz_collection_hospital`、`biz_protocol_sample`
|
||||
- 生产/接收:`biz_sample_reception`、`biz_sample_production_reception`
|
||||
- 质检:生产接收传染四项、储存证质检 payload、检查项结果;缺口进补充表
|
||||
|
||||
## Decisions
|
||||
|
||||
1. **数据集**:`hsc`(造血)、`ubmc`(单个核)、`msc`(脐带间充质),以样本类型名 / 编码前缀识别。
|
||||
2. **权限码**:
|
||||
- 列表:`lab:sample-processing:list`(三子页共用读)
|
||||
- 部门编辑:`lab:sample-processing:market:edit` / `production:edit` / `qc:edit`
|
||||
- 主管:`lab:sample-processing:manager`(可编辑全部部门字段)
|
||||
3. **读写**:列表聚合只读源表 + 补充 JSON;更新时按字段 `source` 回写源表或补充表,服务端强制部门 ACL。
|
||||
4. **UI**:P01 列表 + 筛选 + 导出;行内编辑弹窗按部门分区,无权字段只读。
|
||||
5. **Figma**:MCP 授权不可用,按现有 Fresh Mint 列表页实现;合入后用户做视觉验收。
|
||||
|
||||
## Risks
|
||||
|
||||
- 历史 Excel 手工列与系统字段不完全一一对应,未映射列落补充表,避免阻断上线。
|
||||
- 菜单种子不自动授权角色,需管理员分配。
|
||||
@@ -0,0 +1,27 @@
|
||||
## Why
|
||||
|
||||
2026-11-04 需求会议要求按线上三张实验室样本处理表(造血干细胞 / 单个核 / 脐带间充质)在系统中单独建模块,按市场、生产、质检拆分可编辑字段,支持筛选与导出。现有业务数据分散在协议、样本接收、生产接收与质检等表,缺少统一台账视图。
|
||||
|
||||
## What Changes
|
||||
|
||||
- 新增 Web 一级模块「实验室样本处理数据」,下挂三个子模块对应三张表。
|
||||
- 按样本编码从现有业务表聚合展示全字段;部门员工可读全部、只写本部门字段;主管可写全部部门字段。
|
||||
- 支持关键词/时间筛选与 Excel 导出。
|
||||
- 无法直接回写源表的字段写入补充表 `biz_lab_sample_processing_extra`。
|
||||
|
||||
## Capabilities
|
||||
|
||||
### New Capabilities
|
||||
|
||||
- `lab-sample-processing-data`: 实验室样本处理数据聚合台账、部门字段 ACL、筛选导出
|
||||
|
||||
### Modified Capabilities
|
||||
|
||||
- (无)
|
||||
|
||||
## Impact
|
||||
|
||||
- **backend**:聚合服务、API、补充表、菜单权限
|
||||
- **web-admin**:三子模块列表页、编辑弹窗、导出
|
||||
- **docs/sql**:结构 + 菜单种子
|
||||
- **不改** mobile-h5 / mobile-oa-h5
|
||||
@@ -0,0 +1,33 @@
|
||||
## ADDED Requirements
|
||||
|
||||
### Requirement: 三子模块台账
|
||||
|
||||
系统 SHALL 提供「实验室样本处理数据」模块,包含造血干细胞、单个核、脐带间充质三个子模块;每个子模块按样本展示该表全部约定字段。
|
||||
|
||||
#### Scenario: 按数据集查询
|
||||
|
||||
- **WHEN** 用户打开造血干细胞子模块并具备列表权限
|
||||
- **THEN** 系统仅返回造血干细胞数据集样本行,并包含市场/生产/质检字段聚合结果
|
||||
|
||||
### Requirement: 部门字段编辑权限
|
||||
|
||||
系统 SHALL 允许具备列表权限的用户查看全部字段;普通员工仅可编辑本部门字段;具备主管权限的用户可编辑全部部门字段。服务端 MUST 拒绝无权字段写入。
|
||||
|
||||
#### Scenario: 生产员工改市场字段被拒
|
||||
|
||||
- **WHEN** 仅有生产编辑权限的用户提交市场部门字段变更
|
||||
- **THEN** 系统拒绝该请求且不持久化无权字段
|
||||
|
||||
#### Scenario: 主管可改全部
|
||||
|
||||
- **WHEN** 具备主管权限的用户提交跨部门字段变更
|
||||
- **THEN** 系统接受并回写对应数据源或补充表
|
||||
|
||||
### Requirement: 筛选与导出
|
||||
|
||||
系统 SHALL 支持按样本编码、姓名关键词及接收/采集时间范围筛选,并导出当前筛选结果为 Excel。
|
||||
|
||||
#### Scenario: 导出当前筛选
|
||||
|
||||
- **WHEN** 用户在筛选条件下点击导出
|
||||
- **THEN** 下载的表格列与当前子模块字段目录一致,行集与列表筛选一致
|
||||
@@ -0,0 +1,21 @@
|
||||
## 1. 规格与数据
|
||||
|
||||
- [x] 1.1 建立 OpenSpec 变更与字段/权限设计
|
||||
- [x] 1.2 定义三数据集字段目录与部门归属、回写源
|
||||
|
||||
## 2. 后端
|
||||
|
||||
- [x] 2.1 补充表模型与迁移 SQL、菜单种子
|
||||
- [x] 2.2 聚合列表 / 详情 / 更新 / 导出 API 与部门 ACL
|
||||
- [x] 2.3 单元测试:数据集识别、字段 ACL、无权拒绝
|
||||
|
||||
## 3. 前端
|
||||
|
||||
- [x] 3.1 共享列表页组件(筛选、编辑、导出)
|
||||
- [x] 3.2 三子模块路由与菜单码
|
||||
- [x] 3.3 API 客户端
|
||||
|
||||
## 4. 验证
|
||||
|
||||
- [x] 4.1 受影响单元测试
|
||||
- [ ] 4.2 字段一致性/菜单说明回写工单(凭据就绪后)
|
||||
Reference in new issue
Block a user