# 工单/任务编辑与生产结论 — 设计文档 > 日期: 2026-05-24 > 状态: 已实现(2026-05-24) > 范围: 质检工单、生产工单、生产任务(web-admin + backend) ## 1. 背景 在工单融合(`work_order_type`: inbound / temporary)之后,列表侧缺少对**备注**与**生产任务结论**的维护入口。本变更补齐编辑能力,并复用既有 API/组件,控制改动面。 ## 2. 已确认的产品决策 | 问题 | 决策 | |------|------| | 入库工单编辑备注:已完成状态是否可改? | **可以**(任意工单状态均可改备注) | | 临时生产工单「编辑信息」范围? | **仅备注** | | 生产任务结论「失败」是否触发业务副作用? | **不触发**;v1 仅结果存储 | | 结论字段编码? | **拼音缩写**存库;界面展示**中文** | | 生产任务列表:已完成任务是否可编辑基础信息? | **不需要**(已完成任务不展示「编辑」) | ## 3. 功能清单 ### 3.1 质检工单 — 入库 Tab - 列表操作列增加 **「编辑」**(`EditPen`)。 - 弹窗字段:**仅备注**(`textarea`,max 512)。 - 任意 `work_order_status`(含 `ywc`)可保存。 - 与临时 Tab 的「编辑」(细胞产品 + 备注)区分:入库仅走备注弹窗。 ### 3.2 生产工单 — 入库 Tab - 列表增加 **「编辑」** → 仅备注弹窗(同上)。 - 任意工单状态可改备注。 ### 3.3 生产工单 — 临时 Tab - 列表增加 **「编辑」** → 仅备注弹窗(与入库共用交互)。 - 不包含改任务名称/工艺路线(任务级能力保留在「派发任务」「编辑任务」)。 ### 3.4 生产任务 — 列表 - 列表增加 **「编辑」** → 复用 `EditTaskInfoDialog`(`taskName` / `description` / `remark`)。 - **显示条件**:`task_status` 为 `dpz` 或 `jxz`;`ywc` **不展示**编辑按钮。 - 后端可对 `ywc` 拒绝更新(双保险,可选)。 ### 3.5 生产任务 — 完成任务结论 - 入口:任务执行弹窗 `TaskExecutionDialog` →「完成任务」。 - 流程:现有 I/O 校验通过 → 弹出**结论弹窗**(非简单 `confirm`)→ 提交完成。 - 结论(必填): - 存库:`cg` = 成功,`sb` = 失败 - 展示:成功 / 失败;Tag:`success` / `danger` - 可选备注(`textarea`)。 - v1:**不**改变细胞产品入库、工单状态同步、通知等既有逻辑;仅写入 `conclusion`(及可选 `remark`)并置 `task_status=ywc`。 ## 4. 数据模型 ### 4.1 已有字段(无需 DDL) - `biz_qc_work_order.remark` - `biz_production_work_order.remark` - `biz_production_task.remark` / `task_name` / `description` ### 4.2 新增字段 ```sql ALTER TABLE biz_production_task ADD COLUMN conclusion VARCHAR(16) NULL COMMENT '生产结论 cg=成功 sb=失败' AFTER completed_time; ``` - 迁移脚本:`docs/sql/production_task_conclusion.sql` - 全量基线:同步 `docs/sql/zkxw.sql` ### 4.3 结论枚举 | 编码 | 中文标签 | Tag type | |------|----------|----------| | `cg` | 成功 | `success` | | `sb` | 失败 | `danger` | ## 5. API 设计 ### 5.1 质检工单 `PUT /web/admin/qc-work-orders/{id}` **现状**:仅 `temporary` 可更新(`update_temp_qc_work_order`)。 **调整**: - `inbound`:仅接受 `remark`(忽略 `cellProductId`)。 - `temporary`:保持 `cellProductId` + `remark`。 - 不校验工单是否已完成(备注始终可改)。 ### 5.2 生产工单 `PUT /web/admin/production-work-orders/{id}`(新增) - Body:`{ remark?: string }` - 入库/临时均可更新备注;任意 `work_order_status`。 - CRUD:`update_production_work_order(db, wo_id, tenant_no, user_id, remark=...)` ### 5.3 生产任务 `PUT /web/admin/production-tasks/{id}/status` **扩展 Body**(完成时): ```json { "taskStatus": "ywc", "conclusion": "cg", "remark": "可选" } ``` - `taskStatus=ywc` 时 **`conclusion` 必填**,且必须为 `cg` | `sb`。 - `remark` 可选;若传入则更新任务 `remark`(与完成备注合并策略:写入 `remark` 字段)。 - `jxz` / `dpz` 状态变更逻辑不变。 ### 5.4 列表/详情响应 - `biz_production_task` 序列化增加:`conclusion`、`conclusionLabel`(后端映射中文)。 ## 6. 前端设计 ### 6.1 共用组件(建议) `components/business/work-order-remark-dialog/index.vue`(可选抽取) - Props:`visible`, `title`, `initialRemark`, `loading` - Emit:`submit(remark)`, `update:visible` - 规范:`dialog-form-layout`、`label-position="top"`、底栏 Close/Check 若不抽取,各页内联单字段弹窗亦可(最小 diff)。 ### 6.2 页面改动 | 页面 | 文件 | 改动 | |------|------|------| | 质检工单 | `views/quality-inspection/qc-work-order/index.vue` | 入库 Tab「编辑」+ 备注弹窗;`handleEditRemark` | | 生产工单 | `views/production/production-work-order/index.vue` | 入库/临时 Tab「编辑」+ 备注弹窗 | | 生产任务 | `views/production/production-task/index.vue` | `EditTaskInfoDialog`;`v-if` 非 `ywc` | | 任务执行 | `useTaskStepEditor.ts` + 新 `CompleteProductionTaskDialog.vue` | 完成前结论弹窗 | | API | `qc-work-order.ts`, `production-work-order.ts`, `production-task.ts` | 新增/扩展类型 | ### 6.3 生产任务列表(可选增强) - 增加列「生产结论」:`ywc` 行展示 `el-tag`;未完成显示 `—`。 ### 6.4 UI 规范 - 操作列 `fixed="right"`,宽度预留(质检约 +60px,生产工单约 +60px,生产任务约 +80px)。 - 结论 Tag 遵循 OpenSpec ui-conventions(状态/结论字段用 `el-tag`)。 ## 7. 权限 - 质检:沿用 `biz:qcWorkOrder:list`(现有 PUT)。 - 生产工单/任务:沿用 `require_admin_or_super_admin`。 ## 8. 不在本期范围 - 结论为 `sb` 时禁止产出、回滚库存、消息通知。 - 已完成生产任务的基础信息编辑。 - 质检任务完成结论(已有 `tg`/`btg` 流程,不改动)。 ## 9. 实施顺序 1. DDL + Model `BizProductionTask.conclusion` 2. 后端:QC 工单 PUT 扩展、生产工单 PUT 新增、完成任务 conclusion 校验 3. 前端 API 类型 4. 质检/生产工单备注编辑 UI 5. 生产任务列表编辑(非 ywc) 6. 完成任务结论弹窗 + 列表结论列(可选) 7. `scripts/check_field_consistency.py`(若扩展 schema) 8. `./scripts/update-graph.sh backend` + `frontend` ## 10. 验收要点 - [ ] 入库质检工单:任意状态可改备注并列表刷新 - [ ] 临时质检工单:原编辑(产品+备注)不受影响 - [ ] 入库/临时生产工单:任意状态可改备注 - [ ] 生产任务:`dpz`/`jxz` 可编辑基础信息;`ywc` 无编辑按钮 - [ ] 完成任务:必须选成功/失败;完成后详情/列表可见中文结论 - [ ] 失败结论不改变细胞产品/工单等下游行为