require-dev-command-system_ad93f548.md 10 KB


name: require-dev-command-system overview: 设计 /require 和 /dev 双阶段指令系统及对应技能,实现从需求规格说明书到前后端代码生成的完整开发流程 todos:

  • id: create-cmd content: 创建 .workbuddy/CMD.md 指令规范文件,定义 /require 和 /dev 指令语法、参数、流程、示例 status: completed
  • id: create-require-skill content: 创建 require 技能:SKILL.md + 迁移 requirements-template.md status: completed dependencies:
    • create-cmd
  • id: update-backend-skill content: 增强 ruoyi-backend 技能:新增需求规格说明书驱动代码生成章节 status: completed dependencies:
    • create-require-skill
  • id: update-frontend-skill content: 增强 ykt-web-dev 技能:新增需求规格说明书驱动代码生成章节 status: completed dependencies:
    • create-require-skill
  • id: update-memory content: 更新 MEMORY.md,记录指令规范和技能体系 status: completed dependencies:
    • update-backend-skill
    • update-frontend-skill ---

产品概述

设计一套双阶段指令驱动的工作流,用于在 RuoYi-Cloud-Plus 项目中自动化生成业务功能的前后端代码。

核心特性

  • /require 指令:输入简要需求,调用 require 技能生成结构化需求规格说明书(Markdown),支持反复沟通迭代
  • /dev 指令:基于已确认的需求规格说明书,调用后端技能 + 前端技能生成完整前后端代码
  • 指令规范文件CMD.md 统一定义指令语法、参数、流程、示例
  • require 技能:独立的技能,负责需求分析和文档生成
  • dev 技能升级:在现有 ruoyi-backend 和 ykt-web-dev 技能基础上,增加按需求规格说明书驱动代码生成的能力

工作流程

用户输入 /require ecs 课程 [简要需求]
    ↓
require 技能 → 分析需求 → 加载需求模板 → 生成需求规格说明书
    ↓
用户反复沟通/人工调整 → 最终确认 doc/ecs-course-requirements.md
    ↓
用户输入 /dev ecs 课程
    ↓
dev 技能 → 读取需求规格说明书 → 后端生成 + 前端生成 → 输出代码文件

路径约定

  • 需求文档:d:/dt_ykt/ykt_server/doc/[模块]-[功能名]-requirements.md
  • 后端代码:d:/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:生成前端代码

1. 指令设计(CMD.md)

/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

2. require 技能设计

位置d:/dt_ykt/ykt_server/.workbuddy/skills/require/

职责

  1. 接收用户的简要需求描述
  2. 加载需求规格说明书模板(references/requirements-template.md
  3. 分析简要需求,自动推断:
  • 字段类型、查询方式、表单组件
  • 字典字段识别(用户描述中带"字典"、"下拉"的)
  • 关联字段识别(用户描述中带"关联"、"选择XX"的)
  • 主从表关系(用户描述中带"多对多"、"一对多"的)
  1. 生成结构化的需求规格说明书
  2. 输出到 doc/[模块]-[功能名]-requirements.md

SKILL.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

3. dev 技能增强设计

后端技能增强(ruoyi-backend):

  • 新增「从需求规格说明书生成代码」的工作流程
  • 读取 doc/[模块]-[功能名]-requirements.md
  • 按需求文档的字段清单生成 Domain/Bo/Vo/Mapper/Service/ServiceImpl/Controller
  • 按需求文档的特殊需求决定是否生成 ImportVo/ImportListener/Dubbo 接口

前端技能增强(ykt-web-dev):

  • 新增「从需求规格说明书生成代码」的工作流程
  • 读取同一份需求规格说明书
  • 按 inTable 字段生成列表页(index.vue)
  • 按 inForm 字段生成表单页(form.vue / detail.vue)
  • 按 dictType 生成字典引用代码
  • 按 relation 生成关联选择组件
  • 生成 API 接口(index.ts)和类型定义(types.ts)

4. 文件清单

新建文件

文件路径 说明
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 新增「从需求规格说明书驱动代码生成」章节

5. 需求规格说明书与代码生成的映射关系

需求规格说明书                →  后端生成文件
─────────────────────────────────────────────────
基础信息.模块                →  包路径 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 类型定义