# AI 服务输入输出约定 ## 输入 `POST /api/v1/apps:generate`(可由网关转到 FastAPI) | 字段 | 必填 | 说明 | |------|------|------| | prompt | 是 | 用户自然语言需求 | | excel | 否 | xlsx/xls/csv | | images[] | 否 | 页面截图/手绘线框,最多 10 | | storage_mode | 否 | 默认 `schema_per_app` | Excel 解析侧建议先产出中间结构再喂给 LLM: ```json { "sheets": [ { "name": "Sheet1", "headers": ["SKU", "商品名称", "仓库", "数量", "单价", "状态", "更新时间"], "sample_rows": [ ["A-1001", "无线鼠标", "华东仓", 120, 59.9, "在售", "2026-07-01 10:00:00"] ], "inferred_types": { "SKU": "string", "数量": "int", "单价": "decimal" } } ] } ``` ## 输出 ```json { "draft": { "...": "AppBlueprint" }, "warnings": [ "列「备注」样本过少,已标为可空 text", "截图中有图表区域,已生成 dashboard 草案" ], "confidence": 0.86, "require_confirm": true } ``` 规则: - `draft` 必须能通过 `app-blueprint.schema.json` - `confidence < 0.75` ⇒ `require_confirm=true`(前端禁止一键跳过) - 字段名、表名由 AI 生成后,**发布前中台会再次规范化/重写** - 不得在输出中包含数据库连接串、密码、任意 SQL ## 系统提示词要点(实现时使用) 1. 只输出符合 Schema 的 JSON(可包在 draft 字段) 2. 一表对应 Excel 主 sheet;多 sheet 才多 entity(≤ 20) 3. 优先 enum:当某列 distinct 值 ≤ 20 且稳定 4. 页面至少包含一个 `list`;若用户提到统计再加 `dashboard` 5. API operations 默认 `list/get/create/update/delete/**import**/**export**`;列表页 `layout.actions` 默认含 `import`(及 `export`)。**不要**因需求未提「导入」而省略。仅当用户明确禁止导入/导出时才去掉对应 op/action 6. `security.visibility` 默认 `private`,`row_policies` 默认 `tenant_isolated` ## 与中台的分工 ```text AI:理解意图,填蓝图 中台:校验、改写标识符、建表、挂路由、强制租户隔离 前端:确认页编辑蓝图 → publish → 用 blueprint 渲染 ```