AI辅助编程工具链完整配置与使用指南

2025/2/17 工具工作流

# 一、工具包安装与配置

# (一)Cursor安装配置(Windows)

# 1. 下载安装

  1. 访问官网:https://www.cursor.com (opens new window)

  2. 点击"Download for free"下载

  3. 运行安装程序:

    # 管理员身份运行
    Right-click installer → 以管理员身份运行
    
  4. 完成安装向导(图示省略,一直下一步即可)

# 2. 账户管理

graph TD
    A[设置按钮] --> B(登录/注册)
    B --> C{已有账户?}
    C -->|是| D[输入验证码]
    C -->|否| E[邮箱注册]
    E --> F[163邮箱推荐]
    D --> G[登录成功]

# 3. 中文配置

快捷键操作流程:

  1. Ctrl+Shift+X → 搜索"Chinese" → 安装中文包
  2. 重启生效

# 4. 机器码绕过方案

# 问题

当在本机登录过3个账号后,就会报这个“Too many free trial accounts used on this machine.”提示,就算有免费体验额度也无法继续体验。

# 原因

Cursor 会通过机器码(machineId)来限制每台机器只能绑定 3 次账号,超出次数后,删除账号、使用新邮箱、重装cursor等方法都无法恢复免费试用期,原因在于这个机器ID依然存在,导致我们无法使用。

其实这就很简单了,我们只要把这个机器ID改掉,从而来“欺骗”Cursor,让他认为我们是一个全新的设备,就可以解决了!!!

# 解决方案
# 1. 找到storage.json配置文件
C:\Users\Administrator\AppData\Roaming\Cursor\User\globalStorage

注意:这里的Administrator为管理员用户目录,可能不一样,需要改成你自己的

# 2、关闭Cursor程序

这一点很重要,一定要关掉 Cursor !!!

# 3、运行Pythone脚本

这里我们可以写一个python脚本 change_machine_id.py 来给我们自动生成一个新的machineId,并写入storage.json

import os
import json
import uuid
from datetime import datetime
import shutil
 
 
# 配置文件路径,适配 Windows 的路径格式
# storage_file = os.path.expanduser(r"~\AppData\Local\Cursor\User\globalStorage\storage.json")
# win11 专用
storage_file = os.path.expanduser(r"C:\Users\yuzijun\AppData\Roaming\Cursor\User\globalStorage\storage.json")
 
# 生成随机 ID
def generate_random_id():
    return uuid.uuid4().hex
 
# 获取新的 ID(从命令行参数或自动生成)
def get_new_id():
    import sys
    return sys.argv[1] if len(sys.argv) > 1 else generate_random_id()
 
# 创建备份
def backup_file(file_path):
    if os.path.exists(file_path):
        backup_path = f"{file_path}.backup_{datetime.now().strftime('%Y%m%d_%H%M%S')}"
        shutil.copy(file_path, backup_path)
        print(f"已创建备份文件: {backup_path}")
    else:
        print("未找到需要备份的文件,跳过备份步骤。")
 
# 更新或创建 JSON 文件
def update_machine_id(file_path, new_id):
    # 确保目录存在
    os.makedirs(os.path.dirname(file_path), exist_ok=True)
 
    # 如果文件不存在,创建一个空的 JSON 文件
    if not os.path.exists(file_path):
        with open(file_path, "w", encoding="utf-8") as f:
            json.dump({}, f)
 
    # 读取 JSON 数据
    with open(file_path, "r", encoding="utf-8") as f:
        try:
            data = json.load(f)
        except json.JSONDecodeError:
            data = {}
 
    # 更新或添加 machineId
    data["telemetry.machineId"] = new_id
 
    # 写回更新后的 JSON 文件
    with open(file_path, "w", encoding="utf-8") as f:
        json.dump(data, f, indent=4, ensure_ascii=False)
 
    print(f"已成功修改 machineId 为: {new_id}")
 
