Explorar o código

docs: add production waste-output list design.

Capture the agreed read-only P01 list under Production Management (sibling to cleanroom garment), querying step outputs of type FQW without a new business table.

Co-authored-by: Cursor <cursoragent@cursor.com>
zlwu hai 2 meses
pai
achega
af337562ae

+ 158 - 0
docs/superpowers/specs/2026-08-18-production-waste-output-list-design.md

@@ -0,0 +1,158 @@
+# 生产废弃物管理(只读汇总列表)— 设计文档
+
+> 日期:2026-08-18  
+> 状态:已确认  
+> 范围:web-admin【生产管理】下新菜单【废弃物管理】+ 后端分页列表 API
+
+---
+
+## 1. 背景
+
+生产任务执行时,工艺步骤右侧「产出物」可登记类型为「有效物」或「废弃物」的行。业务需要在独立页面统一查看所有任务步骤中已登记的**废弃物**,便于日常核对;本期不做处置流程,也不在本页增删改。
+
+## 2. 已确认规则
+
+| 项 | 约定 |
+|----|------|
+| 菜单位置 | 【生产管理】下,与【洁净服管理】**同级**、紧挨洁净服 |
+| 页面能力 | **只读**汇总列表;本页不新增/编辑/删除 |
+| 数据纳入 | 产出类型为废弃物即列出;**名称、条码可为空**也展示 |
+| 筛选 | 关键字(产出名称 / 条码模糊)+ 登记时间范围 |
+| 实现路径 | **方案 1**:现查现列,不新建业务表;多表 JOIN 分页查询 |
+
+## 3. 非目标
+
+- 本页对废弃物的增删改
+- 独立「处置状态 / 出库」等新字段或新表
+- 工艺库 / 工艺路线模板中的废弃物配置行(只展示任务步骤真实登记的 `biz_production_task_step_output`)
+- 改变任务执行页产出物录入交互
+
+## 4. 数据来源
+
+```
+biz_production_task_step_output
+  ├─ output_type_id → biz_output_type
+  ├─ step_id → biz_production_task_step
+  │              └─ task_id → biz_production_task
+  │                             └─ work_order_id → biz_production_work_order
+  └─ create_time(列表「登记时间」)
+```
+
+**废弃物类型判定(按租户,不写死 UUID):**
+
+1. 优先:`biz_output_type.type_code = 'FQW'` 且 `del_flag=0`
+2. 兜底:`type_name = '废弃物'` 且 `del_flag=0`
+3. 若租户无此类主数据,列表为空(需在「工艺基础信息」维护产出类型)
+
+种子参考(zkxw 租户):`type_code=FQW` / `type_name=废弃物`;有效物为 `YXW`,**不得**出现在本列表。
+
+**与洁净服「废弃」无关:** 洁净服 `garment_status=yfq` 是服装状态,不进入本列表。
+
+## 5. 后端
+
+### 5.1 API
+
+`GET /web/admin/production-waste-outputs`(挂在现有 production 路由模块,具体 path 以落地为准,语义一致即可)
+
+| 参数 | 说明 |
+|------|------|
+| `page` / `pageSize` | 分页 |
+| `keyword` | 可选;模糊匹配 `output_name`、`output_barcode` |
+| `createTimeStart` / `createTimeEnd` | 可选;按产出行 `create_time` |
+
+### 5.2 查询约束
+
+- 当前用户 `tenant_no` 隔离;产出 / 类型 / 步骤 / 任务 / 工单均排除 `del_flag=1`
+- 应用与生产工单/任务列表一致的 **数据权限**(`apply_data_scope`)
+- 默认排序:`biz_production_task_step_output.create_time DESC`
+- **无**写接口(本期)
+
+### 5.3 列表行字段(camelCase)
+
+| 字段 | 说明 |
+|------|------|
+| `id` | 产出行 id |
+| `outputName` | 产出名称 |
+| `outputBarcode` | 条码 |
+| `remark` | 备注 |
+| `createTime` | 登记时间 |
+| `stepId` | 步骤 id |
+| `processName` | 工序/步骤名称 |
+| `taskId` | 任务 id |
+| `taskNo` | 任务号 |
+| `workOrderId` | 工单 id |
+| `workOrderNo` | 工单号 |
+| `sampleCode` | 样本编码(临时工单可空) |
+| `labStorageCode` | 可选;若 enrich 成本低可顺带返回,列表列可不展示 |
+
+## 6. 前端
+
+### 6.1 模式与路由
+
+- **UI 模式**:P01 标准列表(只读,无新增/编辑弹窗)
+- **参考页**:`/#/demo/unit`;同组视觉对齐 `production/cleanroom-garment`
+- **Hash**:`/#/production-group/production/waste-output`
+- **面板标题**:`废弃物列表`(写入 `App.vue` `panelTitleBarTextRules`)
+
+### 6.2 筛选
+
+- 关键字:产出名称、条码
+- 登记时间:起止,对应 `createTimeStart` / `createTimeEnd`
+
+### 6.3 表格列
+
+| 列 | 展示 |
+|----|------|
+| 产出名称 | 空 → `—` |
+| 条码 | 空 → `—` |
+| 工序/步骤 | `processName` |
+| 任务号 | `taskNo` |
+| 工单号 | `workOrderNo` |
+| 样本编码 | `sampleCode`,空 → `—` |
+| 备注 | `remark` |
+| 登记时间 | `createTime` |
+| 操作 | 「查看」:打开该任务【任务执行】弹窗(只读);无 `taskId` 或任务不可用时禁用/提示 |
+
+### 6.4 工具栏与空态
+
+- 无「新增」、无批量删除等写操作
+- 空态文案:`暂无废弃物登记`
+
+### 6.5 权限
+
+- 菜单码:`production:waste-output:list`
+- 仅列表访问;不配置本页 create/update/delete 按钮权限
+
+## 7. 菜单落地
+
+| 项 | 值 |
+|----|-----|
+| 父菜单 | 生产管理 `PRM00000000000000000000000000001` |
+| 建议 menu id | `95300000000000000000000000000001`(避开 950/952 等已用段) |
+| path | `waste-output` |
+| menuCode | `production:waste-output:list` |
+| 排序 | `order_num` 紧挨洁净服(略大于洁净服) |
+| SQL | `docs/sql/` 下幂等 INSERT + 角色授权脚本 |
+| 前端路由 | `web-admin/src/router/modules/sqxp.ts` |
+| 菜单镜像 | `backend/app/api/menu.py`(若工程仍维护静态镜像则同步) |
+
+## 8. 建议改动文件
+
+| 层 | 内容 |
+|----|------|
+| SQL | `docs/sql/alter_sys_menu_add_production_waste_output.sql`(或同等命名) |
+| Backend | production 相关 `crud` 列表函数、`api` 路由、必要时 schema |
+| Frontend | API 模块、`views/production/waste-output/index.vue`、`sqxp.ts`、`App.vue` 标题规则 |
+| 图谱 | 实现后按仓库约定更新 frontend/backend graphify |
+
+## 9. 验收
+
+1. 任务执行中登记废弃物后,本页刷新可见对应行(含空名称/空条码)。
+2. 关键字、登记时间筛选与分页正确;租户隔离正确;有效物不出现。
+3. 「查看」可打开对应任务执行(只读);任务不可用时有合理提示。
+4. 菜单出现在生产管理下、紧挨洁净服;无权限用户不可见。
+
+## 10. 风险与说明
+
+- 列表依赖多表 JOIN;数据量在生产任务产出量级下可接受。若后续要做处置状态,再评估冗余表(原方案 2),本期不做。
+- 租户未配置 FQW/废弃物类型时列表为空,属预期。