Phase 0 完成:useCreate.js 提取

Phase 0 完成:useCreate.js 提取

时间: 2026-06-21 15:30

状态: ✅ 完成

文件: src/composables/useCreate.js (1335行)


提取结果

useCapabilityCreate.js 提取了完整的 SCSAI 对象创建逻辑,不含 LLM 调用(LLM 由调用方控制)。

导出内容

import { useCreate, 
  fetchTypeTemplate,      // 工具:获取类型元数据
  filterAndSanitize,      // 工具:属性过滤与类型转换
  precreateNestedItem,    // 工具:引用字段预创建
  createRelationshipsRecursive,  // 工具:关系递归创建
  normalizeRelationships,  // 工具:标准化关系格式
  extractItemId           // 工具:提取 Item ID
} from '@/composables/useCreate'

核心 API

useCreate() — Vue Composable(不含 LLM)

const { create, createWithLLM, progress, result, error, loading } = useCreate()

// 直接传入属性创建(推荐)
await create({ 
  itemType: 'Part', 
  properties: { name: '电机A', item_number: 'P-001' },
  relationships: [{ relationship_type: 'Part BOM', related_items: [...] }],
  itemProperties: { model_id: { item_type: 'Model', properties: { name: 'M1' } } },
  options: { skipAiCorrect: false }
})

createWithLLM({ itemType, description }) — 全流程(含 LLM 生成)

await createWithLLM({ 
  itemType: 'Part', 
  description: '采购50台伺服电机' 
})

保留在 useCapabilityCreate.js 的内容

以下逻辑留在原文件,不在 useCreate.js 中重复:

  • LLM Prompt 构建(buildCreationPrompt)
  • 私有库写入
  • 规则验证(rule-validator)
  • 双库查重(_dualDbDedupCheck)
  • 嵌套关系中的子关系处理(含 WBS Activity2 等复杂嵌套)

关键设计决策

  1. 不含 LLM:主 composable 只接收已生成的属性/关系,LLM 由调用方控制
  2. bomService:通过 window._bomService 访问(与现有代码一致)
  3. 工具函数导出:高级用法可直接 import fetchTypeTemplate
  4. Type A / Type B 关系:完整保留原始逻辑
  5. AI 自动纠错:默认开启,可通过 options.skipAiCorrect 禁用

下一步

Phase 1:在 ItemTypeManagement.vue 中验证 useCreate(),替换手写 SCSAI 调用。

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