datai/datai-scenes/datai-scene-salesforce/docs/requirements/0001-salesforce-realtime-sync.md
Kris 517284b614 feat: 实现Salesforce Pub/Sub API实时数据同步
主要变更:
- 新增PubSubConnectionFactory连接工厂,提供Pub/Sub API连接管理
- 新增PubSubEventSubscriberImpl实现,支持Pub/Sub API事件订阅
- 更新EventProcessorImpl,添加事件批次处理能力
- 更新RealtimeSyncService,使用Pub/Sub API替代CDC实现
- 更新Authentication.canvas架构文档,添加Pub/Sub组件
- 优化同步配置管理和实时同步日志功能

技术改进:
- 提升实时同步性能和可靠性
- 支持批量事件处理,提高吞吐量
- 完善连接工厂模式,统一管理连接生命周期
2026-01-12 10:31:25 +08:00

160 lines
7.8 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.

# Requirements 模板
## 需求信息
- **需求名称**: Salesforce数据及时同步至本地数据库
- **需求类型**: 功能需求
- **需求编号**: REQ-001
- **创建日期**: 2026-01-09
- **需求版本**: v1.4.0
- **需求提出人**: 系统管理员
- **需求状态**: 待审核
## 输入引用
引用相关的 docs 文档链接:
- [0000-template.md](0000-template.md) - 需求文档模板
- [架构决策](../decisions/adr/0001-salesforce-cdc-sync.md) - Salesforce Pub/Sub API同步方案
- [设计文档](../design/0001-salesforce-cdc-realtime-sync.md) - Salesforce Pub/Sub API实时同步设计
## Context Maps
强制列出本次需求依赖的 Canvas 文件:
- [Authentication.canvas](../Authentication.canvas) - 项目架构视觉化展示
- **相关节点**: [集成任务](node_integration_task) - 处理Salesforce的定时同步任务
- **相关节点**: [SessionManager](node_session_manager_detail) - 会话管理,提供登录服务
- **相关节点**: [Salesforce连接类型](node_integration_connections) - 提供与Salesforce的各种连接方式
## 需求目标
明确描述此需求的目标和预期效果,包括要解决的问题、实现的功能或达成的结果。
本需求的目标是通过Salesforce Pub/Sub API 同步方案实现Salesforce数据的实时同步至本地数据库确保本地系统能够实时获取Salesforce中的最新数据支持业务系统的高效运行和数据分析。通过建立可靠的同步机制解决数据延迟和不一致的问题提高系统的整体性能和用户体验。
## 需求描述
### 概述
简要描述需求的整体内容和范围。
本需求旨在实现Salesforce数据的实时同步功能采用Salesforce Pub/Sub API 同步方案包括配置同步策略、执行同步操作、监控同步状态、处理同步异常等功能。同步范围包括Salesforce中的标准对象和自定义对象仅支持基于Pub/Sub API的实时同步模式并提供同步历史记录和统计分析功能。
### 详细需求
#### 1. 同步配置管理
- **需求描述**: 提供同步配置管理功能支持配置同步对象、字段映射、同步频率、同步模式等参数。在对象表中增加is_realtime_sync字段tinyint(1)类型用于判断是否开启实时数据同步。在对象启用Pub/Sub API时检查本地数据库中的batch表是否已经全量拉取存量数据若没有则提示但仍可启用Pub/Sub API。
- **优先级**: 高
- **验收标准**:
- 能够成功配置同步对象和字段映射
- 能够设置同步频率和同步模式
- 对象表中成功添加is_realtime_sync字段tinyint(1)类型)
- 配置变更后能够正确生效
- 启用Pub/Sub API时能够检查batch表并提示存量数据拉取状态
- **依赖关系**: 依赖于配置模块和集成模块
- **实现建议**: 基于现有的配置管理功能,扩展同步配置的支持,并在对象表中添加实时同步开关字段
#### 2. 实时数据同步
- **需求描述**: 实现Salesforce数据的实时同步功能采用Salesforce Pub/Sub API 同步方案仅支持基于Pub/Sub API的实时同步模式。事件处理采用异步执行方式upsert操作参考DataiIntegrationBatchServiceImpl中的processQueryResult方法实现。利用Pub/Sub API的自动重连和消息重试机制提高系统可靠性。暂不考虑额外的失败重试机制。
- **优先级**: 高
- **验收标准**:
- 能够成功使用Pub/Sub API订阅Salesforce事件总线并捕获变更
- 能够成功处理和同步捕获的变更数据
- 同步数据与Salesforce中的数据一致
- 同步操作能够在规定时间内完成
- 事件处理采用异步执行方式
- upsert操作正确实现
- Pub/Sub API的自动重连机制正常工作
- **依赖关系**: 依赖于集成模块和会话管理
- **实现建议**: 基于现有的集成核心功能集成Salesforce Pub/Sub API客户端库实现数据同步逻辑参考DataiIntegrationBatchServiceImpl中的processQueryResult方法实现upsert操作
#### 3. 同步监控与日志
- **需求描述**: 提供同步监控和日志功能,记录同步操作的执行状态、结果和异常信息。为实时数据同步创建专门的日志表,用于记录对象数据同步的详细信息。
- **优先级**: 中
- **验收标准**:
- 能够实时监控同步操作的执行状态
- 能够查看同步操作的详细日志
- 能够统计同步操作的执行情况
- 成功创建实时数据同步日志表
- 日志表能够记录对象数据同步的详细信息
- 已实现DataiIntegrationRealtimeSyncLog实体类
- 已实现DataiIntegrationRealtimeSyncLogController控制器
- 提供日志查询、导出和详情查看功能
- **依赖关系**: 依赖于集成模块和日志系统
- **实现建议**: 基于现有的日志功能,扩展同步监控的支持,并创建专门的实时数据同步日志表
#### 4. 异常处理
- **需求描述**: 实现同步异常的处理机制,确保同步操作的可靠性。暂不考虑失败重试。
- **优先级**: 中
- **验收标准**:
- 能够正确捕获和处理同步异常
- 能够提供异常信息的详细记录
- **依赖关系**: 依赖于集成模块和异常处理机制
- **实现建议**: 基于现有的异常处理功能,扩展同步异常的处理支持
## 约束
列出需求实现时的约束条件,例如:
- 技术栈限制基于现有的Spring Boot3+Vue3技术栈
- 性能要求:同步操作不能影响系统的正常运行
- 安全性要求:确保同步过程中的数据安全
- 兼容性要求支持不同版本的Salesforce API
- 时间限制:需要在规定的时间内完成实现
- 其他约束需要遵守Salesforce的API使用限制
## Rule Set
"请严格参考 @Authentication.canvas 中的状态机转移逻辑,不要自行发挥。"
**具体规则**
- 必须使用 Canvas 中定义的类名和方法名
- 必须遵循 Canvas 中定义的调用关系
- 必须参考 Canvas 中的流程图逻辑
## 验收标准
定义验证需求是否满足的具体标准,例如:
- 功能完整性:所有同步功能能够正常工作
- 性能指标:同步操作的执行时间在可接受范围内
- 安全性要求:同步过程中的数据传输和存储安全
- 用户体验:同步操作的操作界面友好易用
- 其他验收标准:同步数据的准确性和一致性
## 风险
识别需求可能带来的风险,例如:
- 技术实现风险Salesforce API的变更可能影响同步功能
- 时间风险:实现复杂度可能导致项目延期
- 成本风险:可能需要额外的资源投入
- 质量风险:同步数据的准确性可能受到影响
- 其他潜在风险:网络连接不稳定可能影响同步可靠性
## 需求变更记录
| 日期 | 变更内容 | 变更原因 | 变更人 | 审核人 | 状态 |
|------|---------|---------|--------|--------|------|
| 2026-01-09 | 更新需求文档明确is_realtime_sync字段类型、batch表检查逻辑、upsert实现方式和事件处理方式 | 需求细节确认 | 系统管理员 | - | 待审核 |
| 2026-01-09 | 更新需求文档移除全量和增量同步只保留CDC同步 | 需求范围调整 | 系统管理员 | - | 待审核 |
| 2026-01-09 | 更新需求文档添加Salesforce CDC相关内容 | 架构决策变更 | 系统管理员 | - | 待审核 |
| 2026-01-09 | 创建需求文档 | 初始需求 | 系统管理员 | - | 待审核 |
## 相关人员
- **需求提出人**: 系统管理员 - 联系方式
- **需求负责人**: 系统管理员 - 联系方式
- **技术负责人**: 开发工程师 - 联系方式
- **测试负责人**: 测试工程师 - 联系方式
- **其他相关人员**: 运维工程师 - 联系方式
## 评审信息
- **评审日期**: -
- **评审人员**: -
- **评审结果**: -
- **评审意见**: -
- **修改建议**: -