220 lines
12 KiB
Markdown
220 lines
12 KiB
Markdown
# 会话记录
|
||
|
||
## 元数据
|
||
- 需求编号:014-2
|
||
- 开始时间:2026-01-27
|
||
- 结束时间:2026-01-27
|
||
- 创建人:SSOT 架构师
|
||
- 状态:进行中
|
||
|
||
## 当前阶段
|
||
**阶段 8:变更记录与归档** - 已完成
|
||
|
||
## 需求描述
|
||
利用 Tooling API 的 `SymbolTable` 功能,解析 Apex 类的内部结构(内部类、方法、变量),为 Java 端自动生成强类型的 DTO(Data Transfer Object),解决 Partner API 只能传输扁平 SObject 的限制。
|
||
|
||
## 执行阶段
|
||
|
||
### 阶段 1:需求定义 - 已完成
|
||
|
||
#### 完成时间
|
||
2026-01-26
|
||
|
||
#### 生成文档
|
||
- [需求文档](../requirements/REQ-014-2.md)
|
||
|
||
#### 关键决策
|
||
- 确定需求优先级为高
|
||
- 确定需求复杂度为中等
|
||
- 确定需求类型为新功能开发
|
||
|
||
### 阶段 2:方案设计 - 已完成
|
||
|
||
#### 完成时间
|
||
2026-01-27
|
||
|
||
#### 生成文档
|
||
- [设计文档](../design/2026-01-27-014-2-符号表分析与DTO生成-设计.md)
|
||
|
||
#### 关键决策
|
||
1. **架构设计**:采用分层架构(Controller → Service → Manager → Tooling API),新增 Parser 层和 Generator 层
|
||
2. **技术选型**:选择 JavaPoet 作为模板引擎(类型安全、易于维护、性能优秀)
|
||
3. **连接工厂设计**:复用 `ToolingConnectionFactory` 获取 Tooling 连接
|
||
4. **Parser 层设计**:新增 `SymbolTableParser`、`ApexTypeMapper` 等解析类
|
||
5. **Generator 层设计**:新增 `JavaCodeGenerator` 代码生成器
|
||
6. **接口设计**:RESTful API + 权限控制 + 参数验证
|
||
7. **数据模型设计**:新增解析结果实体类和 DTO 类
|
||
8. **性能优化**:查询优化、缓存策略、批量处理
|
||
9. **安全设计**:权限控制、参数验证、代码注入防护
|
||
|
||
### 阶段 3:方案决策 - 已完成
|
||
|
||
#### 完成时间
|
||
2026-01-27
|
||
|
||
#### 生成文档
|
||
- [决策记录](../decisions/adr/2026-01-27-014-2-ADR-符号表分析与DTO生成技术选型.md)
|
||
|
||
#### 关键决策
|
||
1. **模板引擎选择**:选择 JavaPoet(类型安全、易于维护、性能优秀、社区活跃)
|
||
2. **类型映射策略**:精确映射 + 降级处理(保留强类型特性,对复杂类型降级)
|
||
3. **代码输出方案**:返回字符串 + 可选文件写入(灵活性高、安全性好)
|
||
|
||
### 阶段 4:数据库结构生成 - 已完成
|
||
|
||
#### 完成时间
|
||
2026-01-27
|
||
|
||
#### 生成文档
|
||
无(本需求不涉及数据库变更)
|
||
|
||
#### 关键决策
|
||
1. **数据库变更分析**:本需求不涉及数据库表变更,所有数据存储在 Salesforce 端
|
||
2. **跳过 SQL 脚本生成**:无需生成 SQL 脚本
|
||
3. **直接进入下一阶段**:准备进入阶段 5(提示词生成)
|
||
|
||
### 阶段 5:提示词生成 - 已完成
|
||
|
||
#### 完成时间
|
||
2026-01-27
|
||
|
||
#### 生成文档
|
||
- [提示词文档](../prompts/2026-01-27-014-2-prompt-符号表分析与DTO生成.md)
|
||
|
||
#### 关键决策
|
||
1. **提示词类型**:功能开发提示词(符号表分析与 DTO 生成)
|
||
2. **提示词结构**:引用真源 + 需求描述 + 设计方案 + 输出格式要求 + 代码规范要求 + 测试要求
|
||
3. **输出格式要求**:必须包含异常处理类、实体类、DTO 类、Parser 层、Generator 层、Manager 层、Service 层、Controller 层和单元测试
|
||
4. **代码规范要求**:命名规范、注释规范、代码格式、异常处理规范、日志规范、权限控制规范、参数验证规范
|
||
5. **测试要求**:单元测试覆盖率不低于 80%,测试用例包含正常场景、异常场景、边界场景
|
||
|
||
### 阶段 6:执行代码生成 - 已完成
|
||
|
||
#### 完成时间
|
||
2026-01-27
|
||
|
||
#### 生成文档
|
||
无(本需求不涉及数据库表变更,未使用代码生成器)
|
||
|
||
#### 关键决策
|
||
1. **数据库变更分析**:本需求不涉及数据库表变更,无需使用代码生成器
|
||
2. **代码生成方式**:手动生成所有代码文件
|
||
3. **生成的代码文件**:
|
||
- 异常处理类(3个):SymbolTableException.java、TypeMappingException.java、CodeGenerationException.java
|
||
- 实体类(5个):ParsedSymbolTable.java、ParsedInnerClass.java、ParsedVariable.java、ParsedMethod.java、ParsedParameter.java
|
||
- DTO 类(3个):SymbolTableVo.java、GenerateDtoRequest.java、GenerateDtoResponse.java
|
||
- Parser 层(2个):SymbolTableParser.java、ApexTypeMapper.java
|
||
- Generator 层(1个):JavaCodeGenerator.java
|
||
- Manager 层(1个):SymbolTableManager.java
|
||
- Service 层(2个):ISymbolTableService.java、SymbolTableServiceImpl.java
|
||
- Controller 层(1个):SymbolTableController.java
|
||
- 单元测试(4个):SymbolTableParserTest.java、ApexTypeMapperTest.java、JavaCodeGeneratorTest.java、SymbolTableServiceTest.java
|
||
4. **代码规范遵循**:遵循 Spring Boot 最佳实践、若依框架规范、Lombok、SLF4J
|
||
5. **测试覆盖**:单元测试覆盖率不低于 80%,测试用例包含正常场景、异常场景、边界场景
|
||
|
||
### 阶段 7:记录当前会话 - 已完成
|
||
|
||
#### 完成时间
|
||
2026-01-27
|
||
|
||
#### 生成文档
|
||
无(本阶段不生成新文档,仅更新会话记录)
|
||
|
||
#### 关键决策
|
||
1. **会话记录更新**:完整记录了从阶段 1 到阶段 6 的所有执行过程、关键决策、生成的文档和代码
|
||
2. **对话记录更新**:添加了完整的对话记录,包括用户需求和 AI 的响应
|
||
3. **生成的文档记录**:记录了所有生成的文档和代码文件的链接
|
||
4. **索引更新**:更新了项目索引,确保会话记录可追溯
|
||
|
||
### 阶段 8:变更记录与归档 - 已完成
|
||
|
||
#### 完成时间
|
||
2026-01-27
|
||
|
||
#### 生成文档
|
||
- [变更日志](../changelog/2026-01-27-014-2-changelog.md)
|
||
|
||
#### 关键决策
|
||
1. **变更分析**:识别了所有变更内容,包括新增功能、新增文档、新增代码文件
|
||
2. **变更日志创建**:创建了详细的变更日志,记录了所有变更内容、影响范围和相关文档
|
||
3. **根目录 CHANGELOG.md 更新**:在根目录 CHANGELOG.md 中追加了新的变更记录
|
||
4. **索引更新**:在 docs/index.md 中添加了变更日志链接
|
||
5. **需求文档更新**:在需求文档中添加了变更日志引用
|
||
6. **会话记录更新**:更新了会话记录,记录了阶段 8 的执行过程和关键决策
|
||
|
||
## 对话记录
|
||
|
||
2026-01-27 用户:`d:\idea_demo\datai\datai-scenes\datai-scene-salesforce\docs\requirements\REQ-014-2.md` 进入阶段二
|
||
|
||
2026-01-27 AI:进入阶段 2(方案设计),分析了需求文档,创建了设计文档 `2026-01-27-014-2-符号表分析与DTO生成-设计.md`,包含架构设计、技术方案、数据模型、接口设计和实现要点。
|
||
|
||
2026-01-27 用户:进入下一阶段(方案决策)
|
||
|
||
2026-01-27 AI:进入阶段 3(方案决策),分析了设计文档中的技术选型,创建了决策记录 `2026-01-27-014-2-ADR-符号表分析与DTO生成技术选型.md`,包含模板引擎选择(JavaPoet)、类型映射策略(精确映射 + 降级处理)和代码输出方案(返回字符串 + 可选文件写入)。
|
||
|
||
2026-01-27 用户:进入下一阶段(数据库结构生成)
|
||
|
||
2026-01-27 AI:进入阶段 4(数据库结构生成),分析了设计文档,确认本需求不涉及数据库表变更(所有数据存储在 Salesforce 端),跳过 SQL 脚本生成,准备进入阶段 5(提示词生成)。
|
||
|
||
2026-01-27 用户:进入下一阶段(提示词生成)
|
||
|
||
2026-01-27 AI:进入阶段 5(提示词生成),分析了需求文档、设计文档和决策记录,创建了提示词文档 `2026-01-27-014-2-prompt-符号表分析与DTO生成.md`,包含引用真源、需求描述、设计方案、输出格式要求、代码规范要求和测试要求。
|
||
|
||
2026-01-27 用户:进入下一阶段(代码生成)
|
||
|
||
2026-01-27 AI:进入阶段 6(执行代码生成),分析了需求文档和设计文档,确认本需求不涉及数据库表变更,无需使用代码生成器,手动生成了所有代码文件,包括异常处理类(3个)、实体类(5个)、DTO 类(3个)、Parser 层(2个)、Generator 层(1个)、Manager 层(1个)、Service 层(2个)、Controller 层(1个)和单元测试(4个)。
|
||
|
||
## 生成的文档
|
||
|
||
### 需求文档
|
||
- [REQ-014-2.md](../requirements/REQ-014-2.md) - 符号表分析与 DTO 生成需求
|
||
|
||
### 设计文档
|
||
- [2026-01-27-014-2-符号表分析与DTO生成-设计.md](../design/2026-01-27-014-2-符号表分析与DTO生成-设计.md) - 符号表分析与 DTO 生成设计
|
||
|
||
### 决策文档
|
||
- [2026-01-27-014-2-ADR-符号表分析与DTO生成技术选型.md](../decisions/adr/2026-01-27-014-2-ADR-符号表分析与DTO生成技术选型.md) - 符号表分析与 DTO 生成技术选型
|
||
|
||
### 提示词文档
|
||
- [2026-01-27-014-2-prompt-符号表分析与DTO生成.md](../prompts/2026-01-27-014-2-prompt-符号表分析与DTO生成.md) - 符号表分析与 DTO 生成提示词
|
||
|
||
### 生成的代码文件
|
||
- **异常处理类**(3个):
|
||
- [SymbolTableException.java](../../datai-salesforce-tooling/src/main/java/com/datai/tooling/exception/SymbolTableException.java)
|
||
- [TypeMappingException.java](../../datai-salesforce-tooling/src/main/java/com/datai/tooling/exception/TypeMappingException.java)
|
||
- [CodeGenerationException.java](../../datai-salesforce-tooling/src/main/java/com/datai/tooling/exception/CodeGenerationException.java)
|
||
- **实体类**(5个):
|
||
- [ParsedSymbolTable.java](../../datai-salesforce-tooling/src/main/java/com/datai/tooling/model/domain/ParsedSymbolTable.java)
|
||
- [ParsedInnerClass.java](../../datai-salesforce-tooling/src/main/java/com/datai/tooling/model/domain/ParsedInnerClass.java)
|
||
- [ParsedVariable.java](../../datai-salesforce-tooling/src/main/java/com/datai/tooling/model/domain/ParsedVariable.java)
|
||
- [ParsedMethod.java](../../datai-salesforce-tooling/src/main/java/com/datai/tooling/model/domain/ParsedMethod.java)
|
||
- [ParsedParameter.java](../../datai-salesforce-tooling/src/main/java/com/datai/tooling/model/domain/ParsedParameter.java)
|
||
- **DTO 类**(3个):
|
||
- [SymbolTableVo.java](../../datai-salesforce-tooling/src/main/java/com/datai/tooling/model/vo/SymbolTableVo.java)
|
||
- [GenerateDtoRequest.java](../../datai-salesforce-tooling/src/main/java/com/datai/tooling/model/dto/GenerateDtoRequest.java)
|
||
- [GenerateDtoResponse.java](../../datai-salesforce-tooling/src/main/java/com/datai/tooling/model/dto/GenerateDtoResponse.java)
|
||
- **Parser 层**(2个):
|
||
- [SymbolTableParser.java](../../datai-salesforce-tooling/src/main/java/com/datai/tooling/parser/SymbolTableParser.java)
|
||
- [ApexTypeMapper.java](../../datai-salesforce-tooling/src/main/java/com/datai/tooling/parser/ApexTypeMapper.java)
|
||
- **Generator 层**(1个):
|
||
- [JavaCodeGenerator.java](../../datai-salesforce-tooling/src/main/java/com/datai/tooling/generator/JavaCodeGenerator.java)
|
||
- **Manager 层**(1个):
|
||
- [SymbolTableManager.java](../../datai-salesforce-tooling/src/main/java/com/datai/tooling/manager/SymbolTableManager.java)
|
||
- **Service 层**(2个):
|
||
- [ISymbolTableService.java](../../datai-salesforce-tooling/src/main/java/com/datai/tooling/service/ISymbolTableService.java)
|
||
- [SymbolTableServiceImpl.java](../../datai-salesforce-tooling/src/main/java/com/datai/tooling/service/impl/SymbolTableServiceImpl.java)
|
||
- **Controller 层**(1个):
|
||
- [SymbolTableController.java](../../datai-salesforce-tooling/src/main/java/com/datai/tooling/controller/SymbolTableController.java)
|
||
- **单元测试**(4个):
|
||
- [SymbolTableParserTest.java](../../datai-salesforce-tooling/src/test/java/com/datai/tooling/parser/SymbolTableParserTest.java)
|
||
- [ApexTypeMapperTest.java](../../datai-salesforce-tooling/src/test/java/com/datai/tooling/parser/ApexTypeMapperTest.java)
|
||
- [JavaCodeGeneratorTest.java](../../datai-salesforce-tooling/src/test/java/com/datai/tooling/generator/JavaCodeGeneratorTest.java)
|
||
- [SymbolTableServiceTest.java](../../datai-salesforce-tooling/src/test/java/com/datai/tooling/service/SymbolTableServiceTest.java)
|
||
|
||
## 回退记录
|
||
无
|
||
|
||
## 相关文档
|
||
- [需求文档](../requirements/REQ-014-2.md)
|
||
- [设计文档](../design/2026-01-27-014-2-符号表分析与DTO生成-设计.md)
|
||
- [主索引](../index.md) |