Files
model-platform/schedule
d91fb669e9 docs(schedule): record the deliberate ExecutionResult dataclass upgrade
Review (2026-08-21) found that stage 1 promoted ExecutionResult from a
plain class to @dataclass(frozen=True) along the way. No caller mutates
or compares these objects by identity, so the only externally visible
change is structured log output. User opted to keep the upgrade.

- domain/execution.py module docstring: explicit note that the frozen +
  value-equality form is a deliberate enhancement, not a behavioral
  accident
- CLAUDE.md "Schedule service layering" lesson: add a "don't silently
  upgrade dataclass-ness during a structural-only refactor" note so
  future refactors copy class definitions verbatim unless they intend
  to tighten semantics explicitly

No code change; tests still 29 green.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-09-02 10:10:41 +08:00
..
2026-08-17 15:59:19 +08:00
2026-08-20 10:26:44 +08:00

Schedule Executor

独立调度执行服务,内置 APScheduler。

  • Cron 任务持久化到 MySQL 的 apscheduler_jobs 表;
  • FastAPI Backend 创建运行记录和 Outbox 事件后,通过 HTTP 尝试立即推送;
  • HTTP 推送失败时,Executor 继续轮询 MySQL outbox_events,保证任务不会丢失;
  • Executor 负责 DAG 节点派发、稳定版本执行、重试、状态推进和结果回写;
  • 不依赖 Redis,MySQL 是调度状态与幂等状态的唯一权威。