质量业务功能「全局切到 114 服务端」验证报告

质量业务功能「全局切到 114 服务端」验证报告

生成时间:2026-08-25 | 目标:所有质量相关功能在云端 114 (.NET/SQLServer) 真实跑通

一、配置改动(根因修复)

.env 的 SCSAI 段由本地 :5000 改为 114(备份 .env.bak.20260825085235):

| 项 | 旧值(本地) | 新值(114) |

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

| SCSAI_SERVER | http://localhost:5000 | https://ylxt.chat/scplm |

| SCSAI_DATABASE | SCPLM_CLOUD_20260813 | SCPLM |

| SCSAI_USERNAME | admin | root |

| SCSAI_PASSWORD | innovator | gyc123456;(尾分号不可省) |

| SCSAI_ENDPOINT_PATH | /server/SCSAIServer.aspx | /server/InnovatorServer.aspx |

代码口径同步对齐 114(quality-inspection.js / inventory.js / vendor.js / change.js 回退默认,

quality.js 注释),避免配置缺失时静默回退到本地库。

二、重启服务

停掉仍占用 3006、加载旧配置的旧进程(PID 30128),以 env -u http_proxy ... PORT=3006 node server.js

重启(绕本机 HTTP_PROXY=127.0.0.1:10809,否则 114 请求会被本地代理拦截)。启动日志:

✅ SCSAI 连通正常 (https://ylxt.chat/scplm,, DB: SCPLM)

三、验证结果(实测,非推测)

3.1 线上 API(:3006)数据来源已切到 114

  • GET /api/quality-inspection/ncrs{"success":true,"source":"SCSAI","total":3,...}
  • GET /api/quality/kpiNCR_TOTAL:3, data_source:"scsai"(此前本地库返回 21)

3.2 verify_114_quality.cjs(强制 114)逐项 PASS

| 检查项 | 结果 |

|---|---|

| 8 个质量 ItemType 可查 | 7 有数据;CASC211_JG_EXAMINE_ITEM 类型存在但 0 条 |

| NCR 创建 + 删除 写路径 | ✅ ok |

| ncr-worker run() | ✅ total=3(SCSAI NCR QS) |

| capa-worker run() | ✅ total=3(SCSAI QCA QS) |

| audit-worker run() | ✅ total=1(SCSAI Audit QS) |

| qcc-worker run() | ✅ 1 张卡(SCSAI Q_CONTROL_CARD MES,只读监控) |

| spc-worker run() | ✅ 15 特性(SCSAI Characteristic) |

| stat-worker run() | ✅ 实时聚合 KPI |

| fmea-worker run() | ✅ DFMEA=2 / PFMEA=1 |

注:114 不支持 ValidateUser(ItemNotFoundException),但真实 Basic 鉴权生效(查询/写入均成功),非阻断。

四、QCC 质控卡「创建」缺口已定位并修复(实测 PASS)

4.1 根因(非服务端建模约束,而是 AML 标签大小写敏感)

  • 114 上 CASC211_JG_Q_CONTROL_CARDtaskitemid普通 property(真实名全小写 taskitemid

data_type=decimal,is_required=1)。Aras 按 XML 元素名精确匹配 property(大小写敏感)

之前 QCC 创建未传该字段 / 标签名大小写不符 → 值被丢弃 → INSERT 该列 NULL → NOT NULL 报错。

  • 对照实证(114 直连):
  • 大写 999001不能将值 NULL 插入列 'TASKITEMID'(失败)
  • 小写 999001创建成功,可删除清理
  • 合法性佐证:现存卡的 taskitemid 真实值为 "0"(服务端默认填 0);114 上

JG_PRODUCE_TASK/CASC211_JG_PRODUCE_TASK 查询 count=0taskitemid 不是外键

是任意非空 decimal 即可满足约束(与现存卡 0 一致最安全)。

4.2 修复(qcc-worker.js)

create/seed 分支构造 cardData 时显式补 taskitemid(小写键),值优先级:

params.cardData.taskitemidparams.cardData.TASKITEMID(兼容大写)→ 默认 "0"(与 114 现存数据一致)。

CapabilityRuntime.create → unified-create,data 的 key 原样当 XML 标签 → 小写 taskitemid 被正确识别写入。

4.3 端到端实证(真实代码路径,114)

server/scripts/e2e_qcc_create.cjs:require 新 worker 跑 run({action:'seed', withItem:false})

  • 结果:success:true, created_id=5FA33C3679FE403FB03759A2BADC1790,清理删除 success:true
  • 证明 QCC 质控卡创建已通过真实代码路径在 114 跑通。
  • 重启运行实例(PID 29892)加载新 worker 代码;线上 GET /api/quality/kpi 仍来自 114(NCR_TOTAL=3, data_source=scsai)。

五、遗留与验证资产

  • 本地 :5000 历史测试 NCR 残留已不再影响(真源改为 114),可按需清理。
  • 验证脚本(保留,可复跑):
  • server/scripts/verify_114_quality.cjs — 7 质量员工 run() + NCR 写路径(强制 114)
  • server/scripts/e2e_qcc_create.cjs — QCC 创建经真实代码路径在 114 跑通(自动清理)
← 返回案例列表
分享:
🤖 Try Now →
🤖
🎁