本技能负责分析用户的简要需求描述,基于需求规格说明书模板,生成结构化的需求规格说明书文档。
所有对话、说明、注释均使用中文。 与用户的交互全程中文,代码注释也使用中文。
/require 指令doc/{模块}-{功能名}-requirements.md/dev 指令读取需求规格说明书生成代码从用户输入中提取:
| 参数 | 提取规则 | 示例 |
|---|---|---|
| 模块 | 第1个参数 | ecs → ruoyi-modules/ruoyi-ecs |
| 功能名 | 第2个参数 | course |
| 功能中文名 | 自动推断或用户补充 | 课程、课程管理 |
| 简要需求 | 第3个参数及之后 | 课程名称、课程类型(字典course_type)、讲师(多对多) |
| 选项 | -- 前缀标记 |
--table=t_ecs_course --dubbo --db=kingbase |
模块路径映射:
| 模块名 | 后端路径 | 包名 |
|---|---|---|
| ecs | ruoyi-modules/ruoyi-ecs |
org.dromara.ecs |
| backstage | ruoyi-modules/ruoyi-backstage |
org.dromara.backstage |
| system | ruoyi-modules/ruoyi-system |
org.dromara.system |
读取 references/requirements-template.md,模板包含以下章节:
将用户自然语言描述的字段逐个解析,推断字段属性。
| 用户描述模式 | 推断属性 |
|---|---|
| "XX名称" / "XX名" | fieldType=String, component=input, inQuery=true, queryType=like |
| "XX编码" / "XX代码" | fieldType=String, component=input, inQuery=true, queryType=like, required=true |
| "XX类型(字典xxx)" | fieldType=String, dictType=xxx, component=select, inQuery=true, queryType=eq |
| "XX状态" | fieldType=String, dictType=status, component=select, inQuery=true, queryType=eq |
| "学分" / "分数" / "金额" | fieldType=BigDecimal, component=inputNumber |
| "数量" / "人数" / "学时" | fieldType=Integer, component=inputNumber |
| "时间" / "日期" | fieldType=Date, component=datetime |
| "备注" / "描述" / "说明" | fieldType=String, component=textarea, inTable=false |
| "排序" / "序号" | fieldType=Integer, component=inputNumber |
| "来源" | fieldType=String, dictType=data_source, component=select, inTable=false, inQuery=false, lockRule: {lockValue: 1, lockActions: [edit, delete], tip: '第三方数据不可操作'} |
| "XX(多对多)" / "XX(关联)" | 生成从表配置 + relation |
| "XX(字典xxx)" | fieldType=String, dictType=xxx, component=select |
| "第三方标识" / "otherId" | fieldType=String, inTable=false, inForm=false |
| 属性 | 默认值 |
|---|---|
inDb |
true |
inTable |
true(除非备注/描述类) |
inQuery |
false(除非名称/编码/类型/状态类) |
queryType |
eq |
inForm |
true(除非主键/公共字段) |
inAdd |
true |
inEdit |
true |
required |
false(除非编码类) |
component |
input |
excelExport |
true |
lockRule |
null(除非"来源"/"数据来源"类字段) |
当用户描述包含以下关键词时,自动生成从表:
id、{mainId}、关联字段ID + 名称、createTimeid、{mainId}、业务字段--sub-table=表名:显式指定从表名从表命名规则:
t_{模块}_{主表}_{关联实体}(如 t_ecs_course_teacher)t_{模块}_{从表实体}(如 t_ecs_course_schedule)按照以下顺序填充需求规格说明书:
t_{模块}_{功能名})、多租户、数据库类型(默认 kingbase)、描述--no-import){功能名}Id, Long, inTable=false, inForm=false, excelExport=false)inDb=false 的计算字段,如 teacherNames)inTable=true 字段组装列表 VO,有从表时增加明细 VO。有 lockRule 的字段必须加入 VO(前端需此字段判断操作权限)dictType 字段收集将填充后的需求规格说明书写入:
d:/dt_ykt/ykt_server/doc/{模块}-{功能名}-requirements.md
| 文档 | 说明 |
|---|---|
references/requirements-template.md |
需求规格说明书模板(字段属性定义规范) |
course_type 而非 ecs_course_typeRemoteCourseDtoinDb=false 的 VO 承载字段{模块}:{功能}:{操作},如 ecs:course:list/{功能名}/{操作},如 /course/listcourseName,数据库端 course_name--db=kingbase(默认)、--db=mysql、--db=dm、--db=oceanbaseinDb=true,通常 inTable=false(不显示列)、inQuery=false(不作为搜索条件),但必须包含在 VO 中供前端判断。典型场景:dataSource=1 时禁止编辑和删除。前端根据 lockRule 配置,在操作列按字段值动态显示/隐藏编辑、删除按钮excelExport=false,Vo 中不加 @ExcelProperty 注解所有表统一包含以下通用字段,建表 DDL 中自动追加,字段清单中无需重复声明:
| 字段 | Java 类型 | 逻辑删除默认值 | 说明 |
|---|---|---|---|
| del_flag | Integer | 0 | 逻辑删除:0-未删除,1-已删除 |
| create_dept | Long | — | 创建部门 |
| create_by | Long | — | 创建者 |
| create_time | Date | — | 创建时间 |
| update_by | Long | — | 最后修改者 |
| update_time | Date | — | 最后修改时间 |
如果基础信息中"是否多租户"为 是,则额外包含:
| 字段 | Java 类型 | 说明 |
|---|---|---|
| tenant_id | Long | 租户ID |
| 字段 | kingbase | mysql | dm | oceanbase |
|---|---|---|---|---|
| del_flag | character(1 char) NOT NULL DEFAULT '0'::bpchar | char(1) NOT NULL DEFAULT '0' | CHAR(1) DEFAULT '0' | char(1) NOT NULL DEFAULT '0' |
| create_dept | bigint | bigint(20) | BIGINT | bigint(20) |
| create_by | bigint | bigint(20) | BIGINT | bigint(20) |
| create_time | timestamp | datetime | TIMESTAMP | datetime |
| update_by | bigint | bigint(20) | BIGINT | bigint(20) |
| update_time | timestamp | datetime | TIMESTAMP | datetime |
| tenant_id | bigint | bigint(20) | BIGINT | bigint(20) |
| 选项值 | 数据库 | 方言标识 |
|---|---|---|
kingbase |
人大金仓(默认) | KingbaseES |
mysql |
MySQL | MySQL |
dm |
达梦 | DM |
oceanbase |
OceanBase | OceanBase |
| Java 类型 | kingbase | mysql | dm | oceanbase |
|---|---|---|---|---|
| Long | bigint | bigint(20) | BIGINT | bigint(20) |
| Integer | integer | int(11) | INT | int(11) |
| String(无长度) | character varying(255 char) | varchar(255) | VARCHAR(255) | varchar(255) |
| String(字典字段) | character varying(16 char) | varchar(16) | VARCHAR(16) | varchar(16) |
| BigDecimal | numeric(10,2) | decimal(10,2) | DECIMAL(10,2) | decimal(10,2) |
| Date | timestamp | datetime | TIMESTAMP | datetime |
⚠️ 字典字段类型规范:数据字典(dictType)对应的数据库字段类型统一为
varchar(16),Java 类型为String。字典值虽然常为数字(如 "0"、"1"),但存储和传输统一使用字符串。
-- 建表
CREATE TABLE "dbo"."t_xxx" (
"id" bigint NOT NULL,
"column_name" character varying(255 char) NOT NULL DEFAULT ''::varchar,
"status" integer NOT NULL DEFAULT '0'::bpchar,
"del_flag" character(1 char) NOT NULL DEFAULT '0'::bpchar,
"create_dept" bigint,
"create_by" bigint,
"create_time" timestamp,
"update_by" bigint,
"update_time" timestamp,
CONSTRAINT "t_xxx_pkey" PRIMARY KEY ("id")
);
-- 多租户表额外包含:
-- "tenant_id" character varying(20 char) NOT NULL DEFAULT ''::varchar,
-- 表注释
ALTER TABLE "dbo"."t_xxx" COMMENT '表注释';
-- 列注释
ALTER TABLE "dbo"."t_xxx" MODIFY "column_name" COMMENT '列注释';
CREATE TABLE `t_xxx` (
`id` bigint(20) NOT NULL,
`column_name` varchar(255) NOT NULL DEFAULT '' COMMENT '列注释',
`status` int(11) NOT NULL DEFAULT '0' COMMENT '状态',
`del_flag` char(1) NOT NULL DEFAULT '0' COMMENT '删除标志(0-未删除 1-已删除)',
`create_dept` bigint(20) DEFAULT NULL COMMENT '创建部门',
`create_by` bigint(20) DEFAULT NULL COMMENT '创建者',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`update_by` bigint(20) DEFAULT NULL COMMENT '更新者',
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
-- 多租户表额外包含:
-- `tenant_id` bigint(20) DEFAULT NULL COMMENT '租户编号',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='表注释';
CREATE TABLE "t_xxx" (
"id" BIGINT NOT NULL,
"column_name" VARCHAR(255) DEFAULT '',
"status" INT DEFAULT 0,
"del_flag" CHAR(1) DEFAULT '0',
"create_dept" BIGINT,
"create_by" BIGINT,
"create_time" TIMESTAMP,
"update_by" BIGINT,
"update_time" TIMESTAMP,
-- 多租户表额外包含:
-- "tenant_id" BIGINT,
PRIMARY KEY ("id")
);
COMMENT ON TABLE "t_xxx" IS '表注释';
COMMENT ON COLUMN "t_xxx"."column_name" IS '列注释';
CREATE TABLE `t_xxx` (
`id` bigint(20) NOT NULL,
`column_name` varchar(255) NOT NULL DEFAULT '' COMMENT '列注释',
`status` int(11) NOT NULL DEFAULT '0' COMMENT '状态',
`del_flag` char(1) NOT NULL DEFAULT '0' COMMENT '删除标志(0-未删除 1-已删除)',
`create_dept` bigint(20) DEFAULT NULL COMMENT '创建部门',
`create_by` bigint(20) DEFAULT NULL COMMENT '创建者',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`update_by` bigint(20) DEFAULT NULL COMMENT '更新者',
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
-- 多租户表额外包含:
-- `tenant_id` bigint(20) DEFAULT NULL COMMENT '租户编号',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='表注释';
inDb=true 的字段inDb=false 的纯 VO 承载字段'',Integer 默认值 0varchar(16) 而非 integer,Java 类型为 Stringdel_flag、create_dept、create_by、create_time、update_by、update_timetenant_id_pkey 命名(kingbase 风格)course_id)