datai/datai-scenes/datai-scene-salesforce/docs/prompts/006-metadata-change-auto-sync.md
Kris 21c82a4b36 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

7.5 KiB
Raw Blame History

Prompt First - 元数据变更自动同步本地数据库实现

输入引用

引用相关的 docs 文档链接:

Context Maps

强制列出本次 Prompt 依赖的 Canvas 文件:

  • Authentication.canvas - 项目架构视觉化展示
  • 相关节点: DataiIntegrationMetadataChangeController - 对象元数据变更控制器
  • 相关节点: DataiIntegrationMetadataChangeService - 对象元数据变更服务
  • 相关节点: DataiIntegrationObject - 对象同步控制实体
  • 相关节点: DataiIntegrationMetadataChange - 对象元数据变更实体

目标

实现元数据变更自动同步的定时任务类,自动扫描未同步的元数据变更记录,根据元数据变更的类型、操作类型、对象配置等信息判断是否应该自动同步,并调用 DataiIntegrationMetadataChangeService 的方法执行同步操作。

输出格式

MetadataChangeAutoSyncTask.java - 元数据变更自动同步任务

  • 路径:d:\idea_demo\datai\datai-scenes\datai-scene-salesforce\datai-salesforce-integration\src\main\java\com\datai\integration\task\MetadataChangeAutoSyncTask.java
  • 类名MetadataChangeAutoSyncTask
  • Bean 名称metadataChangeAutoSyncTask
  • 方法autoSyncMetadataChanges()
  • 功能:扫描所有未同步的元数据变更记录,判断是否满足自动同步条件,调用相应的同步方法

约束

  • 必须参考 ObjectSyncTask 的代码风格
  • 必须使用 @Component 注解,指定 bean 名称
  • 必须使用 @Slf4j 注解进行日志记录
  • 必须使用 @Autowired 注入 DataiIntegrationMetadataChangeService 和 DataiIntegrationObjectService
  • 必须定义公共方法作为定时任务的执行方法
  • 必须在方法内部有 try-catch 异常处理
  • 必须记录详细的日志信息
  • 必须扫描所有未同步的元数据变更记录syncStatus = false 或 null
  • 必须根据元数据变更的类型、操作类型、对象配置等信息判断是否应该自动同步
  • 必须调用 DataiIntegrationMetadataChangeService 的方法,而不是 Controller 的方法

Rule Set

"请严格参考 @Authentication.canvas 中的状态机转移逻辑,不要自行发挥。"

具体规则

  • 必须使用 Canvas 中定义的类名和方法名
  • 必须遵循 Canvas 中定义的调用关系
  • 必须参考 Canvas 中的流程图逻辑
  • 必须参考 ObjectSyncTask 的代码风格

Prompt Content 详细要求

1. MetadataChangeAutoSyncTask.java - 元数据变更自动同步任务

  • 参考 ObjectSyncTask 的代码风格
  • 使用 @Component("metadataChangeAutoSyncTask") 注解
  • 使用 @Slf4j 注解
  • 使用 @Autowired 注入 DataiIntegrationMetadataChangeService 和 DataiIntegrationObjectService
  • 定义 public void autoSyncMetadataChanges() 方法
  • 方法功能:
    1. 查询所有未同步的元数据变更记录syncStatus = false 或 null
    2. 遍历每个元数据变更记录,判断是否满足自动同步条件
    3. 对于满足条件的元数据变更记录,调用相应的同步方法
    4. 记录详细的日志信息
    5. 使用 try-catch 处理异常

