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 等复杂嵌套)
关键设计决策
- 不含 LLM:主 composable 只接收已生成的属性/关系,LLM 由调用方控制
- bomService:通过
window._bomService访问(与现有代码一致) - 工具函数导出:高级用法可直接 import
fetchTypeTemplate等 - Type A / Type B 关系:完整保留原始逻辑
- AI 自动纠错:默认开启,可通过
options.skipAiCorrect禁用
下一步
Phase 1:在 ItemTypeManagement.vue 中验证 useCreate(),替换手写 SCSAI 调用。
BossAgents