15 KiB
REQ-013-1 Apex 编译器接口与错误处理需求 - 会话记录
元数据
- 需求编号:013-1
- 创建时间:2026-01-28
- 结束时间:2026-01-28
- 当前阶段:阶段 9:闭环复盘和接口文档
- 状态:已完成
需求描述
实现 Apex 编译器接口与错误处理功能,包括:
- 统一错误模型:创建 ApexCompileIssue 类,映射 Salesforce SOAP API 的 CompileIssue
- 编译器结果封装:创建 CompileResult 类,封装编译结果
- WSDL 转 Apex:创建 WsdlToApexResult 类,封装 WSDL 转换结果
- 异常体系:创建 ApexException 及其子类,区分不同类型的错误
- 服务接口:创建 ApexCompilerService 和 WsdlConverterService 接口
执行阶段
阶段 1:需求定义
- 状态:已完成
- 需求文档:REQ-013-1.md
- 关键需求:
- 统一错误模型(ApexCompileIssue、ApexException 体系)
- 编译器结果封装(CompileResult)
- WSDL 转 Apex(WsdlToApexResult)
阶段 2:方案设计
- 状态:已完成
- 设计文档:2026-01-28-013-1-Apex编译器接口设计.md
- 关键设计决策:
- 使用 force-wsc 库与 Salesforce SOAP API 集成
- 创建统一的错误模型和异常体系
- 实现编译结果转换算法
- 设计 RESTful API 接口
- 采用 Spring Boot 和 Lombok 框架
阶段 3:方案决策
- 状态:已完成
- 决策文档:2026-01-28-013-1-ADR-Apex编译器接口技术选型.md
- 关键决策:
- 使用 force-wsc 库与 Salesforce SOAP API 集成
- 使用统一的异常体系(ApexException 及其子类)
- 创建统一的 CompileResult 模型封装 SOAP API 返回结果
阶段 4:数据库结构生成
- 状态:已完成(跳过)
- 说明:需求不涉及数据库变更,直接进入阶段 5
阶段 5:提示词生成
- 状态:已完成
- 提示词文档:2026-01-28-013-1-prompt-Apex编译器接口与错误处理.md
- 提示词内容摘要:
- 引用真源(需求文档、设计文档、决策记录)
- 定义输出格式(模型层、异常体系、接口层、实现层、单元测试)
- 定义代码规范(命名规范、注释规范、代码格式、导入规范、异常处理规范)
- 定义测试要求(覆盖率、测试场景、测试框架、测试用例命名)
- 注意事项(Salesforce API 集成、错误处理、性能优化、安全性、兼容性)
阶段 6:代码生成
- 状态:已完成
- 代码生成器使用:不涉及数据库表新增,未使用代码生成器
- 生成的代码文件:
- 模型层:
datai-salesforce-apex/src/main/java/com/datai/apex/model/ApexCompileIssue.java- 编译问题模型datai-salesforce-apex/src/main/java/com/datai/apex/model/CompileResult.java- 编译结果模型datai-salesforce-apex/src/main/java/com/datai/apex/model/WsdlToApexResult.java- WSDL 转换结果模型
- 异常体系:
datai-salesforce-apex/src/main/java/com/datai/apex/exception/ApexException.java- 基类异常datai-salesforce-apex/src/main/java/com/datai/apex/exception/ApexCompilationException.java- 编译异常datai-salesforce-apex/src/main/java/com/datai/apex/exception/ApexRuntimeException.java- 运行时异常datai-salesforce-apex/src/main/java/com/datai/apex/exception/ApexConnectionException.java- 连接异常
- 接口层:
datai-salesforce-apex/src/main/java/com/datai/apex/core/ApexCompilerService.java- 编译器服务接口datai-salesforce-apex/src/main/java/com/datai/apex/core/WsdlConverterService.java- WSDL 转换服务接口
- 实现层:
datai-salesforce-apex/src/main/java/com/datai/apex/impl/ApexCompilerServiceImpl.java- 编译器服务实现datai-salesforce-apex/src/main/java/com/datai/apex/impl/WsdlConverterServiceImpl.java- WSDL 转换服务实现
- 单元测试:
datai-salesforce-apex/src/test/java/com/datai/apex/impl/ApexCompilerServiceTest.java- 编译器服务测试datai-salesforce-apex/src/test/java/com/datai/apex/impl/WsdlConverterServiceTest.java- WSDL 转换服务测试
- 模型层:
阶段 7:记录当前会话
- 状态:已完成
- 会话文档:本文档
- 关键决策:完整记录了当前会话的所有信息
阶段 8:变更记录与归档
- 状态:已完成
- 变更日志:2026-01-28-013-1-changelog.md
- 变更内容:
- 新增功能:统一错误模型、编译器结果封装、WSDL 转 Apex 结果封装、异常体系、服务接口、服务实现、单元测试
- 新增文档:需求文档、设计文档、决策记录、提示词文档、会话记录、变更日志
- 新增代码文件:13 个文件(模型层 3 个、异常体系 4 个、接口层 2 个、实现层 2 个、单元测试 2 个)
- 影响范围:datai-salesforce-apex 模块
- 相关文档:需求文档、设计文档、决策记录、提示词文档、会话记录
- 更新内容:
- 创建变更日志文档
- 更新根目录 CHANGELOG.md
- 更新索引文件,添加变更日志链接
- 更新需求文档,添加变更日志引用
- 更新会话记录,更新阶段 8 信息
阶段 9:闭环复盘和接口文档
- 状态:已完成
- 复盘文档:2026-01-28-013-1-retro.md
- API 文档:2026-01-28-013-1-api.md
- 复盘内容:
- 目标与实际产出对比
- 成功经验(5 条)
- 改进点(5 条)
- 问题分析(无重大问题)
- 行动计划(5 条)
- 提取模式(3 条有效的 Prompt 技巧,3 个避免的坑)
- 模板迭代(Spring Boot 框架规范、Lombok 框架规范、测试要求详细化、验证步骤明确化)
- API 文档内容:
- ApexCompilerService 接口(compileClasses、compileTriggers)
- WsdlConverterService 接口(convertWsdl)
- 异常体系(ApexException、ApexCompilationException、ApexRuntimeException、ApexConnectionException)
- 错误码(编译错误码、连接错误码、转换错误码)
- 更新内容:
- 创建复盘文档
- 创建 API 文档
- 更新索引文件,添加复盘和 API 文档链接
- 更新需求文档,添加复盘和 API 文档引用
- 更新会话记录,更新阶段 9 信息
对话记录
2026-01-28 用户:结合 d:\idea_demo\datai\datai-scenes\datai-scene-salesforce\docs\reference-code\sforce\soap\apex apex源代码实际情况,优化需求文档 d:\idea_demo\datai\datai-scenes\datai-scene-salesforce\docs\requirements\REQ-013-1.md
2026-01-28 AI:好的,我将根据实际的 Apex 源代码优化需求文档 REQ-013-1.md。让我先读取相关源代码文件。
2026-01-28 AI:已读取 CompileClassResult.java、CompileTriggerResult.java、CompileClasses_element.java、CompileTriggers_element.java 等源代码文件,了解了实际的字段和结构。
2026-01-28 AI:已更新需求文档 REQ-013-1.md,添加了以下字段:
- CompileResult:name、bodyCrc、problems[]、warnings[]
- ApexCompileIssue:className
- WsdlToApexResult:apexScripts[]、errors[]
2026-01-28 AI:已更新索引文件 docs/index.md,添加了新设计文档的链接。
2026-01-28 AI:已更新需求文档 REQ-013-1.md,添加了设计文档引用。
2026-01-28 AI:已创建会话记录文件 2026-01-28-013-1-session.md。
2026-01-28 AI:需求文档优化完成。内容是否达标?是否进入下一阶段?
2026-01-28 用户:进入下一阶段(方案决策)
2026-01-28 AI:好的,进入阶段 3:方案决策。
2026-01-28 AI:让我先读取设计文档,分析需要决策的关键技术方案。
2026-01-28 AI:已读取设计文档,识别了三个关键决策点:
- 使用 force-wsc 库与 Salesforce SOAP API 集成
- 使用统一的异常体系(ApexException 及其子类)
- 创建统一的 CompileResult 模型封装 SOAP API 返回结果
2026-01-28 AI:已搜索已有的 ADR 记录,确认没有冲突。
2026-01-28 AI:已创建决策记录 2026-01-28-013-1-ADR-Apex编译器接口技术选型.md,包含:
- 决策 1:使用 force-wsc 库与 Salesforce SOAP API 集成
- 决策 2:使用统一的异常体系
- 决策 3:创建统一的 CompileResult 模型
2026-01-28 AI:已更新索引文件 docs/index.md,添加了新决策记录的链接。
2026-01-28 AI:已更新设计文档,添加了决策记录引用。
2026-01-28 AI:已更新会话记录 2026-01-28-013-1-session.md,更新了阶段 3 的完成状态和关键决策。
2026-01-28 AI:决策记录已创建:[链接]。决策是否合理?是否进入下一阶段(数据库结构生成)?
2026-01-28 用户:进入下一阶段(数据库结构生成)
2026-01-28 AI:好的,进入阶段 4:数据库结构生成。
2026-01-28 AI:让我先分析需求是否涉及数据库变更。
2026-01-28 AI:已读取设计文档,分析发现:
- 需求主要涉及 Java 模型层、异常体系、服务接口和实现
- 所有数据都是通过 Salesforce SOAP API 实时获取和处理的
- 不需要在本地数据库中存储任何数据
2026-01-28 AI:结论:需求 REQ-013-1 不涉及数据库变更。跳过阶段 4(数据库结构生成),直接进入阶段 5(提示词生成)。
2026-01-28 AI:是否进入下一阶段(提示词生成)?
2026-01-28 用户:进入下一阶段(提示词生成)
2026-01-28 AI:好的,进入阶段 5:提示词生成。
2026-01-28 AI:让我先读取需求文档和设计文档,分析需求的核心任务。
2026-01-28 AI:已读取需求文档 REQ-013-1.md 和设计文档 2026-01-28-013-1-Apex编译器接口设计.md。
2026-01-28 AI:已生成提示词文档 2026-01-28-013-1-prompt-Apex编译器接口与错误处理.md,包含:
- 引用真源(需求文档、设计文档、决策记录)
- 需求描述
- 设计方案
- 输出格式要求(模型层、异常体系、接口层、实现层、单元测试)
- 代码规范要求(命名规范、注释规范、代码格式、导入规范、异常处理规范)
- 测试要求(覆盖率、测试场景、测试框架、测试用例命名)
- 注意事项(Salesforce API 集成、错误处理、性能优化、安全性、兼容性)
2026-01-28 AI:已更新索引文件 docs/index.md,添加了新提示词的链接。
2026-01-28 AI:已更新需求文档 REQ-013-1.md,添加了提示词引用。
2026-01-28 AI:已更新会话记录 2026-01-28-013-1-session.md,更新了阶段 5 的完成状态和提示词内容摘要。
2026-01-28 AI:提示词已生成:[链接]。提示词是否合适?是否进入下一阶段(代码生成)?
2026-01-28 用户:进入下一阶段(代码生成)
2026-01-28 AI:好的,进入阶段 6:执行代码生成。
2026-01-28 AI:现状:已完成需求定义、方案设计、方案决策、数据库结构生成(跳过)和提示词生成
2026-01-28 AI:目标:根据提示词生成符合项目规范的代码文件
2026-01-28 AI:已读取提示词文档 2026-01-28-013-1-prompt-Apex编译器接口与错误处理.md。
2026-01-28 AI:已检查 datai-salesforce-apex 模块,确认模块已存在。
2026-01-28 AI:已参考 datai-salesforce-tooling 模块的代码风格。
2026-01-28 AI:已生成以下代码文件:
模型层(3个文件):
- ApexCompileIssue.java - 编译问题模型
- CompileResult.java - 编译结果模型
- WsdlToApexResult.java - WSDL 转换结果模型
异常体系(4个文件):
- ApexException.java - 基类异常
- ApexCompilationException.java - 编译异常
- ApexRuntimeException.java - 运行时异常
- ApexConnectionException.java - 连接异常
接口层(2个文件):
- ApexCompilerService.java - 编译器服务接口
- WsdlConverterService.java - WSDL 转换服务接口
实现层(2个文件):
- ApexCompilerServiceImpl.java - 编译器服务实现
- WsdlConverterServiceImpl.java - WSDL 转换服务实现
单元测试(2个文件):
- ApexCompilerServiceTest.java - 编译器服务测试
- WsdlConverterServiceTest.java - WSDL 转换服务测试
2026-01-28 AI:已更新会话记录 2026-01-28-013-1-session.md,更新了阶段 6 的完成状态和生成的代码文件列表。
2026-01-28 AI:代码生成完成。代码是否正确?是否进入下一阶段(会话记录)?
2026-01-28 用户:进入下一阶段(会话记录)
2026-01-28 AI:好的,进入阶段 7:记录当前会话。
2026-01-28 AI:已更新会话记录 2026-01-28-013-1-session.md,添加了完整的对话记录。
2026-01-28 AI:会话记录已更新:[链接]。会话记录是否完整?是否进入下一阶段(变更记录与归档)?
生成的文档
需求文档
设计文档
决策记录
提示词
生成的代码文件
模型层
datai-salesforce-apex/src/main/java/com/datai/apex/model/ApexCompileIssue.javadatai-salesforce-apex/src/main/java/com/datai/apex/model/CompileResult.javadatai-salesforce-apex/src/main/java/com/datai/apex/model/WsdlToApexResult.java
异常体系
datai-salesforce-apex/src/main/java/com/datai/apex/exception/ApexException.javadatai-salesforce-apex/src/main/java/com/datai/apex/exception/ApexCompilationException.javadatai-salesforce-apex/src/main/java/com/datai/apex/exception/ApexRuntimeException.javadatai-salesforce-apex/src/main/java/com/datai/apex/exception/ApexConnectionException.java
接口层
datai-salesforce-apex/src/main/java/com/datai/apex/core/ApexCompilerService.javadatai-salesforce-apex/src/main/java/com/datai/apex/core/WsdlConverterService.java
实现层
datai-salesforce-apex/src/main/java/com/datai/apex/impl/ApexCompilerServiceImpl.javadatai-salesforce-apex/src/main/java/com/datai/apex/impl/WsdlConverterServiceImpl.java
单元测试
datai-salesforce-apex/src/test/java/com/datai/apex/impl/ApexCompilerServiceTest.javadatai-salesforce-apex/src/test/java/com/datai/apex/impl/WsdlConverterServiceTest.java
回退记录
无