AI辅助编程工作流之详细设计使用指南

2025/2/17 工具工作流

# 一、智能化开发工作流实施说明

# 一、流程目标

开发工作流全链路嵌入AI,主要节点如下:

  • 需求转化零歧义:通过AI消除需求到技术设计的理解偏差
  • 设计即开发:结构化设计文档可直接驱动代码生成
  • 质量左移:通过AI单元测试实现缺陷早期拦截

# 二、开发工作流

# 1. 需求 → 详细设计(AI辅助设计)

操作流程

  1. AI需求分析:将需求文档上传至AI平台(后面有专门章节说明如何使用平台),按照我们要求的模板格式自动生成:
    • 业务实体关系图
    • 接口字段映射表
    • 数据库变更建议脚本等
  2. 人工把关:设计人员重点核查以下内容:
    1. 表结构是否符合业务扩展性要求
    2. 资金类字段是否设置精度约束
    3. 核心业务逻辑流程图是否准确
    4. 等等

# 2、详细设计 → 代码生成(AI模型 claude 3.5 Sonnet)

操作规范:

  • 提示词模版:按照<场景>__《输入》__《期望输出》__<约束>格式描述逻辑(完整规则待后续输出)

  • 案例:

采购商企业资料增加字段
/api/member/user/company/updatebasic方法
- ConsummateCompanyDTO、Company、CompanyAuth、CompanyDTO类增加conpanyType String类型 注释:企业类型:1: 超市 2:学校 3:摊主个体户
- SaasCompanyConstant 类中增加 COMPANGY_TYPE 企业类型
- companyDTO 中增加 conpanyTypeStr字段,用于接收数据字典的中文说明
- companyMapper.updateNotAuditByPrimaryKeySelective(Company**record);
- companyAuthMapper.updateByPrimaryKeySelective(companyAuth);两个对应mapper增加对应修改sql;

api/member/user/company/queryupdatecompanydetail 增加对应的企业类型的展示,在getDicInfo()方法中
数据字典获取仿写
// 企业来源
*if(*ToolUtil*.*isNotEmpty*(*companyDTO*.getSource())) {
    *Map*<*String*,*SysDic*> sourceTextMap = *dicMap*.get(*SaasCompanyConstant*.COMPANGY_TYPE);
    if(*ToolUtil*.*isNotEmpty*(sourceTextMap)) {
       if(*ToolUtil*.*isNotEmpty*(sourceTextMap.get(*companyDTO*.getSource().toString()).getCodeText())){
          *companyDTO*.setSourceText(sourceTextMap.get(*companyDTO*.getSource().toString()).getCodeText());
       }
    }
}
  • 生成策略
    • 80%基础代码由AI生成(CRUD/校验逻辑)
    • 20%复杂逻辑由开发者补充(账单核算)

质量保障:

  • 敏感操作强制生成日志代码

# 3、开发 → 自测(AI生成单元测试)

  1. 测试用例生成:解析业务代码自动生成:
    • 正向用例(含边界值)
    • 异常用例(非法参数/并发冲突)
  2. 智能Mock
    • 自动构建SpringBootTest基类
    • 外部服务调用通过MockServer实现

# 三、开发行为范式升级

传统模式 智能开发模式 能力要求转变
人工编写详细设计文档 AI生成文档+人工校准关键设计点 架构评审能力 ≥ 文档能力
手工编写基础CRUD代码 AI生成代码+人工补充业务逻辑 业务抽象能力 ≥ 编码量
手动编写单元测试 AI生成测试用例+人工补充场景覆盖率 测试设计能力 ≥ 用例数量

# 四、注意事项

AI无论是编写文档,编写代码,还是编写单元测试,都会存在幻觉现象,越到细节处出现的概率就会越大,所以在使用AI时不要过度使用AI,若幻觉出现,我们应当人工调整,我们使用AI的核心目的是提升效率,若幻觉出现,依然和它进行对话,效率提升会适得其反

# 二、详细设计模板

# 一、需求分析

# (一)功能需求

说明:此处编写需求文档中的需求

案例:

1、采购商角色企业资料管理中新增企业性质字段(必填项),下拉选择 学校超市摊主个体户

2、企业资料中可查看对应企业性质

# (二)非功能需求

针对性能,数据一直性,扩展性等非功能性的需求说明

案例:

1、数据一致性:企业认证表与企业主表字段同步

2、扩展性:未来选项变更只需修改数据字典,无需代码改动

# 二、数据库设计

表结构新增,表结构变更,索引设计,数据初始化,老数据兼容脚本设计等与数据库相关设计在此章节

案例:

  • 表结构变更
ALTER TABLE `company` ADD COLUMN `enterprise_type` VARCHAR(32) NOT NULL COMMENT '企业性质(关联sys_dic.code_)';
ALTER TABLE `company_auth` ADD COLUMN `enterprise_type` VARCHAR(32) NOT NULL COMMENT '企业性质';

  • 索引设计(可选)
