-- 观测数据下载缓存表（取代 spectrum_cache，支持多产品类型 + 多文件产物）
--
-- 与 spectrum_cache 的关键差异：
--   1. 新增 product 列：区分 spectrum / lightcurve / photometry / image
--   2. UNIQUE 加入 product：同一源的同一标识符可同时缓存光谱与光变
--   3. file_path/file_format 改为 artifacts_json：一个逻辑产物可对应多个物理文件
--      （如 Gaia EPOCH_PHOTOMETRY 的 G/BP/RP 三波段各一个 FITS）
--   4. 观测数据不可变，无 expires_at（与 vizier_query_cache 的 TTL 缓存不同）
--
-- 兼容：spectrum_cache 旧数据由 20260705140001_migrate_spectrum_to_observation.sql 迁移
CREATE TABLE IF NOT EXISTS observation_cache (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    source TEXT NOT NULL,              -- 'lamost' | 'gaia' | 'sdss' | 'desi' | ...
    product TEXT NOT NULL,             -- 'spectrum' | 'lightcurve' | 'photometry' | 'image'
    source_id TEXT NOT NULL,           -- obsid / source_id / plate-mjd-fiber / targetid...
    ra REAL,
    dec REAL,
    artifacts_json TEXT NOT NULL,      -- [{"path","format","size"}] 多文件产物
    meta_json TEXT,                    -- z/class/band 等元信息
    created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
    UNIQUE(source, product, source_id)
);
CREATE INDEX IF NOT EXISTS idx_obs_cache_source ON observation_cache(source, product, source_id);
