## ADDED Requirements ### Requirement: 同步任务管理提供任务配置能力 系统SHALL提供同步任务配置功能,允许管理员通过前端界面或后端API配置同步任务参数,包括: - 任务名称 - 同步类型(full/incremental) - 增量同步的回溯天数(默认3天) - 定时同步的Cron表达式或固定间隔(如每30分钟) - 是否启用该任务 配置信息SHALL持久化存储在IRIS全局变量`^DRG.HIS.SyncConfig`中。 #### Scenario: 创建新的增量同步任务 - **WHEN** 管理员通过前端界面创建一条新的同步任务,设置任务名称为`"日常增量同步"`,同步类型为`incremental`,回溯天数为`3`,定时间隔为`30分钟`,启用状态为`true` - **THEN** 系统SHALL将配置信息存入`^DRG.HIS.SyncConfig`,任务立即生效,按照30分钟间隔自动执行 --- #### Scenario: 修改已有同步任务的配置 - **WHEN** 管理员修改已有同步任务的定时间隔从`30分钟`改为`60分钟` - **THEN** 系统SHALL更新`^DRG.HIS.SyncConfig`中的配置,下一次定时触发按照新的间隔执行 --- ### Requirement: 同步任务管理提供手动触发同步能力 系统SHALL提供手动触发同步的接口,允许管理员在前端界面点击「立即同步」按钮,触发指定类型的同步任务(全量或增量)。 #### Scenario: 管理员手动触发增量同步 - **WHEN** 管理员在前端`DataSync.tsx`页面点击某条增量同步任务的「启动」按钮 - **THEN** 系统SHALL立即执行一次增量同步,并在前端页面实时更新任务状态(running → success/failed) --- #### Scenario: 管理员手动触发全量同步并指定日期范围 - **WHEN** 管理员在前端界面触发全量同步,并指定日期范围为`2026-01-01`到`2026-06-14` - **THEN** 系统SHALL按照指定日期范围执行全量同步,并在前端展示同步进度(如`"正在处理:第3段/共26段"`) --- ### Requirement: 同步任务管理提供同步状态监控能力 系统SHALL在前端`DataSync.tsx`页面展示同步任务的实时状态,包括: - 任务名称、同步类型、状态(running/success/failed/stopped) - 最后一次同步时间、下一次预计同步时间 - 最近一次同步的成功/失败记录数 - 同步进度(如增量同步正在进行中,显示已处理数量) #### Scenario: 前端页面展示同步任务列表 - **WHEN** 管理员访问`DataSync.tsx`页面 - **THEN** 系统SHALL从后端API(`GET /api/his-sync/tasks`)获取所有同步任务的配置和状态,并以表格形式展示 --- #### Scenario: 同步任务正在运行中,前端页面显示进度 - **WHEN** 增量同步任务正在执行,已处理30条数据,总共预估100条 - **THEN** 前端页面SHALL显示该任务状态为`running`,进度条显示`30%`,并定期自动刷新状态(每5秒) --- ### Requirement: 同步任务管理提供失败重试能力 系统SHALL在同步任务失败后,允许管理员手动触发重试。重试时SHALL重新执行该任务,并记录新的同步日志。 #### Scenario: 同步任务失败后管理员点击重试 - **WHEN** 某条同步任务状态为`failed`,管理员点击「重试」按钮 - **THEN** 系统SHALL重新执行该同步任务(增量同步使用原始时间窗口,全量同步使用原始日期范围),并在重试完成后更新任务状态和日志 --- #### Scenario: 重试成功 - **WHEN** 重试执行成功,所有数据写入正常 - **THEN** 系统SHALL将任务状态更新为`success`,并记录一条新的同步日志(状态:success) --- ### Requirement: 同步任务管理提供同步日志查询能力 系统SHALL提供同步日志查询接口,支持按任务名称、同步类型、状态、时间范围查询历史同步日志。 #### Scenario: 查询指定任务的同步历史 - **WHEN** 管理员在`DataSync.tsx`页面点击某条任务的「详情」按钮 - **THEN** 系统SHALL调用`GET /api/his-sync/logs?taskId={taskId}`获取该任务的历史同步日志,并在弹窗中展示(包括每次同步的时间、状态、成功/失败数量、错误信息)