对象创建功能分析文档

对象创建功能分析文档

一、整体架构

用户输入 "创建..."
    │
    ├── 业务对象列表(硬编码 itemType)
    │   └── AiCapabilityBar → useCapabilityCreate.create(itemType, description)
    │       ├── GET /api/aml/unified/schema/:itemType    (获取字段定义)
    │       ├── GET /api/sciot/type-template/:itemType    (获取模板)
    │       ├── POST /api/llm/chat                        (调用LLM生成数据)
    │       ├── POST /api/private-library/objects         (双库查重)
    │       ├── POST /SCSAI-api/ApplyItem                  (创建主对象)
    │       ├── POST /SCSAI-api/ApplyItem                  (创建关系)
    │       └── POST /api/rule-engine/execute-create-post (后置规则)
    │
    ├── 对话框(硬编码 itemType)
    │   └── 同上
    │
    ├── 小程序(用户手选类型)
    │   └── POST /api/unified/create → handleCreate()
    │
    └── 数字员工(关键词匹配)
        └── executePipeline() → createObject()

二、已验证的基础核心:useCapabilityCreate.create()

位置: src/composables/useCapabilityCreate.js L448-2045

已验证: Product、BOM、Part、Project、Supplier 等业务对象,含关系、Item属性、List属性、Sequence编号

完整流程(17步)

步骤API 调用说明
1. 获取SchemaGET /api/aml/unified/schema/:itemType获取字段类型、list值、校验规则
2. 获取模板GET /api/sciot/type-template/:itemType获取扩展字段元数据、关系定义、生成规则
3. 获取子类型SchemaGET /api/sciot/type-template/:relatedType × N并行获取关系目标类型字段定义
4. 获取Item属性SchemaGET /api/sciot/type-template/:targetType × N获取item/foreign属性目标类型字段定义
5. 获取系统模板GET /api/sciot/system-templates获取Permissions/Identities等系统对象模板
6. 构建Prompt(本地) 调用 PromptBuilder.buildCreationPrompt()组装 LLM 创建指令
7. 调用LLMPOST /api/llm/chat生成对象属性+关系+子对象
8. 解析JSON(本地) 兼容3种格式标准/旧版main/扁平
9. 双库查重POST /SCSAI-api/ApplyItem (先查SCSAI精确 → 模糊 → 查标准库)精确匹配→suggest→copy→create
10. Sequence编号POST /SCSAI-api/ApplyItem (getNextValue / get+edit)获取SCSAI原生Sequence或手动自增
11. item_properties预创建POST /SCSAI-api/ApplyItem × N先创建子对象再引用(如scheduling_method对应的Method)
12. 关系对象预创建POST /SCSAI-api/ApplyItem × N递归预创建所有嵌套子对象
13. 构建AML(本地) 调用 AmlBuilder.buildAML()组装完整 AML XML
14. 创建主对象POST /SCSAI-api/ApplyItem (带完整Relationships)提交到SCSAI
15. 名称去重重试POST /SCSAI-api/ApplyItem若 PropertiesAreNotUnique 自动后缀重试
16. AI纠错重试POST /api/llm/chat → 重新创建最多3次,LLM分析错误修正
17. 创建关系+后置POST /SCSAI-api/ApplyItem × N + create_post规则分步创建关系,执行后置规则

关键依赖

  • Frontend: AmlBuilder.js (AML构建)、PromptBuilder.js (Prompt构建)
  • Backend: /api/aml/unified/schema/, /api/sciot/type-template/, /api/llm/chat, /SCSAI-api/ApplyItem
  • SCSAI 代理: /SCSAI-api/ApplyItem → Node.js 构造 SOAP → SCSAI InnovatorServer.aspx

三、四入口一问题和现状验证

入口调用链itemType来源已验证?
业务对象列表AiCapabilityBar → useCapabilityCreate.create()页面硬编码✅ 已验证
对话框同上页面硬编码❌ 待测
小程序POST /api/unified/create → handleCreate()用户手选❌ 待测
数字员工executePipeline() → createObject()detectItemType❌ 待测

当前测试验证

测试项结果
服务 器运行 (port 3006)✅ PID 23324
SCSAI 连接 (ai-inspector/itemtypes)✅ 返回真实 ItemType 数据
Schema API (/api/aml/unified/schema/Product)✅ 返回字段定义
类型模板 (/api/sciot/type-template/Product)✅ 返回属性+关系定义
双库查重 (/api/private-library/objects)✅ 返回私有库数据
前端 SCSAI-api 代理 (/SCSAI-api/ApplyItem)✅ 返回 SCSAI Part 真实数据("Clamp")
Sequence API (/api/sciot/apply-item)❌ 路由不存在(tocConfigRouter 未注册)

四、存在的问题

P0 — "类型不存在→创建类型" 完全缺失

detectItemType() (capability-pipeline.js L114-138) 找不到类型时默认返回 Part,没有任何"先创建 ItemType"的逻辑。

object-modeler.defineObject (L44-89) 存在且能通过 LLM 定义新对象类,但:

  • 没有任何创建入口调用它
  • applyDefinition (L95-168) 只写本地 sciot_import.db,不创建 SCSAI ItemType
  • 意图识别链路中没有 "itemType 不存在 → defineObject → applyDefinition → 创建 ItemType → 再创建对象" 分支

P0 — 四入口三套执行逻辑

实现关系处理SequenceAI重试双库查重行数
useCapabilityCreate.create()预创建→引用✅ getNextValue+fallback✅ 最多3次✅ 精确+模糊+标准库2045行
unified-create.handleCreate()预创建→引用⚠️ resolveSequences 简易版250行
capability-pipeline.createObject()简易sendAML110行

P1 — 后端 createObject 缺少多个能力

createObject (capability-pipeline.js L490-600) vs useCapabilityCreate.create():

  • 无 AI 纠错重试(LLM 分析错误并修正)
  • 无双库查重
  • 无 Sequence 自动编号
  • 简易的关系处理(只调 sendAML,不预创建子对象)

P2 — 意图识别关键词表太浅

TYPE_CHINESE_MAP 只有 12 个映射,找不到默认 Part。

五、修复方案

目标架构

用户输入 → 意图识别 → 类型存在?→ 是 → useCapabilityCreate.create()
                          → 否 → ObjectModeler.defineObject → applyDefinition → 创建SCSAI ItemType → useCapabilityCreate.create()

最小改动(不改 useCapabilityCreate.create())

  1. capability-pipeline.identifyIntent — 检测到类型不存在时调用 ObjectModeler
  2. object-modeler.applyDefinition — 加 SCSAI ItemType 创建
  3. AiCapabilityBar — 支持 itemType="auto" 先意图识别再创建
  4. 小程序数字员工 — 最终都走 useCapabilityCreate.create() 基核

六、测试结论

useCapabilityCreate.create() 依赖的 5 个后端 API 中 4 个已验证正常。前端 SCSAI-api 代理工作正常,SCSAI 连接正常。但无法直接在命令行测试前端 composable——需要浏览器环境。后端 capability-pipeline.createObject() 需要补全多项能力才能对标前端基核。

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