-- 220_study_q_related_cache.sql
-- PR-12-A 후속: study_questions 에 related-types 결과 영속 캐시.
-- 매 진입마다 HNSW cosine 검색 반복하던 비용을 1회 계산 + 영속 저장으로 전환.
--
-- 임베딩 워커가 ready 처리 후 같은 트랜잭션에서 채움. 같은 topic 다른 문제가
-- ready 가 되면 invalidation 으로 related_computed_at = NULL 마킹 → cron 재계산.
--
-- 컬럼:
--   related_repeat / related_similar JSONB — [{id, sim, exam_round, exam_question_number, subject, scope, qtext}]
--   related_repeat_round_count / related_similar_round_count INTEGER — 회차 distinct 수
--   related_repeat_grade VARCHAR(50) — 단골/잘 나오는 반복 출제/반복 출제/신출/빈출 (또는 NULL)
--   related_computed_at TIMESTAMPTZ — NULL = stale, 다음 cron 재계산 대상
--   related_threshold_version VARCHAR(20) — 'v1_0.95_0.85' 같은 임계값 fingerprint

ALTER TABLE study_questions
    ADD COLUMN IF NOT EXISTS related_repeat              JSONB,
    ADD COLUMN IF NOT EXISTS related_similar             JSONB,
    ADD COLUMN IF NOT EXISTS related_repeat_round_count  INTEGER,
    ADD COLUMN IF NOT EXISTS related_similar_round_count INTEGER,
    ADD COLUMN IF NOT EXISTS related_repeat_grade        VARCHAR(50),
    ADD COLUMN IF NOT EXISTS related_computed_at         TIMESTAMPTZ,
    ADD COLUMN IF NOT EXISTS related_threshold_version   VARCHAR(20);
