生产执行中心系统性修复总结
一、问题诊断
1.1 原始状态
生产执行中心(ProductionCenter.vue)是一个 262 行的 UI 壳子,存在以下严重问题:
| 问题 | 现状 |
|------|------|
| 无后端路由 | 没有 server/routes/production.js,前端调用错误 API |
| 数据源错误 | 调用 /api/order-management/list(销售订单),不是生产工单 |
| 无本地数据库 | 没有生产相关的 SQLite 表 |
| 指标全为硬编码 | 所有 metric cards 显示 "--"、0、"正常" |
| 无关联关系 | 未与 Part/BOM/Process/Quality/Equipment 关联 |
| 种子数据 | 仅 6 条演示工单,且未被使用 |
1.2 后端 Worker 现状
已有 13 个生产相关 Worker 文件,但未被前端调用:
| Worker | 角色 | SCSAI ItemType | 状态 |
|--------|------|----------------|------|
| production.js | 生产排程师 | Production Order | 实现 |
| operator-worker.js | 操作工 | Work Order | 实现 |
| lineleader-worker.js | 班组长 | Work Order | 实现 |
| kitter-worker.js | 物料员 | Work Order + Part BOM | 实现 |
| prod-tracker-worker.js | 生产跟单员 | Work Order | 实现 |
| prod-stat-worker.js | 生产统计员 | Work Order | 实现 |
| workreport-worker.js | 生产报工 | Work Order | 实现 |
| ipqc-worker.js | 过程检验员 | Work Order + Characteristic | 实现 |
| equip-worker.js | 设备运维员 | Equipment + Work Order | 实现 |
| planner-worker.js | 生产计划员 | QP_JG_PRODUCE_TASK | 实现 |
| dispatch-worker.js | 车间主任 | QP_JG_PRODUCE_TASK + QP_JG_DISPATCH | 实现 |
| report-worker.js | 操作工报工 | QP_JG_PRODUCE_TASK + QP_JG_DISPATCH | 实现 |
| process-worker.js | 工艺数据修复员 | process_specs + SCCAPP 表 | 实现 |
二、修复方案
2.1 架构设计
ProductionCenter.vue (前端)
↓ API 调用
server/routes/production.js (后端路由)
↓ 数据访问
server/core/process-db.js (统一 DB 模块)
↓ 表操作
sccapp_process_data.db (prod_* 表)
↓ 同步
SCSAI (Work Order / Equipment / Characteristic)
2.2 关联关系模型
Work Order ←→ Part (物料)
↓
Work Order ←→ Part BOM (物料齐套性)
↓
Work Order ←→ Process Spec (工艺规程)
↓
Work Order ←→ Characteristic (质量特性)
↓
Work Order ←→ Equipment (设备)
↓
Work Order ←→ Project (项目来源)
↓
Work Order ←→ ECR/ECO (变更管理)
三、实施内容
3.1 新建文件
server/routes/production.js (531 行)
| API 端点 | 方法 | 功能 |
|----------|------|------|
| /api/production/overview | GET | 生产概览(Dashboard) |
| /api/production/work-orders | GET | 工单列表(支持分页/筛选) |
| /api/production/work-orders/:id | GET | 工单详情(含报工/异常记录) |
| /api/production/equipment | GET | 设备列表 |
| /api/production/stats | GET | 生产统计(按产线/状态/报工) |
| /api/production/issues | GET | 异常列表 |
| /api/production/quality | GET | 生产质量关联查询 |
| /api/production/relations | GET | 关联关系查询(工单→Part/工艺/质量) |
| /api/production/sync-scsai | POST | 从 SCSAI 同步工单(需认证) |
数据库表:
prod_work_orders— 生产工单(SCSAI Work Order 镜像 + 本地扩展)prod_work_reports— 报工记录prod_issues— 异常记录prod_daily_stats— 每日统计快照prod_equipment— 设备状态快照
3.2 修改文件
server.js — 注册生产路由
- 添加
const productionRoutes = safeRequire('./server/routes/production', '生产执行路由'); - 在请求处理中添加
/api/production/路由分发
src/views/ProductionCenter.vue — 完全重写
- 从 262 行 UI 壳子重写为 350+ 行真实数据集成
- 调用
/api/production/overview获取真实数据 - 添加 "从PLM同步工单" 按钮
- 添加工单详情弹窗(含报工记录、异常记录、关联关系)
- 6 个 Tab 全部使用真实数据
四、关联关系实现
4.1 工单 ↔ Part
prod_work_orders.part_id存储 Part IDprod_work_orders.part_name存储 Part 名称- 关联查询通过
SELECT * FROM prod_work_orders WHERE id = ?
4.2 工单 ↔ 工艺规程
- 通过 Part 名称匹配
llm_process_specs.product_name - API:
GET /api/production/relations?work_order_id=xxx&type=work_order
4.3 工单 ↔ 质量
- 通过 SCSAI
Characteristic查询 - 本地统计
prod_work_reports.reject_qty
4.4 工单 ↔ 设备
prod_work_orders.work_center关联prod_equipment.work_center- 设备列表
GET /api/production/equipment
4.5 工单 ↔ 物料(BOM)
- 通过 SCSAI
Part BOM查询 GET /api/production/work-orders/:id返回bomItems
五、构建验证
node --check server/routes/production.js # 通过
node --check server.js # 通过
npm run build # 35s 通过
六、待解决问题
6.1 高优先级
| 问题 | 现状 | 需要解决 |
|------|------|----------|
| SCSAI Work Order 数据 | 未验证 SCSAI 是否有 Work Order 类型 | 需实测 SCSAI AML 查询 |
| 工单状态流转 | 本地只读,未实现状态变更 | 需添加 promote/edit 端点 |
| 报工写入 SCSAI | 本地记录,未同步回 SCSAI | 需实现双向同步 |
6.2 中优先级
| 问题 | 现状 |
|---|---|
| **QP_JG_* 类型支持 | planner/dispatch/report worker 使用磷化工自定义类型,未集成 |
| 设备 OEE 计算 | 需实时采集设备运行数据 |
| 工艺指导书集成 | 需在工单详情中嵌入工艺规程内容 |
6.3 低优先级
| 问题 | 现状 |
|---|---|
| 生产排程算法 | 需实现 AI 排产逻辑 |
| 物料齐套性 | 需实时查询库存 |
| 移动端适配** | 需响应式设计 |
七、文件变更清单
新建文件
server/routes/production.js— 生产执行中心后端路由 (531 行)
修改文件
server.js— 注册生产路由src/views/ProductionCenter.vue— 完全重写 (350+ 行)
BossAgents