datai-vue/.trae/skills/phase6-code-generation/SKILL.md
Kris a66ecad0f9 feat: 修复初始化从库接口参数并完善环境管理功能
- 更新 environment.js 中 initSlaveDatasource 函数参数从 environmentCode 改为 environmentId
- 更新 SourceEnvironmentTab.vue 中的初始化从库功能以使用 environmentId
- 在 TargetEnvironmentTab.vue 中添加完整的初始化从库功能
- 初始化项目单一真源(SSOT)文档结构,包括:
  - 创建主 index.md 作为项目单一真源
  - 创建 Authentication.canvas 可视化文件
  - 创建所有必需的文档目录和 README.md 文件
  - 建立完整的双向索引关系
2026-01-26 17:23:15 +08:00

712 lines
25 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
name: phase6-code-generation
description: 在 Datai 项目中,基于已创建的需求文档、设计文档、决策记录和提示词,生成符合项目规范的代码文件,并更新索引和会话记录。此技能确保代码生成的准确性和规范性。
---
# 阶段 6执行代码生成技能书
## A. 元数据 (Metadata)
**name**: `phase6-code-generation`
**description**: 在 Datai 项目中,基于已创建的需求文档、设计文档、决策记录和提示词,生成符合项目规范的代码文件,并更新索引和会话记录。此技能确保代码生成的准确性和规范性。
---
## B. 触发与定位 (Triggers & Scope)
### 触发关键词
当用户输入包含以下关键词时,必须觉醒此技能:
- "执行代码生成"、"生成代码"、"代码生成"
- "进入阶段 6"、"下一阶段"
- "代码"、"实现"、"开发"
### 触发场景
- 用户确认阶段 5 完成,要求进入阶段 6
- 用户要求生成代码
- 用户询问如何执行代码生成
- 用户提到"按照项目规则"或"SSOT 流程"进行代码生成
### 操作路径
此技能涉及以下文件和目录的操作:
- **读取**: `docs/requirements/YYYY-MM-DD-00X-需求名.md` (阶段 1 创建的需求文档)
- **读取**: `docs/design/YYYY-MM-DD-00X-设计名.md` (阶段 2 创建的设计文档)
- **读取**: `docs/decisions/YYYY-MM-DD-00X-ADR-决策名.md` (阶段 3 创建的决策记录)
- **读取**: `docs/prompts/YYYY-MM-DD-00X-prompt-提示词名.md` (阶段 5 创建的提示词)
- **读取**: `docs/sql/YYYY-MM-DD-00X-表名.sql` (阶段 4 创建的 SQL 文件)
- **读取**: `datai-models/datai-generator/` 目录下的代码生成器模板
- **扫描**: 项目目录下已生成的代码文件(检查代码生成器是否已生成基础代码)
- **创建**: 项目目录下的 Java 代码文件(根据提示词要求)
- **更新**: `docs/index.md`
- **更新**: `docs/design/YYYY-MM-DD-00X-设计名.md` (标记代码实现状态)
- **更新**: `docs/sessions/YYYY-MM-DD-00X-session.md`
- **读取**: `.trae/rules/project_rules.md` (项目规则)
### SSOT 依赖
必须参考以下"唯一真源"
- [需求文档](file:///d:\idea_demo\datai\docs\requirements\YYYY-MM-DD-00X-需求名.md) - 阶段 1 创建的需求文档
- [设计文档](file:///d:\idea_demo\datai\docs\design\YYYY-MM-DD-00X-设计名.md) - 阶段 2 创建的设计文档
- [决策记录](file:///d:\idea_demo\datai\docs\decisions\YYYY-MM-DD-00X-ADR-决策名.md) - 阶段 3 创建的决策记录
- [SQL 文件](file:///d:\idea_demo\datai\docs\sql\YYYY-MM-DD-00X-表名.sql) - 阶段 4 创建的 SQL 文件
- [提示词](file:///d:\idea_demo\datai\docs\prompts\YYYY-MM-DD-00X-prompt-提示词名.md) - 阶段 5 创建的提示词
- [project_rules.md](file:///d:\idea_demo\datai\.trae\rules\project_rules.md) - 项目规则和阶段定义
---
## C. 核心指令集 (Instructions)
### 架构约束
#### 1. 代码生成约束(强制)
- 必须严格按照阶段 5 生成的提示词要求生成代码
- 必须遵循 Spring Boot 最佳实践
- 必须遵循若依框架规范
- 必须使用 MyBatis Plus 进行数据库操作(如果需要)
- 必须使用指定的包结构和文件路径
- 必须包含单元测试
#### 2. 代码生成器使用约束(强制)
- 对于涉及数据库表新增的需求,**必须**先询问用户是否使用代码生成器
- 代码生成器路径:`datai-models/datai-generator/`
- 代码生成器可以生成的基础代码包括:
- 实体类Entity
- Mapper 接口
- Mapper XML
- Service 接口
- Service 实现类
- Controller
- 前端 Vue 页面(可选)
- 如果使用代码生成器,**必须**先扫描项目目录,检查代码生成器是否已生成基础代码
- 如果代码生成器已生成基础代码,则从提示词要求中排除这些基础代码,生成其他代码
- 如果代码生成器未生成基础代码,则直接提示用户使用代码生成器生成基础代码,不继续生成其他代码
- 排除后,明确列出还需要手动实现的代码
#### 3. 索引更新约束(强制)
- 必须在生成代码后立即更新 `docs/index.md`
- 采用增量更新策略,**严禁**删除现有内容
#### 4. 会话记录约束(强制)
- 必须更新 `docs/sessions/YYYY-MM-DD-00X-session.md`
- 必须更新当前阶段为"阶段 6执行代码生成"
- 必须记录生成的代码文件列表
- 必须记录是否使用代码生成器
- 必须记录代码生成器扫描结果(如果使用)
- 必须记录 AI 的质疑、替代方案以及最终的复现步骤
### 业务逻辑 SOP标准操作流程
#### 步骤 1代码生成分析Let's think step by step
在生成代码前,必须执行以下分析:
1. **分析需求和设计文档**
- 读取阶段 1 创建的需求文档
- 读取阶段 2 创建的设计文档
- 读取阶段 3 创建的决策记录
- 明确需求的核心功能和非功能需求
- 明确设计的技术方案和架构
2. **确定是否涉及数据库表新增**
- 读取阶段 4 创建的 SQL 文件
- 检查是否包含 `CREATE TABLE` 语句
- 如果涉及表新增,标记需要使用代码生成器确认
- 如果不涉及表新增,直接进入步骤 4
3. **确定需要生成的代码文件**
- 读取阶段 5 创建的提示词
- 明确需要生成的代码文件类型和路径
- 明确代码规范和测试要求
4. **遵循 Spring Boot 最佳实践**
- 明确 Spring Boot 的代码结构和规范
- 明确若依框架的代码结构和规范
- 明确 MyBatis Plus 的使用规范
#### 步骤 2首句申明
在生成代码前,必须明确当前"现状"与"目标"
```
现状:已完成需求定义、方案设计、方案决策、数据库结构生成和提示词生成 目标:根据提示词生成符合项目规范的代码文件
```
#### 步骤 3代码生成器确认新增步骤
如果需求涉及数据库表新增,必须执行此步骤:
1. **检测是否涉及表新增**
- 检查阶段 4 创建的 SQL 文件
- 如果包含 `CREATE TABLE` 语句,则涉及表新增
- 如果不涉及表新增,跳过此步骤,直接进入步骤 4
2. **询问用户是否使用代码生成器**
- 向用户说明代码生成器的位置和功能
- 说明代码生成器可以生成的基础代码类型
- 询问:"是否使用代码生成器生成基础代码?"
- 等待用户确认
3. **如果用户选择使用代码生成器**
- 读取 `datai-models/datai-generator/` 目录下的代码生成器模板
- 分析代码生成器可以生成的基础代码:
- 实体类Entity`vm/java/domain.java.vm`
- Mapper 接口:`vm/java/mapper.java.vm`
- Mapper XML`vm/xml/mapper.xml.vm`
- Service 接口:`vm/java/service.java.vm`
- Service 实现类:`vm/java/serviceImpl.java.vm`
- Controller`vm/java/controller.java.vm`
- **扫描项目目录,检查代码生成器是否已生成基础代码**
- 使用 SearchCodebase 或 Glob 工具扫描项目目录
- 根据表名(从 SQL 文件中提取查找对应的实体类、Mapper、Service、Controller
- 检查这些文件是否存在
- 记录扫描结果:哪些基础代码已生成,哪些未生成
- **如果代码生成器已生成所有基础代码**
- 从提示词要求中排除这些基础代码
- 明确列出还需要手动实现的代码
- 记录用户选择使用代码生成器,且基础代码已生成
- 继续进入步骤 4
- **如果代码生成器未生成基础代码或部分生成**
- 直接提示用户:"代码生成器未生成基础代码请先使用代码生成器生成基础代码Entity、Mapper、Service、Controller然后再继续生成其他代码。"
- 列出未生成的基础代码文件
- 提供代码生成器的使用方法
- 记录用户选择使用代码生成器,但基础代码未生成
- **不继续进入步骤 4等待用户完成代码生成器生成后再继续**
4. **如果用户选择不使用代码生成器**
- 按照提示词要求生成所有代码
- 记录用户选择不使用代码生成器
5. **如果需求不涉及表新增**
- 直接按照提示词要求生成所有代码
- 不需要询问用户是否使用代码生成器
#### 步骤 4加载阶段 5 准备的 Prompt观察输出
1. **加载提示词**
- 读取阶段 5 创建的提示词
- 如果步骤 3 确认使用代码生成器且基础代码已生成,从提示词要求中排除基础代码
- 按照提示词的要求生成代码
2. **生成代码**
- 生成 Java 代码文件
- 保存到对应的项目目录
- 确保代码符合项目规范
- 确保代码包含单元测试
3. **观察输出**
- 记录 AI 的质疑
- 记录替代方案
- 记录最终的复现步骤
#### 步骤 5更新索引和设计文档
1. **更新设计文档**
- 使用 Read 工具读取设计文档
- 更新文档状态,标记代码已实现
- 使用 Write 工具更新设计文档
2. **保存索引**
- 使用 Write 工具更新 `docs/index.md`
- 确保索引文件是最新的,**严禁**删除现有内容
#### 步骤 6更新会话记录
1. **读取现有会话记录**
- 使用 Read 工具读取 `docs/sessions/YYYY-MM-DD-00X-session.md`
2. **更新阶段 6 信息**
- 更新"当前阶段"为"阶段 6执行代码生成"
- 更新"阶段 6执行代码生成"的状态为"已完成"或"待继续"(如果基础代码未生成)
- 添加生成的代码文件列表
- 记录是否使用代码生成器
- 如果使用代码生成器,记录代码生成器扫描结果
- 如果基础代码未生成,记录提示用户使用代码生成器的信息
- 记录 AI 的质疑、替代方案以及最终的复现步骤
3. **保存会话记录**
- 使用 Write 工具更新会话记录
#### 步骤 7确认与询问
1. **向用户确认**
- 显示生成的代码文件列表
- 如果使用代码生成器,说明哪些代码由代码生成器生成,哪些代码手动实现
- 如果代码生成器未生成基础代码,提示用户使用代码生成器
- 询问:"代码是否正确?"
- 如果基础代码未生成,询问:"是否已使用代码生成器生成基础代码?是否继续生成其他代码?"
- 如果基础代码已生成,询问:"是否进入下一阶段(记录当前会话)?"
2. **等待用户反馈**
- 如果用户不满意,询问具体需要修改的地方
- 如果用户要求回退,执行回退机制(见错误陷阱部分)
- 如果用户确认,标记阶段 6 为已完成,准备进入阶段 7
### 工具调用
#### 必须使用的工具
1. **Read 工具**:读取现有文件
- 使用场景读取需求文档、设计文档、决策记录、提示词、SQL 文件、索引、会话记录
- 命令:`Read(file_path="d:\\idea_demo\\datai\\docs\\prompts\\2026-01-21-001-prompt-用户登录功能.md")`
2. **Write 工具**:创建或更新文件
- 使用场景:生成代码文件、更新索引、更新设计文档、更新会话记录
- 命令:`Write(file_path="d:\\idea_demo\\datai\\datai-modules-system\\src\\main\\java\\com\\datai\\modules\\system\\controller\\SysLoginController.java", content="...")`
3. **RunCommand 工具**:运行代码验证
- 使用场景:运行单元测试验证代码正确性
- 命令:`RunCommand(command="mvn test", blocking=true, requires_approval=false, target_terminal="new")`
#### 可选使用的工具
1. **SearchCodebase 工具**:搜索现有代码
- 使用场景:查找现有代码作为参考、扫描代码生成器生成的文件
- 命令:`SearchCodebase(information_request="查找 datai-modules-system 模块下的 Controller 类")`
2. **Glob 工具**:搜索文件
- 使用场景:扫描代码生成器生成的文件
- 命令:`Glob(path="d:\\idea_demo\\datai", pattern="**/SysDatasourceConfig.java")`
3. **GetDiagnostics 工具**:获取代码诊断
- 使用场景:检查代码的语法错误和类型错误
- 命令:`GetDiagnostics(uri="d:\\idea_demo\\datai\\datai-modules-system\\src\\main\\java\\com\\datai\\modules\\system\\controller\\SysLoginController.java")`
4. **TodoWrite 工具**:管理任务
- 使用场景:跟踪阶段执行进度
- 命令:`TodoWrite(todos=[...])`
---
## D. 错误陷阱与验证 (Anti-Patterns & Checklist)
### 常见错误Anti-Patterns
#### 错误 1不询问用户是否使用代码生成器
**错误示例**
```
AI检测到需求涉及表新增 AI直接按照提示词生成所有代码 AI跳过代码生成器确认步骤
```
**问题**
- 没有询问用户是否使用代码生成器
- 违反了代码生成器使用约束
- 可能导致重复生成基础代码
**正确示例**
```
AI检测到需求涉及表新增 AI询问用户是否使用代码生成器生成基础代码 AI根据用户选择排除或包含基础代码 AI生成剩余代码
```
#### 错误 2不扫描代码生成器生成的文件
**错误示例**
```
AI用户选择使用代码生成器 AI直接从提示词要求中排除基础代码 AI没有扫描项目目录检查基础代码是否已生成 AI可能生成重复代码或遗漏代码
```
**问题**
- 没有扫描代码生成器生成的文件
- 无法确定基础代码是否已生成
- 可能导致重复生成代码或遗漏代码
**正确示例**
```
AI用户选择使用代码生成器 AI扫描项目目录检查代码生成器是否已生成基础代码 AI如果基础代码已生成从提示词要求中排除 AI如果基础代码未生成提示用户使用代码生成器
```
#### 错误 3代码生成器未生成基础代码时继续生成其他代码
**错误示例**
```
AI用户选择使用代码生成器 AI扫描项目目录发现基础代码未生成 AI仍然继续生成其他代码 AI导致代码不完整
```
**问题**
- 代码生成器未生成基础代码时继续生成其他代码
- 导致代码不完整,缺少基础代码
**正确示例**
```
AI用户选择使用代码生成器 AI扫描项目目录发现基础代码未生成 AI直接提示用户使用代码生成器生成基础代码 AI不继续生成其他代码等待用户完成代码生成器生成后再继续
```
#### 错误 4不按提示词要求生成代码
**错误示例**
```
AI读取提示词要求生成 Controller、Service、Mapper、Entity AI只生成了 Controller 和 Service没有生成 Mapper 和 Entity
```
**问题**
- 没有按照提示词要求生成所有代码文件
- 违反了阶段 5 生成的提示词约束
**正确示例**
```
AI读取提示词要求生成 Controller、Service、Mapper、Entity AI按照提示词要求生成了所有代码文件 AI确保代码符合提示词的代码规范和测试要求
```
#### 错误 5不排除代码生成器生成的基础代码
**错误示例**
```
AI用户选择使用代码生成器 AI仍然手动生成了 Entity、Mapper、Service、Controller AI导致代码重复
```
**问题**
- 没有排除代码生成器生成的基础代码
- 导致代码重复和维护困难
**正确示例**
```
AI用户选择使用代码生成器 AI扫描项目目录确认基础代码已生成 AI从提示词要求中排除 Entity、Mapper、Service、Controller AI只生成代码生成器无法生成的代码
```
#### 错误 6不包含单元测试
**错误示例**
```
AI生成代码不包含单元测试 AI违反了提示词的测试要求
```
**正确示例**
```
AI生成代码包含单元测试 AI确保单元测试覆盖率不低于 80% AI确保测试用例包含正常场景和异常场景
````
#### 错误 7代码不符合项目规范
**错误示例**
```java
// 违反若依框架规范的代码
public class loginController {
public String login(String username, String password) {
// 代码逻辑
}
}
````
**问题**
- 类名不符合规范(首字母小写,驼峰命名错误)
- 方法参数不符合规范(没有使用 DTO 类)
- 没有使用若依框架的注解
- 没有异常处理
**正确示例**
Java
```
// 符合若依框架规范的代码
@RestController
@RequestMapping("/system/auth")
public class SysLoginController {
@Autowired
private SysLoginService loginService;
@PostMapping("/login")
public AjaxResult login(@RequestBody LoginBody loginBody) {
// 代码逻辑
return AjaxResult.success(token);
}
}
```
#### 错误 8不询问用户确认就进入下一阶段
**错误示例**
```
AI生成代码
AI进入阶段 7记录当前会话未询问用户
```
**正确示例**
```
AI生成代码
AI代码已生成
AI代码是否正确
AI是否进入下一阶段记录当前会话
```
### 验收清单Checklist
在完成阶段 6 前,必须检查以下项目:
#### 代码生成器确认检查
- [ ] 已检测需求是否涉及数据库表新增
- [ ] 如果涉及表新增,已询问用户是否使用代码生成器
- [ ] 已记录用户的选择(使用或不使用代码生成器)
- [ ] 如果使用代码生成器,已扫描项目目录检查基础代码是否已生成
- [ ] 已记录代码生成器扫描结果(哪些基础代码已生成,哪些未生成)
- [ ] 如果基础代码已生成,已从提示词要求中排除基础代码
- [ ] 如果基础代码未生成,已提示用户使用代码生成器,不继续生成其他代码
- [ ] 已明确列出还需要手动实现的代码
#### 代码生成检查
- [ ] 已按照提示词要求生成所有代码文件(排除代码生成器生成的基础代码)
- [ ] 代码文件保存到了正确的项目目录
- [ ] 代码符合 Spring Boot 最佳实践
- [ ] 代码符合若依框架规范
- [ ] 代码符合 MyBatis Plus 使用规范
- [ ] 代码包含单元测试
- [ ] 单元测试覆盖率不低于 80%
- [ ] 测试用例包含正常场景和异常场景
- [ ] 代码没有语法错误和类型错误
#### 索引与文档更新检查
- [ ] `docs/index.md` 已更新
- [ ] 索引更新采用增量策略,未删除现有内容
- [ ] 设计文档已更新,标记代码实现完成状态
#### 会话记录更新检查
- [ ] 会话记录已更新
- [ ] 会话记录的"当前阶段"已更新为"阶段 6执行代码生成"
- [ ] 会话记录的"阶段 6执行代码生成"状态已更新为"已完成"或"待继续"
- [ ] 会话记录包含生成的代码文件列表
- [ ] 会话记录记录是否使用代码生成器
- [ ] 如果使用代码生成器,会话记录记录代码生成器扫描结果
- [ ] 如果基础代码未生成,会话记录记录提示用户使用代码生成器的信息
- [ ] 会话记录包含 AI 的质疑、替代方案以及最终的复现步骤
#### 用户确认检查
- [ ] 已向用户显示生成的代码文件列表
- [ ] 如果使用代码生成器,已向用户说明哪些代码由代码生成器生成,哪些代码手动实现
- [ ] 如果代码生成器未生成基础代码,已向用户提示使用代码生成器
- [ ] 已询问用户"代码是否正确?"
- [ ] 如果基础代码未生成,已询问用户"是否已使用代码生成器生成基础代码?是否继续生成其他代码?"
- [ ] 如果基础代码已生成,已询问用户"是否进入下一阶段?"
- [ ] 已等待用户反馈
#### 回退机制检查(如果需要)
- [ ] 如果用户不满意,已询问具体需要修改的地方
- [ ] 如果用户要求回退,已删除相关代码文件
- [ ] 如果用户要求回退,已撤销索引更新
- [ ] 如果用户要求回退,已撤销设计文档更新
- [ ] 如果用户要求回退,已更新会话记录
### Correct vs Incorrect 代码对比
#### Incorrect错误示例
Java
```
// 违反若依框架规范的代码
public class loginController {
public String login(String username, String password) {
// 简单的用户名密码验证
if ("admin".equals(username) && "123456".equals(password)) {
return "success";
} else {
return "failure";
}
}
}
```
#### Correct正确示例
Java
```
// 符合若依框架规范的代码
@RestController
@RequestMapping("/system/auth")
public class SysLoginController {
private static final Logger log = LoggerFactory.getLogger(SysLoginController.class);
@Autowired
private SysLoginService loginService;
/**
* 登录方法
* * @param loginBody 登录信息
* @return 结果
*/
@PostMapping("/login")
public AjaxResult login(@RequestBody LoginBody loginBody) {
AjaxResult ajax = AjaxResult.success();
// 生成令牌
String token = loginService.login(loginBody.getUsername(), loginBody.getPassword(), loginBody.getCode(),
loginBody.getUuid());
ajax.put(Constants.TOKEN, token);
return ajax;
}
}
```
---
## 附录:快速参考
### 文件路径速查
- 需求文档:`docs/requirements/YYYY-MM-DD-00X-需求名.md`
- 设计文档:`docs/design/YYYY-MM-DD-00X-设计名.md`
- 决策记录:`docs/decisions/YYYY-MM-DD-00X-ADR-决策名.md`
- SQL 文件:`docs/sql/YYYY-MM-DD-00X-表名.sql`
- 提示词:`docs/prompts/YYYY-MM-DD-00X-prompt-提示词名.md`
- 主索引:`docs/index.md`
- 会话记录:`docs/sessions/YYYY-MM-DD-00X-session.md`
- 项目规则:`.trae/rules/project_rules.md`
- SSOT 架构师提示词:`docs/Prompt/0004-单一真源文档驱动架构师.md`
- 代码生成器:`datai-models/datai-generator/`
### 代码生成器模板速查
- 实体类模板:`datai-models/datai-generator/src/main/resources/vm/java/domain.java.vm`
- Mapper 接口模板:`datai-models/datai-generator/src/main/resources/vm/java/mapper.java.vm`
- Mapper XML 模板:`datai-models/datai-generator/src/main/resources/vm/xml/mapper.xml.vm`
- Service 接口模板:`datai-models/datai-generator/src/main/resources/vm/java/service.java.vm`
- Service 实现类模板:`datai-models/datai-generator/src/main/resources/vm/java/serviceImpl.java.vm`
- Controller 模板:`datai-models/datai-generator/src/main/resources/vm/java/controller.java.vm`
### 工具命令速查
PowerShell
```
# 读取提示词
Read(file_path="d:\\idea_demo\\datai\\docs\\prompts\\2026-01-21-001-prompt-用户登录功能.md")
# 读取 SQL 文件
Read(file_path="d:\\idea_demo\\datai\\docs\\sql\\2026-01-21-001-sys_user.sql")
# 扫描代码生成器生成的文件
Glob(path="d:\\idea_demo\\datai", pattern="**/SysDatasourceConfig.java")
SearchCodebase(information_request="查找 SysDatasourceConfig 相关的文件")
# 生成代码文件
Write(file_path="d:\\idea_demo\\datai\\datai-modules-system\\src\\main\\java\\com\\datai\\modules\\system\\controller\\SysLoginController.java", content="...")
# 运行单元测试
RunCommand(command="mvn test", blocking=true, requires_approval=false, target_terminal="new")
# 检查代码诊断
GetDiagnostics(uri="d:\\idea_demo\\datai\\datai-modules-system\\src\\main\\java\\com\\datai\\modules\\system\\controller\\SysLoginController.java")
```
### 代码生成器使用流程
1. 检测需求是否涉及数据库表新增
2. 如果涉及表新增,询问用户是否使用代码生成器
3. 如果用户选择使用代码生成器:
- 扫描项目目录,检查代码生成器是否已生成基础代码
- 如果基础代码已生成:
- 从提示词要求中排除基础代码Entity、Mapper、Service、Controller
- 明确列出还需要手动实现的代码
- 继续生成其他代码
- 如果基础代码未生成:
- 直接提示用户使用代码生成器生成基础代码
- 列出未生成的基础代码文件
- 提供代码生成器的使用方法
- 不继续生成其他代码,等待用户完成代码生成器生成后再继续
4. 如果用户选择不使用代码生成器:
- 按照提示词要求生成所有代码
### 代码生成器扫描方法
1. 从 SQL 文件中提取表名
2. 根据表名生成对应的实体类名、Mapper 接口名、Service 接口名、Controller 类名
3. 使用 Glob 或 SearchCodebase 工具扫描项目目录
4. 检查这些文件是否存在
5. 记录扫描结果:哪些基础代码已生成,哪些未生成
6. 根据扫描结果决定后续操作