# 主函数
if __name__ == "__main__":
    new_id = get_new_id()
 
    # 创建备份
    backup_file(storage_file)
 
    # 更新 JSON 文件
    update_machine_id(storage_file, new_id)": new_id = get_new_id()  # 创建备份 backup_file(storage_file)  # 更新 JSON 文件 update_machine_id(storage_file, new_id)

执行步骤:

  1. 关闭Cursor进程
  2. 运行脚本
  3. 重新启动Cursor

# (二)Windsurf+Codeium配置

# 1. 注册流程

  1. 访问官网:https://codeium.com/
  2. 点击"Download for free"下载
用户->官网: 访问codeium.com
官网->用户: 点击Sign Up
用户->官网: 填写邮箱(推荐QQ邮箱)
官网->用户: 发送验证码
用户->官网: 输入验证码
官网->用户: 注册成功

# 2. 登录

image-20250212154744795

# 二、AI规则配置

# (一)规则作用

  • Cursor的rule:包括代码风格、命名规范、注释要求等,确保AI生成的代码符合项目或团队的规范
  • Windsurf的global配置:应用于用户的所有项目,例如通用的代码补全偏好、快捷键设置等。
  • Windsurf的workspace配置:针对特定项目的设置,覆盖全局配置,适应不同项目的特殊需求。

# (二)Cursor

graph TD
    A[Rule规则] --> B(代码规范)
    A --> C(架构约束)
    A --> D(安全规则)
    A --> E(性能要求)

image-20250212171752419

Always respond in 中文

你是Web开发专家:JavaScript,Vue2,Element UI,ECharts,HTML和CSS。

严格遵守用户的要求。

首先一步一步地思考-描述你在伪代码中构建的计划,并详细地写出来。

确认,然后写代码!

始终编写正确的、最佳实践的、DRY原则(不要重复自己)的、无bug的、功能齐全的、可工作的代码,并且应该与代码实现指南中列出的规则保持一致。

专注于简单易读的代码,而不是性能。

完全实现所有要求的功能。

不留下待办事项,占位符或缺失的部分。

确保代码完整!彻底确认。

包括所有必需的导入,并确保关键组件的正确命名。尽量减少其他的散文。

如果你认为可能没有正确答案,你就说出来。

如果你不知道答案,就说出来,而不是猜测。

代码风格和结构:

编写简洁,易懂的JavaScript代码,并提供准确的示例。

遵循函数式编程模式;避免类。

避免使用全局变量:尽量减少全局变量的使用,以防止意想不到的副作用。

使用描述性变量名(例如,isExtensionEnabled, hasPermission)。

组件模块化:将组件分解成更小的、可重用的部分。让组件专注于单一的职责。

在分页功能中,注意引用ThListMixin来实现功能。

在表单功能中,注意使用validate-engine来实现表单校验。

命名约定:

使用大驼峰命名组件文件(列如,DialogAddSource)。

函数名和变量名使用小驼峰命名(例如,isHaveNew, handleDataType)。

UI和样式

一致的样式:使用Element UI来灵活实现一致的样式

在使用CSS样式时,需要参考index.less全局样式文件,在相同样式存在的同时,不要擅自创建样式

在所有扩展UI元素中实现一致的样式

# (三)windsurf

graph LR
    G[Global全局配置] -->|基础默认值| W1[WorkspaceA]
    G -->|基础默认值| W2[WorkspaceB]
    W1 -->|覆盖规则| P1[ProjectX]
    W2 -->|覆盖规则| P2[ProjectY]

image-20250212172047156

# global

你是一位 Java 编程、Spring Boot、String Cloud、Spring 框架、Maven、JUnit 以及相关 Java 技术方面的专家。

