datai/datai-scenes/datai-scene-salesforce/docs/sessions/2026-02-03-002-07-session.md

9.7 KiB
Raw Permalink Blame History

会话记录 - 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 转换功能的设计文档创建,包含:

  1. 架构设计(分层架构图)
  2. 数据模型2 张数据库表datai_apex_wsdl_conversion、datai_apex_wsdl_class
  3. 接口设计6 个 RESTful API
  4. 核心功能(从 URL 转换 WSDL、从 XML 转换 WSDL、查询转换历史、获取转换详情、下载 Apex 类代码、批量下载 Apex 类代码)
  5. 集成策略(与 Salesforce Apex API 集成)
  6. 多线程安全设计(使用 ReentrantLock

已更新:

  • 项目索引 index.md
  • 需求文档(添加设计文档引用)

待办事项

  • 创建设计文档
  • 更新项目索引
  • 更新需求文档
  • 进入阶段 3方案决策

用户:进入

助手 已完成 WSDL 转换功能的架构决策记录ADR创建包含 4 个关键决策:

  1. 数据持久化策略选择数据库持久化MySQL
  2. 多线程安全设计:选择 ReentrantLock
  3. 转换结果存储方式选择存储完整类代码LONGTEXT
  4. 批量下载实现:选择 Apache Commons Compress

已更新:

  • 项目索引 index.md
  • 设计文档(添加决策记录引用)
  • 会话记录

待办事项

  • 识别关键决策点
  • 分析至少两种技术方案的优缺点
  • 强制校验(检查已有 ADR 记录)
  • 创建决策记录ADR
  • 更新索引和设计文档
  • 更新会话记录

用户:进入

助手 已完成 WSDL 转换功能的数据库结构生成,包含:

  1. 数据库变更分析:涉及数据库变更,需要创建 2 张表
  2. 创建 datai_apex_wsdl_conversion 表14 个字段5 个索引)
  3. 创建 datai_apex_wsdl_class 表5 个字段2 个索引1 个外键)
  4. 外键关系datai_apex_wsdl_class.conversion_id -> datai_apex_wsdl_conversion.id级联删除

已更新:

  • 项目索引 index.md
  • 设计文档(添加 SQL 脚本引用)
  • 会话记录

待办事项

  • 分析需求是否涉及数据库变更
  • 识别需要变更的表和字段
  • 生成 SQL 脚本
  • 更新索引和设计文档
  • 更新会话记录

用户:进入下个阶段

助手 已完成 WSDL 转换功能的提示词生成,包含:

  1. 引用真源需求文档、设计文档、决策记录、SQL 脚本)
  2. 需求描述6 个核心功能)
  3. 设计方案(技术栈、架构设计、数据模型、并发控制、集成方案)
  4. 输出格式要求12 个文件、单元测试、Spring Boot 最佳实践、MyBatis Plus 规范、若依框架规范、Apache Commons Compress
  5. 代码规范要求(类命名、方法命名、变量命名、注释规范、代码格式、导入规范)
  6. 测试要求(覆盖率不低于 80%、6 个测试场景、JUnit 5 和 Mockito
  7. 注意事项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 类
    • 合理的索引设计,支持高效的查询和统计