Files
zkxw/openspec/changes/outbound-release-review/specs/outbound-release-review-api/spec.md
T
2026-05-27 05:23:28 +08:00

72 lines
4.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
## ADDED Requirements
### Requirement: 出库放行审核列表 API
系统 SHALL 提供 `GET /web/admin/pilot-release-reviews` 端点,返回分页的输注计划列表(附带出库放行审核状态)。列表 SHALL 基于 `biz_pilot_infusion_schedule` 构建,LEFT JOIN `biz_outbound_release_review` 获取审核结论。每个列表项 SHALL 包含:申请单号、患者姓名、输注计划编号、细胞类型、规格、输注时间、生产工单状态、质检工单状态、审核结论、审核时间。
#### Scenario: 查询全部输注计划审核状态
- **WHEN** 管理员请求 `GET /web/admin/pilot-release-reviews?page=1&page_size=20`
- **THEN** 系统返回分页列表,包含所有未删除的输注计划及其对应的审核状态
#### Scenario: 按审核结论筛选
- **WHEN** 管理员请求 `GET /web/admin/pilot-release-reviews?review_conclusion=tg`
- **THEN** 系统只返回审核结论为"通过"的输注计划
#### Scenario: 按关键词搜索
- **WHEN** 管理员请求 `GET /web/admin/pilot-release-reviews?keyword=ZSSQ202605260005`
- **THEN** 系统返回匹配申请单号或患者姓名的输注计划
### Requirement: 出库放行审核详情聚合 API
系统 SHALL 提供 `GET /web/admin/pilot-release-reviews/{schedule_id}/detail` 端点,返回指定输注计划的完整审核上下文。详情 SHALL 聚合以下 6 个信息域:
1. **申请单信息**:申请单号、申请单名称、渠道名称、状态
2. **患者信息**:姓名、性别、年龄、联系电话
3. **输注计划信息**:细胞类型、规格、输注时间、地点、方式、生产状态、质检状态、输注状态
4. **生产工单+任务信息**:工单号、状态、每个任务的投入/产出/工艺步骤及结论
5. **质检工单+任务信息**:工单号、状态、实验室/第三方项目、每个任务的检测结果及结论
6. **审核记录信息**:审核结论、备注、附件、审核人、审核时间
#### Scenario: 查看完整审核详情
- **WHEN** 管理员请求 `GET /web/admin/pilot-release-reviews/{schedule_id}/detail`
- **THEN** 系统返回包含上述 6 个信息域的完整聚合数据
#### Scenario: 输注计划无生产工单
- **WHEN** 输注计划尚未创建出库生产工单
- **THEN** 生产工单+任务信息域返回空数组
#### Scenario: 输注计划无质检工单
- **WHEN** 输注计划尚未创建出库质检工单
- **THEN** 质检工单+任务信息域返回空数组
### Requirement: 出库放行审核操作 API
系统 SHALL 提供 `PUT /web/admin/pilot-release-reviews/{schedule_id}/review` 端点用于单条审核,以及 `PUT /web/admin/pilot-release-reviews/batch-review` 用于批量审核。审核操作 SHALL 创建或更新 `biz_outbound_release_review` 记录,设置 `review_conclusion`(tg/btg)、`review_remark`、`review_attachments`、`reviewer_user_id`、`review_time`。审核时 SHALL 自动查找并填充 `production_work_order_id` 和 `qc_work_order_id`。
#### Scenario: 单条审核通过
- **WHEN** 管理员提交审核 `PUT /pilot-release-reviews/{schedule_id}/review` body=`{"review_conclusion":"tg","review_remark":"合格"}`
- **THEN** 系统创建或更新审核记录,设置结论为"通过"、备注、审核人、审核时间
#### Scenario: 单条审核不通过
- **WHEN** 管理员提交审核结论为"btg"
- **THEN** 系统记录"不通过"结论
#### Scenario: 批量审核
- **WHEN** 管理员提交 `PUT /pilot-release-reviews/batch-review` body=`{"schedule_ids":["id1","id2"],"review_conclusion":"tg","review_remark":"批量通过"}`
- **THEN** 系统为所有指定排程创建/更新审核记录
#### Scenario: 重复审核覆盖
- **WHEN** 输注计划已有审核记录,再次提交审核
- **THEN** 系统更新已有记录(覆盖审核结论、备注、附件、审核人、时间)
### Requirement: 审核记录关联工单
创建审核记录时,系统 SHALL 根据 `infusion_schedule_id` 自动查询关联的出库生产工单(`biz_production_work_order WHERE infusion_schedule_id=? AND work_order_type='outbound'`)和出库质检工单(`biz_qc_work_order WHERE infusion_schedule_id=? AND qc_biz_type='outbound'`),并将工单 ID 填充到 `production_work_order_id` 和 `qc_work_order_id` 字段。
#### Scenario: 自动关联生产工单
- **WHEN** 为某输注计划创建审核记录,且该计划存在 `work_order_type='outbound'` 的生产工单
- **THEN** 审核记录的 `production_work_order_id` 自动填充为该生产工单的 ID
#### Scenario: 自动关联质检工单
- **WHEN** 为某输注计划创建审核记录,且该计划存在 `qc_biz_type='outbound'` 的质检工单
- **THEN** 审核记录的 `qc_work_order_id` 自动填充为该质检工单的 ID
#### Scenario: 无关联工单
- **WHEN** 输注计划尚无出库生产或质检工单
- **THEN** 对应工单 ID 字段为空字符串