This commit is contained in:
zlwu committed 2026-05-24 17:57:28 +08:00
1 parent 7cec1f2190
commit 13e4c9530a
85 files changed
+23079 -15736

No files matched your search

+5
View File
@@ -0,0 +1,5 @@
-- 生产任务:生产结论(cg=成功 sb=失败)
ALTER TABLE biz_production_task
ADD COLUMN conclusion VARCHAR(16) NULL
COMMENT '生产结论 cg=成功 sb=失败'
AFTER completed_time;
@@ -0,0 +1,181 @@
# 工单/任务编辑与生产结论 — 设计文档
> 日期: 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` 无编辑按钮
- [ ] 完成任务:必须选成功/失败;完成后详情/列表可见中文结论
- [ ] 失败结论不改变细胞产品/工单等下游行为