datai/docs/archive/prompts/005-scheduled-tasks-implementation.md

8.4 KiB
Raw Blame History

定时任务自动同步、插入和更新对象数据实现提示词

输入引用

引用相关的 docs 文档链接:

Context Maps

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

  • Authentication.canvas - 项目架构视觉化展示
  • 相关节点: DataiIntegrationObjectController - 对象同步控制接口
  • 相关节点: DataiIntegrationObjectService - 对象同步服务

目标

实现定时任务自动同步、插入和更新对象数据功能,包括:

  1. 在 task 目录下创建三个定时任务类
  2. 参考 RateLimitResetTask 的写法,使用 @Component、@Slf4j、@Autowired 注解
  3. 实现对象自动同步任务,扫描满足条件的对象并调用同步方法
  4. 实现对象自动插入任务,扫描满足条件的对象并调用插入方法
  5. 实现对象自动更新任务,扫描满足条件的对象并调用更新方法
  6. 每个任务都有详细的日志记录和异常处理

输出格式

输出以下 Java 代码文件:

  1. ObjectSyncTask.java - 对象自动同步任务

    • 路径:d:\idea_demo\datai\datai-scenes\datai-scene-salesforce\datai-salesforce-integration\src\main\java\com\datai\integration\task\ObjectSyncTask.java
    • 类名ObjectSyncTask
    • Bean 名称objectSyncTask
    • 方法autoSyncObjects()
    • 功能:扫描所有对象,判断是否满足同步条件,调用相应的同步方法
  2. ObjectInsertTask.java - 对象自动插入任务

    • 路径:d:\idea_demo\datai\datai-scenes\datai-scene-salesforce\datai-salesforce-integration\src\main\java\com\datai\integration\task\ObjectInsertTask.java
    • 类名ObjectInsertTask
    • Bean 名称objectInsertTask
    • 方法autoInsertObjects()
    • 功能:扫描所有对象,判断是否满足插入条件,调用相应的插入方法
  3. ObjectUpdateTask.java - 对象自动更新任务

    • 路径:d:\idea_demo\datai\datai-scenes\datai-scene-salesforce\datai-salesforce-integration\src\main\java\com\datai\integration\task\ObjectUpdateTask.java
    • 类名ObjectUpdateTask
    • Bean 名称objectUpdateTask
    • 方法autoUpdateObjects()
    • 功能:扫描所有对象,判断是否满足更新条件,调用相应的更新方法

约束

列出使用此提示词时的约束条件,例如:

  • 必须参考 RateLimitResetTask 的写法
  • 必须使用 @Component 注解,指定 bean 名称
  • 必须使用 @Slf4j 注解进行日志记录
  • 必须使用 @Autowired 注入 IDataiIntegrationObjectService
  • 必须定义公共方法作为定时任务的执行方法
  • 必须在方法内部有 try-catch 异常处理
  • 必须记录详细的日志信息
  • 必须扫描所有对象,判断是否满足执行条件
  • 必须根据对象的字段判断执行存量同步还是增量同步
  • 必须调用 IDataiIntegrationObjectService 的方法,而不是 Controller 的方法

Rule Set

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

具体规则

  • 必须使用 Canvas 中定义的类名和方法名
  • 必须遵循 Canvas 中定义的调用关系
  • 必须参考 Canvas 中的流程图逻辑
  • 必须参考 RateLimitResetTask 的代码风格
  • 必须调用 IDataiIntegrationObjectService 的方法,而不是 Controller 的方法
  • 必须通过扫描对象字段来判断是否满足条件

Prompt Content

请根据以下要求生成三个定时任务类的代码:

1. ObjectSyncTask.java - 对象自动同步任务

