name: require-dev-command-system overview: 设计 /require 和 /dev 双阶段指令系统及对应技能,实现从需求规格说明书到前后端代码生成的完整开发流程 todos:
设计一套双阶段指令驱动的工作流,用于在 RuoYi-Cloud-Plus 项目中自动化生成业务功能的前后端代码。
/require 指令:输入简要需求,调用 require 技能生成结构化需求规格说明书(Markdown),支持反复沟通迭代/dev 指令:基于已确认的需求规格说明书,调用后端技能 + 前端技能生成完整前后端代码CMD.md 统一定义指令语法、参数、流程、示例用户输入 /require ecs 课程 [简要需求]
↓
require 技能 → 分析需求 → 加载需求模板 → 生成需求规格说明书
↓
用户反复沟通/人工调整 → 最终确认 doc/ecs-course-requirements.md
↓
用户输入 /dev ecs 课程
↓
dev 技能 → 读取需求规格说明书 → 后端生成 + 前端生成 → 输出代码文件
d:/dt_ykt/ykt_server/doc/[模块]-[功能名]-requirements.mdd:/dt_ykt/ykt_server/ruoyi-modules/ruoyi-[模块]/d:/dt_ykt/ykt_web/src/指令层(CMD.md) ← 统一指令入口定义
│
├── /require → require-skill ← 需求分析技能(新建)
│ ├── SKILL.md
│ └── references/requirements-template.md(从 ruoyi-backend 迁移)
│
└── /dev → ruoyi-backend + ykt-web-dev ← 开发技能(现有,需增强)
├── 读取需求规格说明书
├── ruoyi-backend:生成后端代码
└── ykt-web-dev:生成前端代码
/require 指令:
/require [模块] [功能名] [简要需求描述]
参数说明:
| 参数 | 必填 | 说明 | 示例 |
|---|---|---|---|
| 模块 | 是 | 模块名(不含 ruoyi- 前缀) | ecs, backstage, system |
| 功能名 | 是 | 功能简写(英文) | course, student |
| 简要需求 | 否 | 自然语言描述,可多行 | 课程名称、课程类型(字典course_type)、学分、讲师(多对多) |
可选参数(通过标记指定):
| 标记 | 说明 | 示例 |
|---|---|---|
--table=表名 |
指定主表名 | --table=t_ecs_course |
--sub-table=表名 |
指定从表名 | --sub-table=t_ecs_course_teacher |
--no-tenant |
非多租户 | --no-tenant |
--no-import |
不需要导入导出 | --no-import |
示例:
/require ecs 课程 课程名称、课程编码、课程类型(字典course_type)、学分、学时、讲师(多对多关联) --sub-table=t_ecs_course_teacher
/dev 指令:
/dev [模块] [功能名] [选项]
参数说明:
| 参数 | 必填 | 说明 | 示例 |
|---|---|---|---|
| 模块 | 是 | 模块名 | ecs |
| 功能名 | 是 | 功能简写 | course |
| --backend=路径 | 否 | 后端项目路径,默认 d:/dt_ykt/ykt_server | --backend=d:/other/server |
| --frontend=路径 | 否 | 前端项目路径,默认 d:/dt_ykt/ykt_web | --frontend=d:/other/web |
| --backend-only | 否 | 仅生成后端 | --backend-only |
| --frontend-only | 否 | 仅生成前端 | --frontend-only |
示例:
/dev ecs 课程
/dev ecs 课程 --frontend=d:/other/web
/dev ecs 课程 --backend-only
位置:d:/dt_ykt/ykt_server/.workbuddy/skills/require/
职责:
references/requirements-template.md)doc/[模块]-[功能名]-requirements.mdSKILL.md 核心流程:
1. 解析指令参数(模块、功能名、简要需求)
2. 加载 requirements-template.md 模板
3. 分析简要需求,填充模板:
a. 基础信息:模块路径、表名推断(t_{模块}_{功能名})
b. 接口清单:默认 CRUD + 导入导出
c. 字段清单:逐字段解析,推断属性
d. VO 结构:根据 inTable/inForm 字段自动组装
e. 特殊需求:根据标记推断
4. 输出需求规格说明书到 doc/ 目录
5. 提示用户确认或修改
需求分析推断规则:
| 用户描述 | 推断结果 |
|---|---|
| "名称" | fieldType=String, component=input, inQuery=true, queryType=like |
| "类型(字典xxx)" | fieldType=Integer, dictType=xxx, component=select |
| "编码" | fieldType=String, component=input, inQuery=true, queryType=like, required=true |
| "学分/分数" | fieldType=BigDecimal, component=inputNumber |
| "数量/人数" | fieldType=Integer, component=inputNumber |
| "时间/日期" | fieldType=LocalDateTime, component=datetime |
| "备注/描述" | fieldType=String, component=textarea |
| "状态" | fieldType=Integer, dictType=status, component=select |
| "讲师/教师(多对多)" | 生成从表,relation 配置 |
| "排序" | fieldType=Integer, component=inputNumber |
| "来源" | fieldType=Integer, dictType=data_source, component=select |
后端技能增强(ruoyi-backend):
doc/[模块]-[功能名]-requirements.md前端技能增强(ykt-web-dev):
| 文件路径 | 说明 |
|---|---|
d:/dt_ykt/ykt_server/.workbuddy/skills/require/SKILL.md |
require 技能主文件 |
d:/dt_ykt/ykt_server/.workbuddy/skills/require/references/requirements-template.md |
需求模板(从 ruoyi-backend/references/ 迁移) |
d:/dt_ykt/ykt_server/.workbuddy/CMD.md |
指令规范文件(全局,位于 .workbuddy 根目录) |
| 文件路径 | 修改内容 |
|---|---|
d:/dt_ykt/ykt_server/.workbuddy/skills/ruoyi-backend/SKILL.md |
新增「从需求规格说明书驱动代码生成」章节 |
d:/dt_ykt/ykt_web/.workbuddy/skills/ykt-web-dev/SKILL.md |
新增「从需求规格说明书驱动代码生成」章节 |
需求规格说明书 → 后端生成文件
─────────────────────────────────────────────────
基础信息.模块 → 包路径 org.dromara.{module}
基础信息.主表名 → @TableName, Domain 类
基础信息.从表名 → 从表 Domain/Bo/Vo/Mapper/Service
基础信息.是否多租户 → extends TenantEntity / BaseEntity
字段清单(inDb=true) → Domain 字段
字段清单(必填) → Bo 校验注解 @NotNull/@NotBlank
字段清单(inTable=true) → Vo @ExcelProperty + 列表展示
字段清单(dictType) → Vo @ExcelDictFormat, 前端字典下拉
字段清单(relation) → 前端关联选择组件
字段清单(inDb=false) → Vo 纯计算字段(如 teacherNames)
接口清单 → Controller 方法
特殊需求.excelImport → ImportVo + ImportListener
特殊需求.dubboExpose → RemoteService + RemoteServiceImpl
需求规格说明书 → 前端生成文件
─────────────────────────────────────────────────
基础信息.功能简写 → api/{module}/{name}/, views/{module}/{name}/
字段清单(inTable=true) → index.vue 表格列
字段清单(inQuery=true) → index.vue 搜索栏
字段清单(inForm=true) → form.vue 表单项
字段清单(dictType) → useDict() + el-select
字段清单(relation) → 关联选择弹窗
字段清单(component) → 对应 Element Plus 组件
接口清单 → api/index.ts 接口函数
VO 结构 → api/types.ts 类型定义