Product→Model 生成 type="Unknown" 根因与修复(2026-07-09)

Product→Model 生成 type="Unknown" 根因与修复(2026-07-09)

现象

前端用 useCapabilityCreate 创建 Product 对话时,Model 关系被解析为 related_item_type='Unknown'

导致 非法 AML 及多处 404。

根因链(已定位并修复)

  1. 本地 server/data/rule_engine.dbsciot_relationshipsProduct→Model 行的

related_item_typerelationship_item_type 均为空(数据缺陷,来自根源 JSON)。

  1. 前端 src/composables/useCapabilityCreate.js L528 的 relTypes map 在 related_item_type 为空时

fallback 到 'Unknown',最终 rel.related_item_type='Unknown'

  1. 类型A/B判定 isTypeB = relationship_type === related_item_type'Model'===''=false → 走 Type A,

生成

  1. DB 持久化陷阱server.js 启动时若 sciot_item_types 为空会从 generated/full-aml-extract.json

全量重同步;且旧 server 进程退出时 sqlite-compat 的 exit 处理器会把内存态(298 类型)写回文件,

覆盖手动修复。直接改 db 文件会被 server 重启/退出覆盖。

修复

  • 阶段A(数据)sync-rels.mjssqlite-compat 直连(绕过 db-adapter 代理层,避免在快速退出时

save() 防抖未触发/代理分裂导致修改丢失),从真实 SCSAI 拉取 600 条关系做权威回填:

  • 回填 related_item_type 314 行(从 431 空降到 117 空)。
  • 插入缺失 ItemType 311 个(类型总数 298→609),含 Model(is_relationship=1)。
  • 校正 6 个 is_relationship 标志。
  • 落盘改用 db.close()(export+writeFileSync),并验证独立进程读取为 609/117/Model存在。
  • 关键:修复后必须关闭所有 server 进程再启动,否则旧进程 exit 写回会覆盖。
  • 阶段B(前端兜底)useCapabilityCreate.js L528 增加 fallback r.name(类型B关系如 Model 的关系名即

ItemType 名),避免任何残留空 related_item_type 再生成 Unknown

验证(真实 SCSAI)

  • 重启 server 后 HTTP GET /api/sciot/type-template/Product 返回 Model→related_item_type=Model

GET /api/sciot/type-template/Model 返回 is_relationship=1。

  • POST /api/unified/create 创建 Product(含 Model 关系)真实落库 SCSAI(id=E64D1373472747269E2493B0DA9512B6),

返回体 含 type="Unknown": false

残留

  • 117 行 related_item_type 仍空:本地 name 写法与 SCSAI 关系名不匹配(多为 z_* 子系统/文档层级),

核心 6 类业务(Project/Product/Part/Vendor/Customer/ECN)已全部覆盖。

工具

  • 保留 sync-rels.mjs(可重跑修复);verify-capability-line.mjs(能力线验证)。
  • 已清理本次所有 probe/sr 诊断脚本。

端到端真实 SCSAI 验证(2026-07-10 补充)

  • 批量检查核心/常见 ItemType 经 /api/sciot/type-template:核心 6 类(Project/Product/Part/Vendor/Customer/ECN)

关系基本解析正常;残余空 related_item_type 集中在自引用/对称关系(如 Project Part→PartSales Order Part→Part),

其关系名本身含目标类型,前端 fallback r.name 已覆盖,不产生 Unknown。

  • WBS/BOM/Requirement/Specification/Workflow/Made From/BOM Structure 返回 HTTP 404:这些 ItemType 不在本地

sciot_item_types(SCSAI 有但本地 meta 未同步),是 meta 缺失而非 Unknown 问题;WBS Element/Activity2 在库内正常。

  • 关键真实验证:以真实前端契约 related_items:[{properties:{name}}]POST /api/unified/create 创建 Product(含 Model 关系),

再直连真实 SCSAI 查回:

  • 创建 success=true,返回体 含 type="Unknown": false
  • SCSAI 查回 Product(12A695CF64514C4ABF107D79CFACCCA9)type="Model" 节点
  • Model 对象真实创建并链上(name=验证车型_1783613355657

→ 整条链路(数据回填 + 前端兜底 + 后端 handleCreate 类型B关系处理)在真实 SCSAI 上完全工作。

  • 注意:早期测试曾因请求体误用 properties(而非 related_items:[...])导致关系未落库、误判 server 漏建关系;

改用正确契约后关系完整落库,证明非 server bug。

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