-- 2026-06-14 PR-Background-Jobs-Observability: 큐 밖 관리 스크립트(백필 등) 진행 가시화.
-- processing_queue 는 파이프라인 stage 전용 — hier_overnight_backfill / section_summary_pilot
-- 같은 off-queue 관리 스크립트는 여기에 진행상황을 남겨 대시보드 보드가 노출한다.
-- worker_jobs(user_id NOT NULL, worker-pool 전용)와 별개 — 이건 owner 없는 관리 작업 heartbeat.
-- 단일 statement (asyncpg multi-statement 불허 컨벤션). 인덱스는 소량 테이블이라 생략.
CREATE TABLE IF NOT EXISTS background_jobs (
    id           BIGSERIAL PRIMARY KEY,
    kind         TEXT NOT NULL,                 -- 'hier_redecompose' | 'section_summary' | ...
    label        TEXT,                          -- 사람이 읽는 대상 표기 (예: 'doc 5210 (Sec VIII)')
    state        TEXT NOT NULL DEFAULT 'running'
                    CHECK (state IN ('running', 'done', 'failed')),
    processed    INTEGER NOT NULL DEFAULT 0,    -- 처리한 단위 수 (절/leaf 등)
    total        INTEGER,                       -- 전체 단위 수 (미상이면 NULL)
    detail       JSONB NOT NULL DEFAULT '{}'::jsonb,
    error        TEXT,
    started_at   TIMESTAMPTZ NOT NULL DEFAULT now(),
    updated_at   TIMESTAMPTZ NOT NULL DEFAULT now(),
    finished_at  TIMESTAMPTZ
);
