# 应用蓝图落地说明（v1）

用户上传「描述/图片 + Excel」后，系统只围绕一份 **AppBlueprint JSON** 工作：AI 生成 → 校验 → 用户确认 → 中台执行建库/挂 API/渲染页面。

## 目录

| 路径 | 作用 |
|------|------|
| `schema/app-blueprint.schema.json` | 蓝图 JSON Schema（契约） |
| `examples/inventory-ledger.blueprint.json` | 完整示例（库存台账） |
| `openapi/dynamic-crud.openapi.yaml` | 动态 API 形状（按蓝图挂载） |
| `platform/execution-steps.md` | 中台执行步骤与安全闸门 |
| `ai/prompt-contract.md` | AI 服务输入输出约定 |

## 主链路

```text
1) 上传 excel + prompt/image
2) FastAPI：解析 Excel + 多模态理解 → 产出 blueprint draft
3) 用 JSON Schema 校验；置信度 < 0.75 强制人工确认
4) 用户确认/改字段
5) go-zero：
   - 分配 schema_name / database
   - CREATE TABLE（白名单 DDL）
   - 注册元数据
   - 按 apis 挂动态 CRUD
   - 可选导入 Excel 行
6) 前端：按 pages[] 渲染，不落不可控源码
```

## 服务边界

### AI 服务（FastAPI）

- **能做**：推断实体、字段类型、页面布局、图表建议
- **不能做**：直接连业务库执行 SQL、注册网关路由、写连接串

输出：`AppBlueprint` draft + `warnings[]`

### 中台（go-zero）

- **能做**：租户鉴权、DDL 执行、元数据落库、动态 API、审计
- **不能做**：信任模型原文；必须 Schema 校验 + 标识符白名单

### 前端渲染器

输入：`GET /api/v1/apps/{slug}/blueprint`  
按 `pages[].type` 渲染 list/form/dashboard。

## 动态 API（示例应用）

确认并发布后，库存示例会得到：

```http
GET    /api/v1/apps/inventory_ledger/inventory_items
GET    /api/v1/apps/inventory_ledger/inventory_items/{id}
POST   /api/v1/apps/inventory_ledger/inventory_items
PATCH  /api/v1/apps/inventory_ledger/inventory_items/{id}
DELETE /api/v1/apps/inventory_ledger/inventory_items/{id}
POST   /api/v1/apps/inventory_ledger/inventory_items:import
GET    /api/v1/apps/inventory_ledger/inventory_items:export
```

所有请求强制：`Authorization` + 租户上下文；`row_policies=tenant_isolated` 由服务端注入，客户端不可关。

## 本地快速校验示例

用任意 JSON Schema 校验器验证示例：

```bash
# 需本机有 ajv-cli 或等价工具
npx --yes ajv-cli validate -s blueprint/schema/app-blueprint.schema.json -d blueprint/examples/inventory-ledger.blueprint.json
```

## 版本策略

- `version: "1.0"` 固定本契约
- 不兼容变更升 `1.1` / `2.0`，旧应用蓝图可继续读取
- AI 与中台只认 Schema 内字段；多余字段校验失败