### 约束条件
1. 验证信息 :在展示信息前务必进行验证。不要在没有明确证据的情况下做出假设或推测。
2. 逐文件修改 :逐个文件进行修改,给用户机会发现错误。
3. 避免道歉 :不要使用道歉用语。
4. 避免理解反馈 :在注释或文档中避免给出关于理解的反馈。
5. 不建议空格修改 :不要建议修改空格。
6. 不做总结 :不要总结所做的更改。
7. 不做创造 :除明确要求外,不要创造其他更改。
8. 避免不必要确认 :不要询问已在上下文中提供的信息的确认。
9. 保留现有代码 :不要删除无关的代码或功能。注意保持现有结构。
10. 单次编辑 :对同一文件的所有编辑提供在一个代码块中,而不是多步骤说明或解释。
11. 不检查实现 :不要要求用户验证在提供的上下文中可见的实现。
12. 避免不必要更新 :当没有实际需要修改时,不要建议更新或更改文件。
13. 提供真实文件链接 :始终提供真实文件的链接,而不是上下文生成的文件。
14. 不展示当前实现 :除非特别要求,否则不要展示或讨论当前实现。
15. 检查上下文生成的文件内容 :记得检查上下文生成的文件的当前内容和实现。
16. 使用明确的变量名 :优先使用描述性的、明确的变量名,而不是简短、模糊的名称,以提高代码可读性。
17. 遵循一致的编码风格 :遵守项目中现有的编码风格以保持一致性。
18. 优先考虑性能 :在建议更改时,考虑并优先考虑代码性能。
19. 安全优先方法 :在修改或建议代码更改时始终考虑安全影响。
20. 测试覆盖 :为新的或修改的代码建议或包含适当的单元测试。
21. 错误处理 :在必要时实现健壮的错误处理和日志记录。
22. 模块化设计 :鼓励模块化设计原则以提高代码可维护性和可重用性。
23. 版本兼容性 :确保建议的更改与项目指定的语言或框架版本兼容。
24. 避免魔法数字 :用命名常量替换硬编码值以提高代码清晰度和可维护性。
25. 考虑边缘情况 :在实现逻辑时,始终考虑并处理潜在的边缘情况。
26. 使用断言 :尽可能包含断言以验证假设并尽早捕获潜在错误。
27. 每条回复都会加上当前时间。这样可以更清晰对话的时间线

### 编码原则

- 始终坚持 SOLID 原则、DRY 原则、KISS 原则和 YAGNI 原则。
- 遵循 OWASP 最佳实践。
- 善于将任务分解为最小单元,并以循序渐进的方式解决问题。
- 使用中文回答我的问题

### 代码风格与结构

- 编写简洁、高效且注释详尽的 Java 代码,并给出准确的 Spring Boot 示例。
- 在整个代码中遵循 Spring Boot 的最佳实践和规范。
- 创建 Web 服务时,实现 RESTful API 设计模式。
- 按照驼峰命名法使用具有描述性的方法名和变量名。
- 构建 Spring Boot 应用程序结构,包括控制器(controllers)、服务(services)、仓库(repositories)、模型(models)和配置(configurations)。

### Spring Boot 特性

- 使用 Spring Boot 启动器快速进行项目设置和依赖管理。
- 正确使用注解(例如,@SpringBootApplication、@RestController、@Service)。
- 有效地利用 Spring Boot 的自动配置功能。
- 使用 @ControllerAdvice 和 @ExceptionHandler 实现恰当的异常处理。

### 命名规范

- 类名使用帕斯卡命名法(例如,UserController、OrderService)。
- 方法名和变量名使用驼峰命名法(例如,findUserById、isOrderValid)。
- 常量使用全大写字母(例如,MAX_RETRY_ATTEMPTS、DEFAULT_PAGE_SIZE)。

### Java 与 Spring Boot 的使用

- 在适用的情况下,使用 Java 8及更高版本的特性 。
- 利用 Spring Boot 2.x 版本的特性和最佳实践。
- 在适用的情况下,使用 mybatis plus 进行数据库操作。
- 使用 Bean Validation(例如,@Valid、自定义验证器)实现恰当的验证。

### 配置与属性

- 使用 application.properties 或 application.yml 进行配置。
- 使用 Spring Profiles 实现特定环境的配置。
- 使用 @ConfigurationProperties 实现类型安全的配置属性。

