Data flow
Schedule publish (author + worker)
Author picks UTC datetime in the editor. Worker cron runs every 5 minutes to publish overdue scheduled articles. Publish now bypasses the worker.
sequenceDiagram
participant A as Author
participant API as FastAPI
participant DB as MySQL
participant W as Arq worker
A->>API: POST /author/articles/{id}/schedule
API->>DB: status=scheduled
loop Every 5 min
W->>DB: scheduled_for <= now
W->>DB: publish + clear scheduled_for
end
POST /author/articles/{id}/cancel-schedule→ draft- Worker must run in production (
arqvia systemd — seescripts/ops/docqstack-worker.service.example)