AI辅助编程工作流之详细设计使用指南
# 一、智能化开发工作流实施说明
# 一、流程目标
开发工作流全链路嵌入AI,主要节点如下:
- 需求转化零歧义:通过AI消除需求到技术设计的理解偏差
- 设计即开发:结构化设计文档可直接驱动代码生成
- 质量左移:通过AI单元测试实现缺陷早期拦截
# 二、开发工作流
# 1. 需求 → 详细设计(AI辅助设计)
操作流程:
- AI需求分析:将需求文档上传至AI平台(后面有专门章节说明如何使用平台),按照我们要求的模板格式自动生成:
- 业务实体关系图
- 接口字段映射表
- 数据库变更建议脚本等
- 人工把关:设计人员重点核查以下内容:
- 表结构是否符合业务扩展性要求
- 资金类字段是否设置精度约束
- 核心业务逻辑流程图是否准确
- 等等
# 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生成单元测试)
- 测试用例生成:解析业务代码自动生成:
- 正向用例(含边界值)
- 异常用例(非法参数/并发冲突)
- 智能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() 映射返回) |
# 四、关键流程
系统底层代码之间的关联关系流程图
案例:
# (一)企业信息更新关键流程
# 五、关键逻辑说明
此章节,属于核心章节,编写代码的逻辑说明,实际开发时,按照该章节逻辑进行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、基础字段的新增,例如在DTO,model中进行字段添加。2、找到对应的核心代码处,对核心业务逻辑代码进行AI编写
- 对结果进行自测验证
案例:
需求:企业信息中新增字段
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编写单元测试,覆盖所有业务场景