要求

  • 参考 RateLimitResetTask 的代码风格
  • 使用 @Component("objectSyncTask") 注解
  • 使用 @Slf4j 注解
  • 使用 @Autowired 注入 IDataiIntegrationObjectService
  • 定义 public void autoSyncObjects() 方法
  • 方法功能:
    1. 查询所有对象
    2. 遍历每个对象,判断是否满足同步条件:
      • isWork = true启用同步
      • syncStatus = false当前没有正在执行的同步任务
      • 对象配置完整api、label 等关键字段不为空)
    3. 对于满足条件的对象:
      • 如果 isIncremental = false调用 syncSingleObjectData(id) 执行存量同步
      • 如果 isIncremental = true调用 syncSingleObjectData(id) 执行增量同步
    4. 记录详细的日志信息
    5. 使用 try-catch 处理异常

2. ObjectInsertTask.java - 对象自动插入任务

要求

  • 参考 RateLimitResetTask 的代码风格
  • 使用 @Component("objectInsertTask") 注解
  • 使用 @Slf4j 注解
  • 使用 @Autowired 注入 IDataiIntegrationObjectService
  • 定义 public void autoInsertObjects() 方法
  • 方法功能:
    1. 查询所有对象
    2. 遍历每个对象,判断是否满足插入条件:
      • isCreateable = true可创建
      • totalRows > 0对象有本地数据
      • 对象配置完整api、label 等关键字段不为空)
    3. 对于满足条件的对象:
      • 调用 insertObjectDataToTarget(id, targetOrgType) 方法执行插入操作
      • targetOrgType 可以从配置中读取或使用默认值
    4. 记录详细的日志信息
    5. 使用 try-catch 处理异常

3. ObjectUpdateTask.java - 对象自动更新任务

要求

  • 参考 RateLimitResetTask 的代码风格
  • 使用 @Component("objectUpdateTask") 注解
  • 使用 @Slf4j 注解
  • 使用 @Autowired 注入 IDataiIntegrationObjectService
  • 定义 public void autoUpdateObjects() 方法
  • 方法功能:
    1. 查询所有对象
    2. 遍历每个对象,判断是否满足更新条件:
      • isUpdateable = true可更新
      • totalRows > 0对象有本地数据
      • 对象配置完整api、label 等关键字段不为空)
    3. 对于满足条件的对象:
      • 调用 updateObjectDataToTarget(id, targetOrgType) 方法执行更新操作
      • targetOrgType 可以从配置中读取或使用默认值
    4. 记录详细的日志信息
    5. 使用 try-catch 处理异常

通用要求

  1. 日志格式:

    • 开始执行时log.info("开始执行对象自动同步任务")
    • 执行成功时log.info("对象自动同步任务完成,共处理 {} 个对象", count)
    • 执行失败时log.error("执行对象自动同步任务失败", e)
  2. 异常处理:

    • 每个对象的操作都应该有独立的 try-catch
    • 单个对象操作失败不应该影响其他对象的处理
    • 记录失败的对象ID和错误信息
  3. 性能考虑:

    • 可以考虑批量处理,减少数据库查询次数
    • 可以考虑异步处理,提高执行效率

验收标准

定义验证输出质量的具体标准,例如:

  • 功能完整性:三个定时任务类都能正确实现
  • 代码正确性:代码能够编译通过,无语法错误
  • 代码风格:符合 RateLimitResetTask 的代码风格
  • 日志完整性:每个任务都有详细的日志记录
  • 异常处理:每个任务都有完善的异常处理
  • 条件判断准确性:能够准确判断对象是否满足执行条件

风险

识别使用此提示词可能带来的风险,例如:

  • 输出质量风险:生成的代码可能存在逻辑错误
  • 技术实现风险:定时任务的执行时间可能与业务高峰期冲突
  • 时间成本风险:生成代码可能需要一定时间
  • 其他潜在风险:条件判断逻辑可能存在错误

使用记录

日期 使用场景 输入参数 输出结果 反馈 改进措施
2026-01-16 实现定时任务自动同步、插入和更新对象数据 REQ-005, 0005-scheduled-tasks-implementation.md 三个定时任务类的 Java 代码 待反馈 待改进

版本

  • 版本号: v1.0.0
  • 创建日期: 2026-01-16
  • 创建人: 用户
  • 最后更新: 2026-01-16