Files
zkxw/openspec/changes/spawn-temp-work-order-from-task/design.md
T
2026-07-13 12:11:13 +08:00

39 lines
1.4 KiB
Markdown

# 设计:从任务执行派发临时生产工单
## 流程
1. 用户在任务执行弹窗进入「产出(细胞产品)」。
2. 点击「派发临时工单」→ 校验原材料完整且已保存(`input` scope 无脏数据)。
3. 弹出「新增临时工单」弹窗(仅备注,与生产工单临时 Tab 一致)。
4. 确认 → 调用 `spawn-temporary-work-order` API 创建 LSSC 工单。
5. 打开 `DispatchTaskDialog`,用户填写任务名称/工艺路线并生成任务。
6. 任务创建成功 → 前端调用 `set_task_inputs` 写入 API 返回的 `inputItems`(仅原材料,不含产出)。
## 约束
- 来源任务须至少一条已持久化原材料,且每条具备 `inputType` 与编码/名称/id(**含临时生产工单来源任务**)。
- **SHALL NOT** 复制当前任务产出(细胞产品)。
- 按钮在只读下不展示(**已完成 `ywc` 任务除外:只读查看时仍展示派发**)。
## API
`POST /web/admin/production-tasks/{task_id}/spawn-temporary-work-order`
Body: `{ remark?: string }`
Response:
```json
{
"workOrder": { "id", "workOrderNo", "workOrderStatus", ... },
"sourceTaskId": "...",
"sourceTaskNo": "...",
"inputItems": [{ "inputType", "inputId", "inputCode", "inputName", "remark" }]
}
```
## UI
- 按钮:`btn-ghost` + `Position` 图标,文案「派发临时工单」,位于产出底栏「保存」左侧。
- 不可用时 `disabled` + tooltip 说明需先保存原材料。