6e6e19cccb
Replace the legacy target_platform string on schedule tasks with a workspace-aware auto-publish payload (auto_publish + publish_account_ids JSONB + cover_asset_url + cover_image_asset_id) and migrate the schema, sqlc queries, generated models, domain struct, ScheduleTaskService DTOs, and dispatch worker to round-trip the new fields. PromptRuleGeneration gains a WithPublishJobService hook so executeGeneration can enqueue an auto-publish job once the article is ready, and worker-generate wires the publish-job service in. On the admin-web side, extract PublishArticleModal's account-card builders into a shared publish-account-cards module, rebuild GenerateTaskDrawer's schedule mode around account selection plus a CoverPickerModal, and surface the new "auto publish" column on ScheduleTaskTab. Shared types and i18n strings cover the new fields. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
18 lines
830 B
SQL
18 lines
830 B
SQL
CREATE TABLE schedule_tasks (
|
|
id BIGSERIAL PRIMARY KEY,
|
|
tenant_id BIGINT NOT NULL REFERENCES tenants(id),
|
|
prompt_rule_id BIGINT NOT NULL REFERENCES prompt_rules(id),
|
|
brand_id BIGINT REFERENCES brands(id),
|
|
name VARCHAR(100) NOT NULL,
|
|
cron_expr VARCHAR(100) NOT NULL,
|
|
start_at TIMESTAMPTZ,
|
|
end_at TIMESTAMPTZ,
|
|
next_run_at TIMESTAMPTZ,
|
|
status VARCHAR(20) NOT NULL DEFAULT 'enabled',
|
|
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
|
updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
|
deleted_at TIMESTAMPTZ
|
|
);
|
|
CREATE INDEX idx_schedule_task_tenant ON schedule_tasks(tenant_id, created_at DESC);
|
|
CREATE INDEX idx_schedule_task_next_run ON schedule_tasks(status, next_run_at) WHERE deleted_at IS NULL;
|