feat(automations): ctx.tasks.scheduleStatusChange — отложенная смена статуса (воркер 5с, отмена при ручном переходе)

This commit is contained in:
2026-09-17 16:38:56 +03:00
parent c1fe1c4e02
commit e4f9a1992a
9 changed files with 236 additions and 1 deletions

View File

@@ -0,0 +1,18 @@
-- Отложенная смена статуса задачи (автоматизации, ctx.tasks.scheduleStatusChange).
-- Воркер каждые 5 секунд подбирает просроченные строки и переводит задачу
-- в target_status_id, только если она всё ещё в expected_status_id
-- (ручной переход в другой статус отменяет отложенное действие).
CREATE TABLE IF NOT EXISTS delayed_status_changes (
id SERIAL PRIMARY KEY,
organization_id INTEGER NOT NULL REFERENCES organizations(id) ON DELETE CASCADE,
task_id INTEGER NOT NULL REFERENCES tasks(id) ON DELETE CASCADE,
form_id INTEGER NOT NULL,
expected_status_id INTEGER NOT NULL,
target_status_id INTEGER NOT NULL,
run_at TIMESTAMPTZ NOT NULL,
executed_at TIMESTAMPTZ,
created_at TIMESTAMPTZ NOT NULL DEFAULT now()
);
CREATE INDEX IF NOT EXISTS delayed_status_changes_run_at_idx
ON delayed_status_changes (run_at) WHERE executed_at IS NULL;