diff --git a/backend/app/db/base.py b/backend/app/db/base.py index fe940284..24a40182 100644 --- a/backend/app/db/base.py +++ b/backend/app/db/base.py @@ -245,6 +245,9 @@ _COLUMN_MIGRATIONS: list[tuple[str, str, str]] = [ ("schedules", "target_kind", "VARCHAR(20) DEFAULT 'workflow'"), ("schedules", "target_id", "VARCHAR(32)"), ("schedule_fires", "eval_run_id", "VARCHAR(32)"), + # 编排完善(docs/design/orchestration-round/00-总方案.md §4):定时任务的触发方式。存量行都是 cron + ("schedules", "trigger_kind", "VARCHAR(20) DEFAULT 'cron'"), + ("schedules", "trigger", "JSON"), # 第 2 波:服务账号(users.kind);剖析上传表格源时的快照 ("users", "kind", "VARCHAR(20) DEFAULT 'person'"), ("catalog_profile_tasks", "snapshot_id", "VARCHAR(32)"), diff --git a/backend/app/db/models.py b/backend/app/db/models.py index b570945c..9565cecd 100644 --- a/backend/app/db/models.py +++ b/backend/app/db/models.py @@ -988,6 +988,11 @@ class Schedule(Base, TimestampMixin): target_kind: Mapped[str] = mapped_column(String(20), default="workflow") # 目标的 id:workflow 时同 workflow_id;其余两种是题集 id、数据源 id target_id: Mapped[str | None] = mapped_column(String(32), default=None, index=True) + # 怎么触发(docs/design/orchestration-round/00-总方案.md §4):cron 按 cron 表达式到点触发(加这一列之前的都是); + # event 由事件触发,trigger 写事件种类和对象(table.version / workflow.finished / source.changed,见 scheduler 的说明)。 + # event 时 cron 存空串(老表的非空约束),下一次触发时间为空 + trigger_kind: Mapped[str] = mapped_column(String(20), default="cron") + trigger: Mapped[dict[str, Any]] = mapped_column(default=dict) # 非空(老表的约束,只加不改的迁移放宽不了):目标不是工作流时存空串,读写都经 scheduler/service 里的一处封装 workflow_id: Mapped[str] = mapped_column(String(32), index=True) # 保存时的工作流名。工作流还在时接口给它现在的名字,删掉之后才用这一份