9.7 KiB
9.7 KiB
会话记录 - WSDL 转换功能
元数据
- 需求编号:002-07
- 创建时间:2026-02-03
- 状态:进行中
阶段记录
阶段 1:需求定义
- 状态:已完成
- 时间:2026-01-28
- 文档:WSDL 转换需求文档
- 关键内容:
- 核心功能点:WsdlToApexInfo、WsdlToApexResult
- 依赖项:子需求 002-01、SessionManager、ApexConnectionFactory、apex.jar
- 入参/出参定义:WSDL 转换、WsdlToApexResult、WsdlToApexInfo
- 成功标准:10 项标准
- 技术约束:固定使用 source org 类型、转换结果存储到数据库、使用 ReentrantLock 保证多线程安全
- REST API 接口:6 个接口
- 错误码定义:9 个错误码
阶段 2:方案设计
- 状态:已完成
- 时间:2026-02-03
- 文档:WSDL 转换-设计文档
- 关键内容:
- 系统架构:分层架构(Controller -> Service -> Mapper -> Entity)
- 模块架构:
datai-salesforce-apex模块,包含 8 个包 - 数据流:6 个流程(从 URL 转换、从 XML 转换、查询转换历史、获取转换详情、下载 Apex 类代码、批量下载 Apex 类代码)
- 技术方案:Spring Boot 2.7.x、MyBatis Plus 3.5.x、MySQL 8.0+、apex.jar、Apache Commons Compress
- 数据模型:2 张表(datai_apex_wsdl_conversion、datai_apex_wsdl_class)
- 接口设计:6 个 RESTful API 接口
- 实现要点:WSDL 转换核心实现、固定使用 source org、多线程安全设计、批量下载实现
阶段 3:方案决策
- 状态:已完成
- 时间:2026-02-03
- 文档:WSDL 转换-ADR
- 关键内容:
- 决策 1:数据持久化策略 - 选择数据库持久化(MySQL)
- 决策 2:多线程安全设计 - 选择 ReentrantLock
- 决策 3:转换结果存储方式 - 选择存储完整类代码(LONGTEXT)
- 决策 4:批量下载实现 - 选择 Apache Commons Compress
阶段 4:数据库结构生成
- 状态:已完成
- 时间:2026-02-03
- 文档:WSDL 转换-SQL 脚本
- 涉及数据库变更:是
- 关键内容:
- 创建 2 张数据库表:datai_apex_wsdl_conversion、datai_apex_wsdl_class
- datai_apex_wsdl_conversion 表:14 个字段,5 个索引
- datai_apex_wsdl_class 表:5 个字段,2 个索引,1 个外键(级联删除)
阶段 5:提示词生成
- 状态:已完成
- 时间:2026-02-03
- 文档:WSDL 转换-提示词
- 关键内容:
- 引用真源(需求文档、设计文档、决策记录、SQL 脚本)
- 需求描述(6 个核心功能)
- 设计方案(技术栈、架构设计、数据模型、并发控制、集成方案)
- 输出格式要求(12 个文件、单元测试、Spring Boot 最佳实践、MyBatis Plus 规范、若依框架规范、Apache Commons Compress)
- 代码规范要求(类命名、方法命名、变量命名、注释规范、代码格式、导入规范)
- 测试要求(覆盖率不低于 80%、6 个测试场景、JUnit 5 和 Mockito)
- 注意事项(10 项注意事项)
对话记录
2026-02-03
用户:d:\idea_demo\datai\datai-scenes\datai-scene-salesforce\docs\requirements\sub\2026-01-28-002-07-WSDL转换.md 进入阶段二
助手: 已完成 WSDL 转换功能的设计文档创建,包含:
- 架构设计(分层架构图)
- 数据模型(2 张数据库表:datai_apex_wsdl_conversion、datai_apex_wsdl_class)
- 接口设计(6 个 RESTful API)
- 核心功能(从 URL 转换 WSDL、从 XML 转换 WSDL、查询转换历史、获取转换详情、下载 Apex 类代码、批量下载 Apex 类代码)
- 集成策略(与 Salesforce Apex API 集成)
- 多线程安全设计(使用 ReentrantLock)
已更新:
- 项目索引 index.md
- 需求文档(添加设计文档引用)
待办事项:
- 创建设计文档
- 更新项目索引
- 更新需求文档
- 进入阶段 3(方案决策)
用户:进入
助手: 已完成 WSDL 转换功能的架构决策记录(ADR)创建,包含 4 个关键决策:
- 数据持久化策略:选择数据库持久化(MySQL)
- 多线程安全设计:选择 ReentrantLock
- 转换结果存储方式:选择存储完整类代码(LONGTEXT)
- 批量下载实现:选择 Apache Commons Compress
已更新:
- 项目索引 index.md
- 设计文档(添加决策记录引用)
- 会话记录
待办事项:
- 识别关键决策点
- 分析至少两种技术方案的优缺点
- 强制校验(检查已有 ADR 记录)
- 创建决策记录(ADR)
- 更新索引和设计文档
- 更新会话记录
用户:进入
助手: 已完成 WSDL 转换功能的数据库结构生成,包含:
- 数据库变更分析:涉及数据库变更,需要创建 2 张表
- 创建 datai_apex_wsdl_conversion 表(14 个字段,5 个索引)
- 创建 datai_apex_wsdl_class 表(5 个字段,2 个索引,1 个外键)
- 外键关系:datai_apex_wsdl_class.conversion_id -> datai_apex_wsdl_conversion.id(级联删除)
已更新:
- 项目索引 index.md
- 设计文档(添加 SQL 脚本引用)
- 会话记录
待办事项:
- 分析需求是否涉及数据库变更
- 识别需要变更的表和字段
- 生成 SQL 脚本
- 更新索引和设计文档
- 更新会话记录
用户:进入下个阶段
助手: 已完成 WSDL 转换功能的提示词生成,包含:
- 引用真源(需求文档、设计文档、决策记录、SQL 脚本)
- 需求描述(6 个核心功能)
- 设计方案(技术栈、架构设计、数据模型、并发控制、集成方案)
- 输出格式要求(12 个文件、单元测试、Spring Boot 最佳实践、MyBatis Plus 规范、若依框架规范、Apache Commons Compress)
- 代码规范要求(类命名、方法命名、变量命名、注释规范、代码格式、导入规范)
- 测试要求(覆盖率不低于 80%、6 个测试场景、JUnit 5 和 Mockito)
- 注意事项(10 项注意事项)
已更新:
- 项目索引 index.md
- 需求文档(添加提示词引用)
- 会话记录
待办事项:
- 分析需求的核心任务
- 确定需要生成的提示词类型
- 设计提示词的结构和内容
- 生成提示词文档
- 更新索引和需求文档
- 更新会话记录
生成的文档
| 文档类型 | 文档路径 | 状态 |
|---|---|---|
| 需求文档 | docs/requirements/sub/2026-01-28-002-07-WSDL转换.md | 已完成 |
| 设计文档 | docs/design/2026-02-03-002-07-WSDL转换-设计.md | 已完成 |
| 决策记录 | docs/decisions/2026-02-03-002-07-ADR-WSDL转换技术选型.md | 已完成 |
| SQL 脚本 | docs/sql/2026-02-03-002-07-WSDL转换.sql | 已完成 |
| 提示词文档 | docs/prompts/2026-02-03-002-07-prompt-WSDL转换.md | 已完成 |
| 会话记录 | docs/sessions/2026-02-03-002-07-session.md | 进行中 |
关键决策记录
架构决策
- 决策:采用分层架构(Controller -> Service -> Mapper -> Entity)
- 理由:
- 与其他 Apex 功能保持一致
- 便于维护和扩展
- 符合项目整体架构风格
数据模型决策
- 决策:创建 2 张表(datai_apex_wsdl_conversion、datai_apex_wsdl_class)
- 理由:
- 独立存储 WSDL 转换记录
- 支持转换历史查询
- 一对多关系设计,一个转换可以包含多个生成的 Apex 类
- 级联删除,删除转换时自动删除对应的 Apex 类
多线程安全决策
- 决策:使用 ReentrantLock 保证多线程安全
- 理由:
- WSDL 转换操作需要保证原子性
- 防止并发转换导致数据混乱
- 方法级别的锁粒度,平衡性能和安全性
API 设计决策
- 决策:提供 6 个 RESTful API 端点
- 理由:
- 覆盖所有核心功能
- 支持从 URL 和 XML 两种方式转换
- 支持转换历史查询和详情查看
- 支持单个和批量下载生成的 Apex 类代码
集成方案决策
- 决策:使用 ApexConnectionFactory 获取 SoapConnection 实例
- 理由:
- 复用现有的连接管理机制
- 统一的连接管理,避免重复代码
- 固定使用 source org 类型,简化逻辑
数据持久化决策
- 决策:使用数据库持久化(MySQL)
- 理由:
- 与项目现有技术栈(MyBatis Plus、MySQL)集成良好
- 与其他 Apex 功能(002-02、002-03、002-06)的数据持久化策略保持一致
- 支持历史数据查询和审计需求
- 数据可靠性高,避免内存丢失
转换结果存储方式决策
- 决策:存储完整类代码(LONGTEXT)
- 理由:
- 一次转换,多次使用,无需重复调用 Salesforce API
- 性能高,减少网络请求
- 离线可用,即使 Salesforce 连接失败也能下载
批量下载实现决策
- 决策:使用 Apache Commons Compress
- 理由:
- 功能强大,支持多种压缩格式(ZIP、TAR、GZ 等)
- API 简洁,易于使用
- 社区活跃度高,文档丰富
- 性能高,经过充分优化
数据库结构决策
- 决策:创建 2 张数据库表(datai_apex_wsdl_conversion、datai_apex_wsdl_class)
- 理由:
- 独立存储 WSDL 转换记录和生成的 Apex 类代码
- 支持转换历史查询和详情查看
- 一对多关系设计,一个转换可以包含多个生成的 Apex 类
- 级联删除,删除转换时自动删除对应的 Apex 类
- 合理的索引设计,支持高效的查询和统计