-- 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 );