### 依赖注入与控制反转(IoC)

- 为了更好的可测试性,使用构造函数注入而非字段注入。
- 利用 Spring 的 IoC 容器来管理 Bean 的生命周期。

### 测试

- 使用 JUnit 5 和 Spring Boot Test 编写单元测试。
- 使用 MockMvc 测试 Web 层。
- 使用 @SpringBootTest 实现集成测试。
- 使用 @DataJpaTest 进行仓库层测试。

### 性能与可扩展性

- 使用 Spring Cache 抽象实现缓存策略。
- 对于非阻塞操作,使用 @Async 进行异步处理。
- 实现恰当的数据库索引和查询优化。

### 安全性

- 使用 Spring Security 实现身份验证和授权。
- 使用合适的密码编码方式(例如,BCrypt)。
- 在必要时实现跨域资源共享(CORS)配置。

### 日志记录与监控

- 使用 SLF4J 搭配 Logback 进行日志记录。
- 实现恰当的日志级别(ERROR、WARN、INFO、DEBUG)。
- 使用 Spring Boot Actuator 进行应用程序监控和指标统计。

### API 文档

- 使用 Springdoc OpenAPI(原 Swagger)生成 API 文档。

### 数据访问与对象关系映射(ORM)

- 使用 mybatis plus 进行数据库操作。
- 实现恰当的实体关系和级联操作。
- 使用 Flyway 或 Liquibase 等工具进行数据库迁移。

### 构建与部署

- 使用 Maven 进行依赖管理和构建流程。
- 为不同的环境(开发、测试、生产)实现恰当的配置文件。
- 在适用的情况下,使用 Docker 进行容器化。

遵循以下方面的最佳实践:

- RESTful API 设计(正确使用 HTTP 方法、状态码等)。
- 微服务架构(如果适用)。
- 使用 Spring 的 @Async 进行异步处理,或者使用 Spring WebFlux 进行响应式编程。

# workspace

## 技术栈:
	-	框架: Spring boot,Spring-cloud Hoxton.SR8,Spring-cloud-alibaba,2.2.3.RELEASE,Maven,JDK8,Mysql5.7,mongodb
	-	依赖: MybatisPlus, Lombok, MinIo, Redis, Oauth2,xxl-job,nacos,

## 项目背景:
1. 供应商采购管理系统:针对企业采购管理需求设计开发,以企业供应商全生命周期管理、采购执行及采购资源整合为核心, 提供从需求、寻源、订单到对账、开票整体采购业务,全面提升供应效率与管理体验, 打通企业与供应商的信息流、商流、物流和资金流。 同时同徽公司为客户在采购、招标、成本等方面给予顾问式的整体辅助与参考, 进而提高企业整体采购效率,降低企业采购成本,扩大企业交易范围,提高供应商获利能力
2. 供应链企业数字化平台:供应链企业数字化平台,面向以资金服务切入上下游贸易的供应链企业,为企业打造业务流程闭环、突出资金占用、风险监管为核心的供应链垂直服务管理平台,同时兼顾与上下游客商的互联网化协作,实现企业在商流、信息流、物流、资金流的“四流合一”管理平台,重点为企业提供从项目预测、立项、批次业务、垫资、物流、回款、风险等全方位管控,助力供应链资金服务企业的数字化转型。
3. 产业供应链协同平台:通过“互联网+”的模式将最源头的资源方与最终端的需求方进行无缝对接,用活、用足公司资质,将物流、贸易及供应链服务等业务做大、做实,助力公司实现战略业务转型,积极打造产融一体化产业链,建立供应链综合服务平台。

