Files
zkxw/docs/superpowers/specs/2026-05-24-work-order-task-edit-design.md
T
2026-05-24 17:57:28 +08:00

6.7 KiB
Raw Blame History

工单/任务编辑与生产结论 — 设计文档

日期: 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 新增字段

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(完成时):

{
  "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 无编辑按钮
  • 完成任务:必须选成功/失败;完成后详情/列表可见中文结论
  • 失败结论不改变细胞产品/工单等下游行为