2. 元数据变更自动同步条件判断

  • 通用条件:

    • syncStatus = false 或 null未同步
    • retryCount < 3重试次数小于3次
  • 对象变更条件changeType = OBJECT

    • 对象配置完整objectApi、objectLabel 不为空)
    • 对象启用同步DataiIntegrationObject.isWork = true
    • 对象当前没有正在执行的同步任务DataiIntegrationObject.syncStatus = false
    • 所有操作类型CREATE、UPDATE、DELETE都允许自动同步
  • 字段变更条件changeType = FIELD

    • 字段配置完整objectApi、fieldApi、fieldLabel 不为空)
    • 对象启用同步DataiIntegrationObject.isWork = true
    • 对象当前没有正在执行的同步任务DataiIntegrationObject.syncStatus = false
    • 所有操作类型CREATE、UPDATE、DELETE都允许自动同步

3. 同步方法调用

  • 调用 DataiIntegrationMetadataChangeService.syncToLocalDatabase(Long id) 方法同步单个元数据变更
  • 处理同步结果,更新元数据变更记录的同步状态
  • 使用 try-catch 处理异常,单个元数据变更同步失败不影响其他元数据变更的同步

4. 同步失败处理

  • 如果同步失败,需要:
    • 更新元数据变更记录的 syncErrorMessage 字段,记录失败原因
    • 增加元数据变更记录的 retryCount 字段
    • 更新元数据变更记录的 lastRetryTime 字段
    • 记录详细的错误日志

5. 日志格式

  • 开始执行时log.info("开始执行元数据变更自动同步任务")
  • 查询未同步的元数据变更记录时log.info("查询到 {} 条未同步的元数据变更记录", count)
  • 开始同步元数据变更时log.info("开始同步元数据变更变更ID: {}, 变更类型: {}, 操作类型: {}, 对象API: {}", id, changeType, operationType, objectApi)
  • 元数据变更同步成功时log.info("元数据变更同步成功变更ID: {}", id)
  • 元数据变更同步失败时log.error("元数据变更同步失败变更ID: {}", id, e)
  • 元数据变更不满足同步条件时log.debug("元数据变更不满足同步条件跳过同步变更ID: {}, 变更类型: {}, 操作类型: {}", id, changeType, operationType)
  • 任务完成时log.info("元数据变更自动同步任务完成,共扫描 {} 条记录,成功同步 {} 条,跳过 {} 条,失败 {} 条", totalCount, syncCount, skipCount, failCount)

6. 条件判断方法

  • 创建独立的条件判断方法:
    • isAutoSyncConditionMet(DataiIntegrationMetadataChange metadataChange, DataiIntegrationObject object):判断元数据变更是否满足自动同步条件
    • 该方法需要查询对象配置DataiIntegrationObject根据对象配置判断是否满足自动同步条件
    • 该方法需要详细列出判断条件,确保条件判断逻辑准确

7. 异常处理

  • 外层 try-catch 处理任务级别的异常
  • 内层 try-catch 处理单个元数据变更级别的异常
  • 单个元数据变更同步失败不影响其他元数据变更的同步
  • 记录详细的错误日志,便于问题排查

8. 性能考虑

  • 可以考虑批量处理,减少数据库查询次数
  • 可以考虑异步处理,提高执行效率
  • 可以考虑缓存对象配置,减少重复查询

验收标准

  • 功能完整性:定时任务类能够正确实现
  • 代码正确性:代码能够编译通过,无语法错误
  • 代码风格:符合 ObjectSyncTask 的代码风格
  • 日志完整性:每个任务都有详细的日志记录
  • 异常处理:每个任务都有完善的异常处理
  • 条件判断准确性:能够准确判断元数据变更是否满足自动同步条件

风险

  • 输出质量风险:生成的代码可能存在逻辑错误
  • 技术实现风险:条件判断逻辑可能存在错误,导致元数据变更被错误地同步或遗漏
  • 时间成本风险:生成代码可能需要一定时间
  • 其他潜在风险:对象配置查询可能存在性能问题

使用记录

日期 使用场景 输入参数 输出结果 反馈 改进措施
2026-01-16 实现元数据变更自动同步本地数据库 REQ-006, 0006-metadata-change-auto-sync.md MetadataChangeAutoSyncTask.java 的 Java 代码 待反馈 待改进