对象类(ItemType)创建统一 + 前端迁移 + HTTP 路径修复记录

对象类(ItemType)创建统一 + 前端迁移 + HTTP 路径修复记录

日期:2026-07-09(续)

负责人:AI 助手(tuan_ 工作区)

背景

上一轮已完成「3 个 create 入口收敛到 unified-create.js handleCreate」+ 6 类业务(Project/Product/Part/Vendor/Customer/ECN)真实落库。

本轮目标:

  1. 对象类创建(ItemType 含 Property + RelationshipType)走元数据驱动,支持自引用关系回填。
  2. 前端 ItemTypeManagement.vue 业务页从老 useCreate.js 迁移到统一入口 /api/unified/create。
  3. 修复 HTTP 真实路径(前端迁移后走的路径)创建 ItemType 失败的根因。

已完成修改

1. 后端 handleCreate 元数据驱动增强(unified-create.js)

  • 新增 isRelationshipItemType():依据 meta 的 is_relationship 判定,令 Property/RelationshipType 等关系型 Item 直接内联,不再独立 add(满足 SCSAI 统一对象模型约束)。
  • Step 2 新增 CORE_FIELDS 白名单(name/keyed_name/description/classification/label/comments),确保 SCSAI 核心系统字段不被 filterAndSanitize 过滤。
  • 新增 i18n 值归一化:本地 meta 把多语言字段存成字符串 JSON({"#text":"table","@_lang":"en"}),在所有默认值补全之后提取 #text 作为实际值,避免非法属性值。
  • Step 7 createRelationshipsRecursive:关系型 Item 内联 + 自引用 related_id 回填 parentId(目标类型==父类型且 id 为空时)。

2. 前端 ItemTypeManagement.vue 迁移

  • 删除 import { useCreate },新增本地 createViaUseCreate() 包装,POST /api/unified/create(payload 形状与 handleCreate 契约一致:relationships 数组 + item_properties.related_id)。
  • 保留 createProgress 响应式对象以兼容模板进度提示。
  • 全仓仅 ItemTypeManagement.vue 使用 useCreate,迁移无副作用。

3. HTTP 路径 ItemType 创建失败根因修复(核心)

直接调 handleCreate 成功、HTTP 路径失败,根因有两层:

  • (a) name 缺失:完整 ItemType 元数据里 sciot_properties 未登记 name,filterAndSanitize 按 validNames 过滤把 name 丢了 → SCSAI PatternMismatchException(name 必填)。修复:CORE_FIELDS 白名单兜底。
  • (b) i18n 对象值非法:implementation_type/show_parameters_tab/structure_view 等系统字段默认值在 meta 里是字符串 JSON {"#text":...},被原样塞进 AML → SCSAI ArgumentOutOfRangeException。修复:默认值补全之后做 i18n 提取。

验证结果(真实 SCSAI scplm)

  • 6 能力回归:create/repair/optimize/compare/generate/identify 全部 success=true(source 分别为 unified_create / rule_engine / llm_router)。
  • 对象类创建(直接 handleCreate):success=true,rels=2(1 Property + 1 自引用 RelationshipType,related_id 正确回填父 ItemType)。
  • 对象类创建(HTTP /api/unified/create,即前端迁移后真实路径):success=true,id=20454A82...,rels=3(2 Property + 1 自引用 RelationshipType)。
  • 清理:删除 verify-class-rel.mjs / verify-http-class.mjs / probe-rt.mjs / qry-name.mjs / debug-create-fail.json 等临时调试文件,保留 verify-capability-line.mjs。

当前状态

对象类创建 + 业务类创建 统一收敛完成,前端业务页已迁移至统一入口,HTTP 真实路径全绿。

待确认(用户授权后):

  • 删除冗余 useCreate.js / capability-api.js 死代码 / 路由竞争分支。
  • 路由唯一化(/api/capability/* 归属)。
  • relationship-resolver 对其它 title 型 ItemType 的覆盖(已修 ECN,audit-noname 发现 32 个 title 型类型)。
← 返回案例列表
分享:
🤖 Try Now →
🤖
🎁