日期: 2026-07-28
状态: 已确认
范围:biz_process_route+ 工艺库「路线图配置」+ 生产任务派发带入
关联: 派发任务任务级设备面板(TaskEquipmentPanel);历史步骤级设备设计见2026-06-15-process-equipment-link-design.md(本需求不改造步骤级 UI)
现状
biz_process / biz_process_route_step / biz_production_task / biz_production_task_step 的 equipment_ids + equipment_name;biz_process_route 尚无设备字段。派发克隆路线时只拷贝步骤及子表,不带设备到任务。目标
非目标
| 项 | 决策 |
|---|---|
| 设备挂载层级 | A. 路线级:整条路线一套默认设备 |
| 配置入口 | B. 「路线图配置」弹窗内单独「默认设备」虚拟块(对齐派发任务设备卡) |
| 实现方案 | 方案 1:biz_process_route 增加 equipment_ids / equipment_name;复用 TaskEquipmentPanel |
| 带入时机 | 创建生产任务且传入 routeId 时,一次性拷贝到 biz_production_task |
| 后续修改 | 改路线不影响已有任务;任务内改设备不回写路线 |
| 未配设备 / 未选路线 | 任务设备为空,可手选 |
| 复制路线 | 若后续/现有存在「复制路线」能力,须一并复制默认设备;当前仅有步骤复制则本需求不新增路线复制入口 |
biz_process_route 新增字段在业务字段区(建议 is_current 之后、tenant_no 之前)新增:
| 字段 | 类型 | 说明 |
|---|---|---|
equipment_ids |
VARCHAR(1000) NULL | 关联 biz_equipment.id,逗号分隔 |
equipment_name |
VARCHAR(1000) NULL | 设备名称快照,逗号分隔 |
与任务表 biz_production_task.equipment_ids / equipment_name 约定一致。
resolve_equipment_list_snapshot(db, equipment_ids, tenant_no),同时写入 ID 串与名称快照。equipment_ids、equipment_name 原样写入任务(创建时快照);任务侧后续再保存时仍走任务自己的快照解析。biz_process_route_step.equipment_*、任务步骤 equipment_* 本需求不读写、不展示。biz_equipment(设备主数据)
↑ 勾选引用
biz_process_route.equipment_ids / equipment_name(路线默认设备)
│ create_production_task(route_id=…)
↓
biz_production_task.equipment_ids / equipment_name(任务设备面板)
步骤克隆 _clone_route_to_task 仍只负责步骤与试剂/耗材/产出/采集子表;路线默认设备在创建任务主表时额外写入(可在 _clone_route_to_task 前后对 BizProductionTask 赋值,或抽小函数 _apply_route_default_equipment)。
| 接口 | 变更 |
|---|---|
GET /web/admin/process-routes |
列表项增加 equipmentIds(数组)、equipmentName(可选,展示用) |
GET /web/admin/process-routes/{id} |
详情(含路线头)返回同上 |
PUT /web/admin/process-routes/{id} |
ProcessRouteUpdateBody 增加可选 equipmentIds;有传则解析快照并更新 |
| 创建生产任务(现有派发 API) | 存在 route_id 时,将路线默认设备写入新任务 |
前端:fetchUpdateProcessRoute(id, { equipmentIds }) 即可;列表/详情类型补字段。
序列化建议与任务侧一致:equipmentIds 为 string[](parse_equipment_ids),equipmentName 为字符串。
对齐 DispatchTaskDialog 中间栏虚拟设备卡:
el-tag info「暂无」el-tag success「已选 N 台」TaskEquipmentPanel
equipmentOptions:与派发/任务编辑相同数据源(如 fetchAllEquipments 或任务编辑选项接口中的 equipments)PUT process-routes/{id} 写 equipmentIds;成功后刷新本地路线头状态与标签样式:复用已有 virtual-step-card / dispatch-equipment-card 等 class(或抽公共样式到 route-config),保持 Fresh Mint,勿引入小程序色值。
| 区域 | 文件 |
|---|---|
| SQL | docs/sql/ 下新增迁移(ALTER biz_process_route);视需要同步 zkxw.sql 表结构片段 |
| Model | backend/app/models/models.py → BizProcessRoute |
| Schema | backend/app/schemas/process_route.py → UpdateBody(及如有独立详情结构) |
| CRUD | backend/app/crud/process_route.py → _route_row_to_dict / update_route |
| CRUD | backend/app/crud/production_task.py → 创建任务带入路线默认设备 |
| API | backend/app/api/production.py → update route 传 equipment_ids |
| UI | web-admin/src/views/production/process/ProcessRouteTab.vue |
| 可选复用 | TaskEquipmentPanel.vue、equipment-select 工具 |
完成后执行 ./scripts/update-graph.sh backend 与 ./scripts/update-graph.sh frontend(或按实际改动项目)。