-- 233_study_quiz_session_jobs.sql
-- Phase 4-B v1: 세션 단위 분석 (자유 마크다운) 전용 큐.
-- study_question_jobs 와 분리 — FK 단일 의미 (study_quiz_session_id NOT NULL)
-- + 운영 SQL 명확성 + 4-A/4-B 가드/재시도 정책 차이.
--
-- terminal status (completed/failed/skipped) 는 completed_at 항상 기록.
-- 재시도는 기존 row 를 pending 으로 되살리지 않고 새 row 생성 — 이력 누적.

CREATE TABLE study_quiz_session_jobs (
    id                       BIGSERIAL    PRIMARY KEY,
    study_quiz_session_id    BIGINT       NOT NULL REFERENCES study_quiz_sessions(id) ON DELETE CASCADE,
    user_id                  BIGINT       NOT NULL REFERENCES users(id)               ON DELETE CASCADE,
    status                   VARCHAR(20)  NOT NULL DEFAULT 'pending',
    attempts                 SMALLINT     NOT NULL DEFAULT 0,
    max_attempts             SMALLINT     NOT NULL DEFAULT 2,
    error_code               VARCHAR(40),
    error_message            TEXT,
    payload                  JSONB,
    created_at               TIMESTAMPTZ  NOT NULL DEFAULT now(),
    started_at               TIMESTAMPTZ,
    completed_at             TIMESTAMPTZ
);
