# CRUD 模块 Schema
# 用于快速生成标准 CRUD 模块的工件流

name: crud-module
description: 快速生成标准 CRUD 模块（Entity/Mapper/Service/Controller/页面）

apply:
  requires:
    - tasks

artifacts:
  - id: proposal
    name: 模块提案
    description: 描述要生成的 CRUD 模块
    requires: []
    template: proposal.md
    instruction: |
      根据用户描述，生成 CRUD 模块提案。
      包含：模块名称、核心实体、CRUD 操作列表、业务规则。
    output: proposal.md

  - id: specs
    name: 模块规范
    description: 定义 CRUD 接口规范
    requires: [proposal]
    template: spec.md
    instruction: |
      定义 CRUD 接口规范：
      - GET /api/{entity} — 分页查询
      - GET /api/{entity}/:id — 详情查询
      - POST /api/{entity} — 新增
      - PUT /api/{entity}/:id — 修改
      - DELETE /api/{entity}/:id — 删除
      每个接口定义请求参数和响应格式。
    output: specs/{{entity}}/spec.md

  - id: design
    name: 模块设计
    description: 数据库设计和接口定义
    requires: [proposal, specs]
    template: design.md
    instruction: |
      设计数据库表结构和接口定义：
      - 表结构（字段、类型、索引）
      - 接口签名
      - 前后端分工
    output: design.md

  - id: tasks
    name: 任务列表
    description: 代码生成任务拆分
    requires: [design]
    template: tasks.md
    instruction: |
      按以下顺序拆分任务：
      1. Entity 实体类
      2. Mapper + XML
      3. Service 接口 + 实现
      4. Controller
      5. 前端 API 接口
      6. 前端列表页
      7. 前端表单页
      8. 菜单注册
      9. 单元测试
    output: tasks.md

  - id: api-docs
    name: API 接口文档
    description: 标准 API 接口文档
    requires: [design]
    template: api-docs.md
    instruction: |
      生成标准 API 接口文档：
      - 接口概览表
      - 每个接口的请求参数和响应示例（JSON 格式）
      - 通用错误码说明
    output: api-docs.md

  - id: menu-register
    name: 菜单注册
    description: 菜单注册配置
    requires: [tasks]
    template: menu-register.md
    instruction: |
      生成菜单注册配置：
      - 菜单名称、父级菜单、排序、图标
      - 路由配置（path、component、meta）
      - 权限标识（按钮级权限）
      - SQL 插入语句
    output: menu-register.md
