-- A-3 (plan crawl-24x7-1): 소스 레지스트리 증축 — additive only.
-- fetch_method     : rss / rss+page / sitemap+page / page / api / signal-only
-- fulltext_policy  : none(현행 유지) / page(기사 페이지 fetch 후 4-tier 승격) / feed-full(피드 본문이 전문)
-- auth_profile     : NULL=공개, 값=구독 세션 키 (B-3 Playwright 어댑터용 슬롯)
-- poll_interval_minutes : 소스별 차등 폴링 (NULL=전역 6h 사이클)
-- etag / last_modified  : 조건부 GET 워터마크 — 받은 그대로 저장·재전송 (상태는 전부 DB, APScheduler in-process)
-- feed_content_hash     : CDN ETag 회전 대비 콘텐츠 해시 변경감지 병행
-- selector_override     : 추출 실패 잦은 소스의 site-specific CSS selector (JSONB)
-- parser_quirk          : rdf / table-strip / gn-redirect 등 파서 특이 케이스
ALTER TABLE news_sources
    ADD COLUMN IF NOT EXISTS fetch_method VARCHAR(20) NOT NULL DEFAULT 'rss',
    ADD COLUMN IF NOT EXISTS fulltext_policy VARCHAR(20) NOT NULL DEFAULT 'none',
    ADD COLUMN IF NOT EXISTS auth_profile VARCHAR(50),
    ADD COLUMN IF NOT EXISTS poll_interval_minutes INTEGER,
    ADD COLUMN IF NOT EXISTS etag TEXT,
    ADD COLUMN IF NOT EXISTS last_modified TEXT,
    ADD COLUMN IF NOT EXISTS feed_content_hash VARCHAR(64),
    ADD COLUMN IF NOT EXISTS selector_override JSONB,
    ADD COLUMN IF NOT EXISTS parser_quirk VARCHAR(30);
