# 数据模拟 - AI 数据生成 ## 涉及页面 - 数据模拟操作页面(新增/修改) ## API | 方法 | 路径 | 说明 | |------|------|------| | POST | /mock/generate | AI 生成模拟数据(含前置基础数据检测) | **请求参数:** | 参数 | 类型 | 必填 | 说明 | |------|------|------|------| | modules | List\ | 是 | 要生成数据的模块:sales(销售)、purchase(采购)、quality(质量)、production(生产)、stock(库存) | | industries | List\ | 是 | 行业,如:["机械制造", "食品加工", "电子装配"] | | countMin | int | 否 | 每个实体生成条数最小值,默认 3 | | countMax | int | 否 | 每个实体生成条数最大值,默认 10 | | dateStart | String | 否 | 时间范围开始(yyyy-MM-dd) | | dateEnd | String | 否 | 时间范围结束(yyyy-MM-dd) | | additionalInfo | String | 否 | 其他补充描述,如"产品以金属零部件为主" | 请求体示例: ```json { "modules": ["sales", "purchase", "quality"], "industries": ["机械制造", "电子装配"], "countMin": 3, "countMax": 8, "dateStart": "2026-01-01", "dateEnd": "2026-06-01", "additionalInfo": "产品以金属零部件和电子元器件为主" } ``` **响应(成功):** ```json { "code": 200, "msg": "操作成功", "data": { "status": "SUCCESS", "totalGenerated": 24, "moduleSummaries": [ { "module": "sales", "entityName": "客户", "generatedCount": 5, "successCount": 5, "failCount": 0 }, { "module": "sales", "entityName": "销售台账", "generatedCount": 5, "successCount": 5, "failCount": 0 }, { "module": "purchase", "entityName": "供应商", "generatedCount": 4, "successCount": 4, "failCount": 0 }, { "module": "purchase", "entityName": "采购台账", "generatedCount": 4, "successCount": 4, "failCount": 0 }, { "module": "quality", "entityName": "检测标准", "generatedCount": 3, "successCount": 3, "failCount": 0 }, { "module": "quality", "entityName": "指标绑定", "generatedCount": 3, "successCount": 3, "failCount": 0 } ], "errors": [], "checkResult": null } } ``` **响应(基础数据不足,前置检测未通过):** ```json { "code": 500, "msg": "基础数据不足,请先补充后再生成", "data": { "status": "CHECK_FAILED", "checkResult": { "totalItems": 6, "passedItems": 3, "items": [ { "module": "common", "itemName": "产品数据", "passed": true, "message": "通过" }, { "module": "sales", "itemName": "客户数据", "passed": false, "message": "缺少客户数据,请先..." } ] } } } ``` ## 工作流程 1. 用户在页面选择模块 + 填写行业/数量/时间等信息 2. 调用 `POST /mock/generate` 3. 后端首先调用 `POST /mock/dataCheck` 检测基础数据是否就绪 4. 若基础数据不足,返回检测结果,提示用户先补齐 5. 若基础数据就绪,调用 AI 大模型生成符合行业特征的 JSON 数据 6. 按依赖顺序创建数据(客户→销售台账、供应商→采购台账、检测标准→指标绑定...) 7. 返回生成摘要 ## 前端修改点 ### 1. 数据生成区域(在数据检测区域下方) ```html 销售 采购 质量 生产 库存 开始生成 先检测再生成 ``` ### 3. data 数据 ```js data() { return { generateForm: { modules: [], industries: [], countRange: [3, 10], dateRange: [], additionalInfo: '', }, generating: false, generateResult: null, } } ``` ### 4. 方法 ```js methods: { // 直接生成(内部自动检测) async handleGenerate() { if (this.generateForm.modules.length === 0) { this.$message.warning('请至少选择一个模块') return } this.generating = true try { const res = await request.post('/mock/generate', { modules: this.generateForm.modules, industries: this.generateForm.industries, countMin: this.generateForm.countRange[0], countMax: this.generateForm.countRange[1], dateStart: this.generateForm.dateRange[0] || null, dateEnd: this.generateForm.dateRange[1] || null, additionalInfo: this.generateForm.additionalInfo, }) if (res.code === 200) { this.generateResult = res.data this.$message.success(`成功生成 ${res.data.totalGenerated} 条数据`) } else { // 基础数据不足 this.generateResult = res.data this.checkResult = res.data.checkResult this.$message.warning(res.msg) } } finally { this.generating = false } }, // 先检测再生成 async handleCheckFirst() { await this.handleCheck() if (this.checkResult && this.checkResult.passedItems === this.checkResult.totalItems) { await this.handleGenerate() } else { this.$message.warning('请先补齐基础数据后再生成') } }, } ``` ## 注意事项 - `POST /mock/generate` 内部会自动调用数据检测,不需要手动分两步走 - AI 生成的数据会尽量符合行业特征,但建议生成后检查关键数据的合理性 - 生产模块和库存模块依赖产品数据(Product/ProductModel),请确保基础数据中有产品 - 销售台账的合同金额由产品明细自动计算,AI 只需生成产品行的单价和数量 - 产生的数据通过服务层创建,会自动填充 tenantId/deptId/createUser 等字段