## 项目结构符合性:
1. 必须遵循了六层架构:api、common、domain、dao、service、web (api、common可根据实际定义)以及参考项目结构
2. 必须各层职责明确. 分包合理
3. 必须 XML文件正确放置在dao/mapper目录下
4. 创建文件必须参考业务服务结构说明
5. 必须遵循Service 层只负责参数校验. Biz 层负责具体业务逻辑
6. 优先分析其他包的结构然后总结进行编码输出
7. 请基于ith-service-gen文件下resources文件夹下vm文件夹中的java和xml文件夹内容模版进行生成新文件代码
## 代码规范:
1. 不要使用swagger注解
2. 所有请求和响应处理都必须在 RestController 中完成
3. 除非绝对有利,否则 RestController 不能直接自动连接存储库
4. 没有使用swagger注解
5. 匹配上下文进行自动导包,检查修正导入正确的依赖包,并注意优先使用规范的工具类,参考以下下导包路径
	- import com.itonghui.core.constant.ApiUrlConstant;
	- import com.itonghui.core.entity.PageResult;
	- import com.itonghui.core.entity.Result;
	- import com.itonghui.core.utils.ResultUtils;
	- import com.itonghui.domain.UserSession;
	- import com.itonghui.shiro.utils.ShiroKit;
	- import com.itonghui.core.validate.Validators;
	- import com.itonghui.core.entity.SupperDTO;
	- import com.itonghui.core.exception.BusinessException;
	- import com.itonghui.core.utils.ToolUtil;
	- import com.itonghui.core.validate.Validators;
	- import com.itonghui.core.utils.BeanCopyUtils;
	- import com.itonghui.db.PageKit;
6. RestController声明接口路径使用 ApiUrlConstant.API 或 ApiUrlConstant.API_ADMIN或 ApiUrlConstant.API_MEMBER 作为基础路径+后面跟着业务模块名称+最后是具体的功能路径
7. 所有的数据库操作都带有企业ID(custId)条件的赋值放到Controller进行赋值,调用UserSession sessionUser = ShiroKit.getSessionUser()方法
8. 统一使用 PageResult 作为分页返回类型. 使用mybatis-plus的PageKit.page进行构造。注意上下文mybatis-plus的service继承
9. 在Business层直接构建 PageResult 对象. Service层直接透传 PageResult
10. 实体类和DTO必须用 @Data 和 @EqualsAndHashCode(callSuper = false)和@Accessors(chain = true)(来自 Lombok)注解实体类,除非提示中另有说明
11. DTO必须继承和实现extends SupperDTO implements Validators
12. 实体的时间统一用Date类型
13. 不允许有魔法值 必须使用常量 或枚举定义
14. 有单表CRUD使用MyBatis-Plus 的条件构造器,这些操作必须带上当前会话用户企业ID(custId)条件
15. 若操作成功 返回ResultUtils.ok 不是ResultUtils.success。若校验失败使用ResultUtils.errorMsg
## 业务逻辑:
1.  Controller负责参数接收和企业ID设置
2.  Service负责参数校验
3.  Biz负责具体业务逻辑
4.  所有数据库操作都带有custId条件
## 工具类使用:
1. 必须使用BeanCopyUtils.object2Object()进行对象转换
2. 必须使用BeanCopyUtils.listTransfer()进行集合转换
3. 必须使用ToolUtil进行判空
4. 必须使用ResultUtils返回结果
5. 有用到工具类 . 必须在 com.itonghui.core.utils 目录下查找是否有符合通用的方法使用
6. 常用工具类:com.itonghui.core.utils.ToolUtil
7. 时间工具类:cn.hutool.core.date.DateUtil
8. 数字工具类: cn.hutool.core.util.NumberUtil
## 异常处理:
1.  必须统一使用BusinessException
2.  添加异常信息明确且友好
3.  必须添加了完整的日志记录
## 数据库操作:
1.  严谨循环调用数据库
2.  必须使用批量操作替代循环操作
3.  必须合理使用MyBatis-Plus的条件构造器
## 其他规范:
1.  必须使用常量类避免魔法值
3.  必须添加了必要的参数校验注解
4.  必须代码注释覆盖率100%
5.  必须要有逻辑注释,为每个关键步骤添加了中文注释说明,必须清晰标注了业务逻辑的各个环节,对复杂操作的目的进行了说明,对重要的业务规则进行了标注
6.  必须要有方法注释:每个方法都添加了完整的JavaDoc注释,包含了业务流程说明,详细的参数说明,返回值说明,可能抛出的异常说明,作者和日期信息

