代码生成平台 FRD(Functional Requirement Document)

Functional Requirement Document Version 1.0


1. 文档目的(Purpose)

本 FRD 明确定义“代码生成平台”的全部功能需求,结构化说明各模块的功能边界、场景、流程、输入/输出、前置条件、异常处理以及非功能补充,以保障研发、架构、测试团队对齐认知并顺利实施。

与 SRS 的区别:

  • SRS = 全量需求(功能 + 非功能)
  • FRD = 明确“Each function must do what”
  • 更关注 功能行为描述、流程、用例化

2. 产品背景与范围(Scope)

2.1 产品定位

统一的模型驱动代码生成平台,结合模板、DSL、生成引擎,可生成多语言、多结构的工程代码、模块代码、文件片段。

2.2 总体功能范围

  1. 模型中心(Model Center)
  2. 模板中心(Template Center)
  3. DSL 引擎
  4. 代码生成器(Generator Engine)
  5. 工程脚手架生成
  6. Git 集成
  7. 权限控制与审计
  8. 插件扩展机制
  9. 平台管理

3. 功能需求列表(Functional Requirement Summary)

功能按照模块分组,编号方式为: FR-[模块编号].[内部编号]

模块 编号区间
模型中心 FR-1.x
模板中心 FR-2.x
DSL 引擎 FR-3.x
代码生成器 FR-4.x
脚手架生成 FR-5.x
Git 集成 FR-6.x
权限系统 FR-7.x
审计系统 FR-8.x
插件机制 FR-9.x
平台管理 FR-10.x

4. 功能需求详细说明(Detailed Functional Requirements)


4.1 模型中心(Model Center)

FR-1.1 领域模型创建

描述:用户可创建“实体模型(Entity)”,包含字段、类型、约束。 输入:模型名称、字段列表、校验规则。 输出:模型定义 JSON/DSL。 前置条件:用户拥有模型创建权限。 异常处理:重复字段名 → 显示错误。


FR-1.2 API 模型定义

用户可以定义 API(method、path、request、response)。


FR-1.3 导入外部模型

支持以下导入:

  • Swagger/OpenAPI JSON
  • 数据库 DDL
  • JSON Schema

流程:

  1. 上传/输入来源文件
  2. 系统解析
  3. 显示预览
  4. 用户确认导入

FR-1.4 模型版本管理

  • 每次保存自动生成版本号
  • 支持版本 Diff
  • 支持版本回滚

4.2 模板中心(Template Center)

FR-2.1 模板包上传

用户上传 zip 模板包(目录结构 + 配置文件 + 模板文件)。


FR-2.2 模板元信息配置

模板包 metadata 包含:

  • 模板类型(工程、模块、文件)
  • 语言(Java、TS、Go 等)
  • 描述、适配范围
  • 版本号

系统需要解析并展示。


FR-2.3 在线编辑模板

用户可在平台中编辑模板内容(通过 Monaco Editor)。


FR-2.4 模板预览与调试

用户可输入 mock 模型/变量,用于实时渲染模板并查看结果。


FR-2.5 模板禁用与发布流程

支持模板的审批 → 发布 → 禁用 → 下线。


4.3 DSL 引擎(DSL Engine)

FR-3.1 DSL 解析能力

支持读取 DSL 并转换为 AST,提供错误提示,包括:

  • 语法错误
  • 类型错误
  • 未定义变量

FR-3.2 模板 DSL 运行规则

支持:

  • 变量
  • 条件
  • 循环
  • 自定义函数
  • 文件路径表达式

FR-3.3 DSL 扩展机制

用户可以注册自定义函数库(Java/JS)。


4.4 代码生成器(Generator Engine)

FR-4.1 代码生成执行

流程:

  1. 选择模板
  2. 选择模型
  3. 生成文件
  4. 提供下载或直接推送 Git

FR-4.2 文件合并策略

  • 覆盖
  • 跳过
  • 智能合并(diff3)

FR-4.3 生成历史记录

每次生成需记录:

  • 模型 ID
  • 模板版本 ID
  • 文件数
  • 用户
  • 耗时
  • Git 目标

FR-4.4 生成预览

用户可在执行前预览所有将要生成/修改/覆盖的文件。


4.5 工程脚手架生成(Project Scaffolding)

FR-5.1 工程初始化

  • 用户选择工程类型(Spring Boot、Vue、React 等)
  • 系统加载模板
  • 一键生成初始工程

FR-5.2 工程插件选择

支持选择如:

  • DB
  • MQ
  • Redis
  • APM 自动生成对应目录与依赖注入代码。

4.6 Git 集成

FR-6.1 Git 仓库配置

支持配置:

  • Git URL
  • Token / SSH Key

FR-6.2 Git Push

代码生成后可提交至:

  • 指定分支
  • 新建分支

FR-6.3 合并请求(PR/MR)创建

自动创建:

  • GitLab Merge Request
  • GitHub Pull Request
  • Gitea Pull Request

4.7 权限系统(IAM 集成)

FR-7.1 资源权限

资源包括:

  • 模型
  • 模板
  • 生成记录
  • Git 凭证

权限类型:

  • 创建
  • 编辑
  • 删除
  • 查看
  • 发布

FR-7.2 数据隔离

支持按团队 / 项目维度隔离数据。


4.8 审计系统

FR-8.1 操作审计

记录以下行为:

  • 模型 CRUD
  • 模板管理行为
  • Git 操作
  • 生成行为

FR-8.2 审计查询

支持按时间、用户、对象进行筛选。


4.9 扩展插件机制

FR-9.1 插件注册

插件可扩展:

  • DSL 函数
  • 模板 Helper
  • 文件生成后置处理
  • 代码质量检测

FR-9.2 插件生命周期

  • Install
  • Enable
  • Disable
  • Update
  • Uninstall

4.10 平台管理

FR-10.1 系统配置

系统管理员可管理:

  • 模板审批流程
  • Git 全局配置
  • 全局变量
  • DS 配置

FR-10.2 使用统计分析

提供报表:

  • 模板使用次数排名
  • 生成文件规模
  • 生成失败率
  • 人员使用统计

5. 功能流程图(Flow Diagrams)

如你需要,我可以继续输出以下内容:

  • 模型创建流程图
  • 模板调试流程图
  • 生成器执行流程图
  • Git 推送流程图
  • 模板发布审批流程

(按需要生成 Mermaid 图)


6. 功能用例(Use Cases)

可输出详细 UC(Use Case Specification),示例:

UC-1:创建模型

UC-2:生成工程代码

UC-3:创建模板

UC-4:执行 Git Push

(如需我可以全部列满)


7. 验收标准(Acceptance Criteria)

基于功能需求定义验收点,例如:

  • 模型能导入 Swagger 文件并正确解析
  • 模板调试可实时预览
  • 生成器可在 5 秒内生成 200 文件
  • Git Push/PR 能正常执行
  • 模板禁用后不可使用
  • 审计记录不可删除

8. 附录(Appendix)