Product→Model 生成 type="Unknown" 根因与修复(2026-07-09)
现象
前端用 useCapabilityCreate 创建 Product 对话时,Model 关系被解析为 related_item_type='Unknown',
导致 非法 AML 及多处 404。
根因链(已定位并修复)
- 本地
server/data/rule_engine.db的sciot_relationships中Product→Model行的
related_item_type 和 relationship_item_type 均为空(数据缺陷,来自根源 JSON)。
- 前端
src/composables/useCapabilityCreate.jsL528 的relTypesmap 在related_item_type为空时
fallback 到 'Unknown',最终 rel.related_item_type='Unknown'。
- 类型A/B判定
isTypeB = relationship_type === related_item_type→'Model'===''=false → 走 Type A,
生成 。
- DB 持久化陷阱:
server.js启动时若sciot_item_types为空会从generated/full-aml-extract.json
全量重同步;且旧 server 进程退出时 sqlite-compat 的 exit 处理器会把内存态(298 类型)写回文件,
覆盖手动修复。直接改 db 文件会被 server 重启/退出覆盖。
修复
- 阶段A(数据):
sync-rels.mjs用sqlite-compat直连(绕过 db-adapter 代理层,避免在快速退出时
save() 防抖未触发/代理分裂导致修改丢失),从真实 SCSAI 拉取 600 条关系做权威回填:
- 回填
related_item_type314 行(从 431 空降到 117 空)。 - 插入缺失 ItemType 311 个(类型总数 298→609),含
Model(is_relationship=1)。 - 校正 6 个 is_relationship 标志。
- 落盘改用
db.close()(export+writeFileSync),并验证独立进程读取为 609/117/Model存在。 - 关键:修复后必须关闭所有 server 进程再启动,否则旧进程 exit 写回会覆盖。
- 阶段B(前端兜底):
useCapabilityCreate.jsL528 增加 fallbackr.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→Part、Sales 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。
BossAgents