CREATE TABLE IF NOT EXISTS short_tf_signal_samples ( id BIGSERIAL PRIMARY KEY, signal_time TEXT NOT NULL, symbol TEXT NOT NULL, timeframe TEXT NOT NULL, signal_code TEXT NOT NULL, signal_label TEXT NOT NULL, entry_price DOUBLE PRECISION NOT NULL, volume_24h DOUBLE PRECISION DEFAULT 0, change_24h DOUBLE PRECISION DEFAULT 0, gain_pct DOUBLE PRECISION DEFAULT 0, vol_ratio DOUBLE PRECISION DEFAULT 0, body_ratio DOUBLE PRECISION DEFAULT 0, age_bars INTEGER DEFAULT 0, resonance INTEGER NOT NULL DEFAULT 0, context_json TEXT DEFAULT '{}', review_status TEXT NOT NULL DEFAULT 'pending', created_at TEXT NOT NULL ); CREATE INDEX IF NOT EXISTS idx_short_tf_samples_time ON short_tf_signal_samples(signal_time DESC); CREATE INDEX IF NOT EXISTS idx_short_tf_samples_symbol_time ON short_tf_signal_samples(symbol, signal_time DESC); CREATE INDEX IF NOT EXISTS idx_short_tf_samples_code_time ON short_tf_signal_samples(signal_code, signal_time DESC); CREATE UNIQUE INDEX IF NOT EXISTS idx_short_tf_samples_dedupe ON short_tf_signal_samples(symbol, timeframe, signal_code, signal_time);