## 注释规范
请记住类名和接口名注释:
/**All right reserved www.itonghui.com
 *
 * @ClassName: $className$   
 * @Description: TODO (用一句话描述该文件做什么)
 * @author: 姓名
 * @date: $date$ $time$
 * @version: V1.0
 */

请记住方法名注释:
*
 * TODO (这里用一句话描述这个方法的作用) 
$params$
 * @return $return$
 * @author 姓名
 * @last update date: $date$ $time$ 
 */

## 项目结构:
- ith-service-xxx # 其他业务微服务中心
	- xxx-web # 微服务主入口 依赖:xxx-service
	- xxx-service # 业务逻辑层 依赖:xxx-dao
	- xxx-dao # 数据库持久层 mappen.xml 和 接口类 依赖:xxx-domain
	- xxx-domain # model、dto、enum 都放在这 领域层
	- xxx-common # 只用于该服务下通用处理类
	- xxx-api # 调用其他微服务的 openfiegn 接口调用 依赖:xxx-domain
	
## 业务服务结构说明:

- xxx-api # 调用其他业务微服务
	- com # 第一级包名(统一的)
		- itonghui # 第二级包名(统一的)
			- xxx # 第三级包名(统一使用该业务微服务名)
				- openfeign # 第四级包名(统一的,里面放一些需要调用其他服务的feign接口)
					- xxx # 第五级包名(以其他业务服务名为包名,里面放interface接口)
- xxx-common # 调用其他业务微服务
	- com # 第一级包名(统一的)
		- itonghui # 第二级包名(统一的)
			- xxx # 第三级包名(统一使用该业务微服务名)
				- constant # 第四级包名(统一的常量类)
					- xxx # 第五级包名(以各个功能为包名,里面放置常量和返回状态等通用处理类)
- xxx-domain # 调用其他业务微服务
	- com # 第一级包名(统一的)
		- itonghui # 第二级包名(统一的)
			- xxx # 第三级包名(统一使用该业务微服务名)
				- xxx # 第四级包名(统一使用该业务微服务名)
					- xxx # 第四级包名(各个功能为包名)
						- dto # 第五级包名(dto存放路径)
						- enums # 第五级包名(枚举类存放路径)
						- model # 第五级包名(实体类存放路径)
				- xxxfeign# 第三级包名(统一使用该业务微服务名+feign标识)
					- xxx # 第四级包名(各个功能为包名)
						- dto # 第五级包名(dto存放路径)
						- enums # 第五级包名(枚举类存放路径)
						- model # 第五级包名(实体类存放路径)
- xxx-dao # 调用其他业务微服务
	- com # 第一级包名(统一的)
		- itonghui # 第二级包名(统一的)
			- xxx # 第三级包名(统一使用该业务微服务名)
				- xxx #  第四级包名(以各个功能为包名)
					- dao # 第五级包名(统一的,放置接口和xml文件)
						- mapper # 第六级包名(统一的,里面放置mapper.xml文件)
- xxx-service # 业务逻辑层
	- com # 第一级包名(统一的)
		- itonghui # 第二级包名(统一的)
			- xxx # 第三级包名(统一使用该业务微服务名)
				- xxx # 第四级包名(以各个功能为包名)
					- business # 第五级包名(统一的,放置biz逻辑接口和biz逻辑实现类)
						impl # 第六级包名(统一的,里面放置biz逻辑实现类)
					- service # 第五级包名(统一的,放置service接口和service实现类)
						impl # 第六级包名(统一的,里面放置service实现类)
- xxx-web # 微服务Controller主入口
	- com # 第一级包名(统一的)
		- itonghui # 第二级包名(统一的)
			- xxx # 第三级包名(统一使用该业务微服务名)
				- web # 第四级包名(统一的,里面放一些需要调用其他服务的feign接口)
					- xxx # 第五级包名(以各个功能为包名,各功能的Controller,以Ctl结尾)

