datai/docs/archive/REQ-005.md

172 lines
7.6 KiB
Markdown
Raw Normal View History

feat: 添加定时任务功能和文档 - 新增 4 个定时任务类: - ObjectSyncTask: 对象自动同步任务 - ObjectInsertTask: 对象自动插入任务 - ObjectUpdateTask: 对象自动更新任务 - MetadataChangeAutoSyncTask: 元数据变更自动同步任务 - 新增 2 个多对象操作接口: - insertMultipleObjectDataToTarget: 批量插入对象数据到目标系统 - updateMultipleObjectDataToTarget: 批量更新对象数据到目标系统 - 新增完整的定时任务文档: - task/index.md: 定时任务文档索引 - ObjectSyncTask.md: 对象自动同步任务文档 - ObjectInsertTask.md: 对象自动插入任务文档 - ObjectUpdateTask.md: 对象自动更新任务文档 - MetadataChangeAutoSyncTask.md: 元数据变更自动同步任务文档 - RateLimitResetTask.md: 每日限流重置任务文档 - 新增 API 文档索引:api-docs/index.md - 更新唯一真源文档中心:docs/index.md - 新增完整的项目文档: - REQ-005.md: 定时任务自动同步、插入和更新对象数据需求 - REQ-006.md: 元数据变更自动同步本地数据库需求 - 0005-scheduled-tasks-implementation.md: 定时任务架构决策 - 0006-metadata-change-auto-sync.md: 元数据变更自动同步架构决策 - 005-scheduled-tasks-implementation.md: 定时任务实现提示词 - 006-metadata-change-auto-sync.md: 元数据变更自动同步实现提示词 - 20260116-scheduled-tasks-implementation.md: 定时任务实现会话记录 - 20260116-metadata-change-auto-sync.md: 元数据变更自动同步实现会话记录 - 20260116-scheduled-tasks-implementation-retro.md: 定时任务实现复盘 - 20260116-metadata-change-auto-sync-retro.md: 元数据变更自动同步实现复盘 - 0015-scheduled-tasks-implementation.md: 定时任务变更记录 - 0016-metadata-change-auto-sync.md: 元数据变更自动同步变更记录 - 更新 CHANGELOG.md 和 README.md
2026-01-16 16:38:35 +08:00
# 定时任务自动同步、插入和更新对象数据
## 需求信息
- **需求名称**: 定时任务自动同步、插入和更新对象数据
- **需求类型**: 功能需求
- **需求编号**: REQ-005
- **创建日期**: 2026-01-16
- **需求版本**: v1.0.0
- **需求提出人**: 用户
- **需求状态**: Completed
- **优先级**: 高
- **最后更新**: 2026-01-16
- **负责人**: AI Assistant
## 输入引用
引用相关的 docs 文档链接:
- [REQ-002](REQ-002.md) - syncObjectData 同步进度跟踪
- [REQ-003](REQ-003.md) - insertObjectDataToTarget 插入数据进度跟踪
- [REQ-004](REQ-004.md) - updateObjectDataToTarget 更新数据进度跟踪
- [DataiIntegrationObjectController](../../datai-salesforce-integration/src/main/java/com/datai/integration/controller/DataiIntegrationObjectController.java) - 对象同步控制接口
- [DataiIntegrationObject](../../datai-salesforce-integration/src/main/java/com/datai/integration/model/domain/DataiIntegrationObject.java) - 对象同步控制实体
- [SysJob](../../../../../datai-models/datai-quartz/src/main/java/com/datai/quartz/domain/SysJob.java) - 定时任务调度实体
- [JobInvokeUtil](../../../../../datai-models/datai-quartz/src/main/java/com/datai/quartz/util/JobInvokeUtil.java) - 任务执行工具
- [RyTask](../../../../../datai-models/datai-quartz/src/main/java/com/datai/quartz/task/RyTask.java) - 定时任务调度测试
## Context Maps
强制列出本次需求依赖的 Canvas 文件:
- [Authentication.canvas](../Authentication.canvas) - 项目架构视觉化展示
- **相关节点**: DataiIntegrationObjectController - 对象同步控制接口
## 需求目标
在 task 目录下创建定时任务,去调用 DataiIntegrationObjectController.java 中的方法,实现所有满足条件的对象数据自动同步(存量/增量)和所有满足条件的对象数据自动插入和所有满足条件的对象数据自动更新。对象是否满足条件通过详细扫描对象上字段进行判断。
## 需求描述
### 概述
`d:\idea_demo\datai\datai-scenes\datai-scene-salesforce\datai-salesforce-integration\src\main\java\com\datai\integration\task` 目录下创建定时任务,去调用 `d:\idea_demo\datai\datai-scenes\datai-scene-salesforce\datai-salesforce-integration\src\main\java\com\datai\integration\controller\DataiIntegrationObjectController.java` 中的方法,实现所有满足条件的对象数据自动同步(存量/增量)和所有满足条件的对象数据自动插入和所有满足条件的对象数据自动更新。对象是否满足条件通过详细扫描对象上字段进行判断。
### 详细需求
#### 1. 自动同步定时任务
- **需求描述**: 创建定时任务,自动执行满足条件的对象数据同步操作
- **优先级**: 高
- **验收标准**:
- 能够扫描所有对象,判断是否满足同步条件
- 能够根据对象的 `isIncremental` 字段判断执行存量同步还是增量同步
- 能够调用 DataiIntegrationObjectController 的 `syncObjectData``syncMultipleObjectData` 方法
- 能够记录同步任务的执行日志
- 能够处理同步任务的异常情况
- **依赖关系**: 依赖 REQ-002syncObjectData 同步进度跟踪)
- **实现建议**: 使用现有的 Quartz 框架,在 task 目录下创建定时任务类
#### 2. 自动插入定时任务
- **需求描述**: 创建定时任务,自动执行满足条件的对象数据插入操作
- **优先级**: 高
- **验收标准**:
- 能够扫描所有对象,判断是否满足插入条件
- 能够调用 DataiIntegrationObjectController 的 `insertObjectDataToTarget``insertMultipleObjectDataToTarget` 方法
- 能够记录插入任务的执行日志
- 能够处理插入任务的异常情况
- **依赖关系**: 依赖 REQ-003insertObjectDataToTarget 插入数据进度跟踪)
- **实现建议**: 使用现有的 Quartz 框架,在 task 目录下创建定时任务类
#### 3. 自动更新定时任务
- **需求描述**: 创建定时任务,自动执行满足条件的对象数据更新操作
- **优先级**: 高
- **验收标准**:
- 能够扫描所有对象,判断是否满足更新条件
- 能够调用 DataiIntegrationObjectController 的 `updateObjectDataToTarget``updateMultipleObjectDataToTarget` 方法
- 能够记录更新任务的执行日志
- 能够处理更新任务的异常情况
- **依赖关系**: 依赖 REQ-004updateObjectDataToTarget 更新数据进度跟踪)
- **实现建议**: 使用现有的 Quartz 框架,在 task 目录下创建定时任务类
## 约束
列出需求实现时的约束条件,例如:
- 必须使用现有的 Quartz 框架datai-quartz 模块)
- 必须在 task 目录下创建定时任务类
- 必须通过扫描对象字段来判断是否满足条件
- 必须调用 DataiIntegrationObjectController 中的方法
- 定时任务的执行时间需要可配置
- 定时任务的启用/禁用需要可配置
- 定时任务的执行日志需要记录
## Rule Set
"请严格参考 @Authentication.canvas 中的状态机转移逻辑,不要自行发挥。"
**具体规则**
- 必须使用 Canvas 中定义的类名和方法名
- 必须遵循 Canvas 中定义的调用关系
- 必须参考 Canvas 中的流程图逻辑
- 必须使用现有的 Quartz 框架
- 必须在 task 目录下创建定时任务类
## 验收标准
定义验证需求是否满足的具体标准,例如:
- 功能完整性:能够正确执行自动同步、插入和更新操作
- 条件判断准确性:能够准确判断对象是否满足执行条件
- 日志完整性:能够记录定时任务的执行日志
- 异常处理:能够正确处理定时任务的异常情况
- 配置灵活性:能够配置定时任务的执行时间和启用/禁用状态
## 对象条件判断规则
### 自动同步条件
对象需要同时满足以下条件才会被自动同步:
1. `isWork = true`(启用同步)
2. `syncStatus = false`(当前没有正在执行的同步任务)
3. 对象配置完整api、label 等关键字段不为空)
### 存量同步 vs 增量同步
- 存量同步:`isIncremental = false`(增量更新为 false
- 增量同步:`isIncremental = true`(增量更新为 true
### 自动插入条件
对象需要同时满足以下条件才会被自动插入:
1. `isCreateable = true`(可创建)
2. 对象有本地数据(`totalRows > 0`
3. 对象配置完整api、label 等关键字段不为空)
4. 目标系统配置完整targetOrgType 不为空)
### 自动更新条件
对象需要同时满足以下条件才会被自动更新:
1. `isUpdateable = true`(可更新)
2. 对象有本地数据(`totalRows > 0`
3. 对象配置完整api、label 等关键字段不为空)
4. 目标系统配置完整targetOrgType 不为空)
## 风险
识别需求可能带来的风险,例如:
- 技术实现风险:定时任务执行时间可能与业务高峰期冲突
- 时间风险:实现定时任务可能需要一定时间
- 性能风险:定时任务执行可能影响系统性能
- 质量风险:条件判断逻辑可能存在错误
- 数据一致性风险:定时任务执行失败可能导致数据不一致
## 需求变更记录
| 日期 | 变更内容 | 变更原因 | 变更人 | 审核人 | 状态 |
|------|---------|---------|--------|--------|------|
| 2026-01-16 | 创建需求文档 | 新增需求 | 用户 | 待审核 | 待审核 |
## 相关人员
- **需求提出人**: 用户
- **需求负责人**: 待定
- **技术负责人**: 待定
- **测试负责人**: 待定
- **其他相关人员**: 待定
## 评审信息
- **评审日期**: 待定
- **评审人员**: 待定
- **评审结果**: 待定
- **评审意见**: 待定
- **修改建议**: 待定