质量数字员工重构 · SCSAI 直连验证报告

质量数字员工重构 · SCSAI 直连验证报告

验证日期:2026-08-01

范围:7 个质量数字员工(NCR / CAPA / AUDIT / QCC / SPC / STAT / FMEA)直连 SCSAI/SCSAI 真实 ItemType

结论:读路径 7/7 命中真实数据,写路径统一创建能力闭环验证通过,SCSAI 无脏数据残留

一、重构要点

全部 7 个质量员工已从「读本地 quality_* 影子表」改为直连 SCSAI 真实 ItemType,对齐 PPS 范本

server/services/pps-sync-service.jssendAML + _val 写法)。写统一走域无关的

CapabilityRuntime.create(类不存在先建类 + 业务对象查重),即系统「6 大基础能力」中的「创建」。

| 员工 | 直连 ItemType | 数据源标注 |

|------|---------------|-----------|

| NCR | NCR (QS) | SCSAI NCR (QS) |

| CAPA | Quality Corrective Action (QS) | SCSAI Quality Corrective Action (QS) |

| AUDIT | Audit (QS) | SCSAI Audit (QS) |

| QCC | CASC211_JG_Q_CONTROL_CARD / CASC211_JG_EXAMINE_ITEM (MES) | SCSAI CASC211_* (MES) |

| SPC | Characteristic (QP_Module) | SCSAI Characteristic (QP_Module) |

| STAT | 实时聚合 NCR/CAPA/Audit/Characteristic | SCSAI 实时聚合 |

| FMEA | DFMEA / PFMEA (QP_Module) | SCSAI DFMEA / PFMEA (QP_Module) |

共享 helper:server/core/SCSAI-quality-query.js_val/_int/_float/isStale/isOverdue/queryItems/createItem)。

二、端到端真实验证结果

脚本:scripts/debug/_verify_quality_SCSAI_e2e.cjs(编排) + _verify_quality_worker_child.cjs(每员工独立子进程,避免本地 SQLite 级联)。

读路径(直连 SCSAI,真实计数)

员工真实计数备注
NCRtotal=3 (Originated×3)真实数据
CAPAtotal=3 (In Review×3)印证 CAPA 由 Deviation/QMS 建模,须用 keyed_name 而非 name
AUDITtotal=1 (Planned×1)真实数据
QCCmonitored_cards=1SCSAI 中已有 1 张真实质控卡
SPCtotal=15 Characteristic15 个均缺 target/tolerance 规格(如实反映)
FMEADFMEA=2 / PFMEA=1真实数据
STATkpi_count=7(红灯 6 项)实时聚合,零缓存

写路径(统一 CapabilityRuntime.create 闭环)

| 员工 | 结果 | 清理 |

|------|------|------|

| NCR | 创建成功,返回真实 id | 已删除测试对象 ✅ |

| PFMEA | 创建成功,返回真实 id | 已删除测试对象 ✅ |

| QCC | CASC211_JG_Q_CONTROL_CARD 被 SCSAI 拒绝(MES 域对象需合法字段/关系)→ 诚实报错,未创建悬空检验项目 | 无残留 ✅ |

通过 29 / 失败 0。

三、验证中发现并修复的问题

  1. CapabilityRuntime.create 返回值字段名:实际返回 item_id(顶层 + result.item_id),

原 helper 误读 res.id → 创建 id 取不到、清理不触发、SCSAI 残留测试对象。

已修正 SCSAI-quality-query.jscreateItem 提取逻辑。

  1. QCC 创建孤儿对象:原逻辑卡片创建失败后仍创建检验项目,留下悬空 EXAMINE_ITEM

已改为「卡片失败即停止、如实返回错误」,杜绝脏数据。

  1. 验证脚本 stdout 污染:加载的 rule-engine / sync-SCSAI-meta 向 stdout 写日志,

导致 JSON 解析失败。编排器改为取最后一行可解析 JSON。

  1. 清理了验证过程产生的孤儿测试对象(2 个 EXAMINE_ITEM 及宽扫 TEST/E2E/DBG 残留),SCSAI 已无脏数据。

四、已知约束(非代码缺陷)

  • QCC 的 CASC211_JG_Q_CONTROL_CARD 是 MES 域对象,SCSAI 对其有字段/关系约束,

最小字段创建会被拒绝。这符合用户所述「CASC211 是 MES 域、质量过程表关联关系未建好」。

员工已诚实报错,不伪造成功;如需 seed 真实质控卡,需提供合法 MES 字段。

  • STAT 无创建动作(纯聚合),符合设计。
  • server/core/quality-process-bridge.js 仍为本地表写法,属独立待办,不在本次 7 员工范围内。

五、运行方式

node scripts/debug/_verify_quality_SCSAI_e2e.cjs

需 SCSAI 可达(ylxt.chat/scplm,库 SCPLM)。每个员工在独立 Node 子进程运行。

← 返回案例列表
分享:
🤖 Try Now →
🤖
🎁