CREATE UNIQUE INDEX idx_type_code ON sys_dic(type_, code_);  -- 字典类型+编码唯一索引
  • 数据初始化
INSERT INTO sys_dic(type_, code_, code_text, enable_) VALUES 
('enterpriseTypeCode', 'SCHOOL', '学校', 1),
('enterpriseTypeCode', 'SUPERMARKET', '超市', 1),
('enterpriseTypeCode', 'VENDOR', '摊主个体户', 1);

# 三、接口设计

必要参数:服务名称,接口名称,接口字段

案例:

服务:ith-service-user

接口地址 HTTP 方法 参数
/api/member/company/updatebasic POST { ..., "companyType": 1 }
/api/member/company/querydetail GET { ..., "companyTypeStr": "超市" }(通过getDicInfo()映射返回)

# 四、关键流程

系统底层代码之间的关联关系流程图

案例:

# (一)企业信息更新关键流程

image-20250214171733200

# 五、关键逻辑说明

此章节,属于核心章节,编写代码的逻辑说明,实际开发时,按照该章节逻辑进行AI化拆解

案例:

1、/api/member/user/company/updatebasic接口中关于dto以及model中增加字段conpanyType 注释:企业类型:1:超市 2:学校 3:摊主个体户; 2、若存在sql.xml文件需在文件中增加conpanyType字段相关代码 3、企业资料详细页面查看方法(api/member/user/company/queryupdatecompanydetail)中将该字段进行数据字典方法匹配(数据字典查看方法参考getDicInfo()方法) 用conpanyTypeStr字段进行赋值返回前端 前端用于接收回显。

# 六、测试策略

案例:

  • 测试用例1
    • 输入:companyType=2
    • 期望:数据库存储值正确,详情接口返回 companyTypeStr="学校"
  • 测试用例2
    • 输入:companyType=5
    • 期望:接口返回参数错误(校验字典值合法性)

# 三、核心业务逻辑AI拆解(开发)

设计人员设计完成之后,在正式开发时对业务核心逻辑进行AI能快速识别的逻辑拆解;

# (一)、场景提示语拆解

# 1、业务修改场景

由于修改场景包含若干细节,例如在某个接口上进行新增字段的展示,但在该接口中存在的代码有几千行,分布在不用的包中,若直接要求ai进行修改,它会扫描所有的方法导致效率降低,因此若要ai快速响应我们的需求可按照下面统一分解步骤进行AI辅助编写

  1. 拿到对应的详细设计中的核心逻辑。
  2. 对逻辑进行拆解,分为 1、基础字段的新增,例如在DTO,model中进行字段添加。2、找到对应的核心代码处,对核心业务逻辑代码进行AI编写
  3. 对结果进行自测验证

案例:

​ 需求:企业信息中新增字段

​ AI拆解话术

1、以下类中增加字段
ConsummateCompanyDTO、Company、CompanyAuth、CompanyDTO类增加conpanyType String类型 注释:企业类型:1: 超市 2:学校 3:摊主个体户
SaasCompanyConstant 类中增加 COMPANGY_TYPE 企业类型
companyDTO 中增加 conpanyTypeStr字段,用于接收数据字典的中文说明
2、/api/member/user/company/updatebasic方法中companyMapper.updateNotAuditByPrimaryKeySelective(Company**record);companyAuthMapper.updateByPrimaryKeySelective(companyAuth);两个对应mapper增加对应修改sql;
3、api/member/user/company/queryupdatecompanydetail 增加对应的企业类型的展示,在getDicInfo()方法中仿照以下代码
// 企业来源
*if(*ToolUtil*.*isNotEmpty*(*companyDTO*.getSource())) {
    *Map*<*String*,*SysDic*> sourceTextMap = *dicMap*.get(*SaasCompanyConstant*.COMPANGY_TYPE);
    if(*ToolUtil*.*isNotEmpty*(sourceTextMap)) {
       if(*ToolUtil*.*isNotEmpty*(sourceTextMap.get(*companyDTO*.getSource().toString()).getCodeText())){
          *companyDTO*.setSourceText(sourceTextMap.get(*companyDTO*.getSource().toString()).getCodeText());
       }
    }
}

# 2、业务新增场景

新增场景定义:新增表结构,新增模块,新增逻辑

1、通读详细设计,确定核心逻辑

2、针对需要新增基本类,例如model,dto,mapper,ctl,service,enums等,定义到对应的位置,让AI帮我们生成;

3、新增对应业务核心接口方法,让ai分别在对应类中自动生成

4、在对应方法中,输入确定的核心逻辑,让AI自动生成

5、微调核心逻辑方法,检查整体代码

6、让ai编写单元测试,覆盖所有业务场景