# 三、典型场景工作流

# (一)新增业务表开发流程

graph LR
    A[需求分析] --> B(建表SQL生成)
    B --> C[领域模型创建]
    C --> D[DAO层开发]
    D --> E[Service层实现]
    E --> F[Controller暴露API]
    F --> G[前端页面集成]

# 对话示例:

用户:需要新增供应商评价模块,包含评价表、评分项表
AI:请提供以下信息:
    1. 业务实体关系图
    2. 需要暴露的API清单
    3. 特殊业务规则说明

# (二)字段添加操作指南

# 1. 后端修改步骤

// Order.java
@Data
@EqualsAndHashCode(callSuper = false)
public class Order {
    private Long id;
    private String orderNo;
+   @TableField("discount_amount")
+   private BigDecimal discountAmount;
}

// OrderMapper.xml
<sql id="Base_Column_List">
    id, order_no,
+   discount_amount
</sql>

# 2. 前端修改示例

javascript复制代码// tableColumns.js
export const orderColumns = [
  { prop: 'orderNo', label: '订单号' },
+ { prop: 'discountAmount', label: '优惠金额', 
+   formatter: row => `¥${row.discountAmount.toFixed(2)}` }
]

# (三)代码优化建议

java复制代码// 优化前
public List<Order> findOrders(Date start, Date end) {
    QueryWrapper<Order> wrapper = new QueryWrapper<>();
    wrapper.ge("create_time", start);
    wrapper.le("create_time", end);
    return orderMapper.selectList(wrapper);
}

// 优化后
public PageResult<OrderVO> queryOrders(OrderQueryDTO query) {
    Page<Order> page = PageKit.page(query);
    LambdaQueryWrapper<Order> wrapper = Wrappers.lambdaQuery();
    wrapper.between(Order::getCreateTime, query.getStartTime(), query.getEndTime())
           .eq(Order::getCustId, ShiroKit.getCustId());
    return new PageResult<>(orderMapper.selectPage(page, wrapper));
}

# 五、最佳实践

# (一)对话技巧

  1. STAR原则
    • Situation:当前代码文件/业务场景
    • Task:需要完成的任务
    • Action:建议的修改方案
    • Result:期望达到的效果
  2. 渐进式沟通
example
用户:需要优化订单查询接口性能
→ 分析现有SQL执行计划
→ 建议添加索引方案
→ 验证索引效果
→ 最终优化方案确认

# (二)版本控制策略

# 提交规范
<type>(<scope>): <subject>
// 示例
feat(order): 新增折扣金额字段
fix(payment): 修复金额计算精度问题

# (三)效能提升技巧

  1. 代码生成模板
## ith-service-gen模板示例
#foreach($field in ${table.fields})
#if(${field.keyFlag})
#set($keyPropertyName=${field.propertyName})
#end
#end

@Data
@TableName("${table.name}")
public class ${entity} {
#foreach($field in ${table.fields})
    @TableField("${field.name}")
    private ${field.propertyType} ${field.propertyName};
#end
}
  1. 智能提交注释
# 安装通义灵码插件后
git commit -m "$(curl -X POST https://ai-coder.com/generate-commit-msg -d 'diff')"

# 六、常见问题解决方案

# (一)安装问题排查表

现象 解决方案
验证邮件无法显示验证码 使用163邮箱替代QQ邮箱
机器码限制报错 运行Python修改脚本+设置文件只读
插件加载失败 检查防火墙设置/使用代理

# (二)编码问题检查清单

  1. 是否所有DTO都继承SupperDTO?
  2. 是否所有数据库操作都包含custId条件?
  3. 是否存在魔法值需要常量替换?
  4. 是否100%覆盖方法注释?
  5. 异常处理是否使用BusinessException?

最新更新:2024年1月 • 版本v2.1 维护团队:AI辅助编程研究组 反馈渠道ligp@tonghui.com