Add plan catalog and subscription schema support, seed baselines, and real importers for core domestic subscriptions plus stable official pricing sources. This commit also hardens the shared fetch layers so the importers can support live collection and database writes instead of relying on manual placeholders alone.
42 lines
1.6 KiB
SQL
42 lines
1.6 KiB
SQL
-- 第一模块:每日关键信号快照
|
||
|
||
CREATE TABLE IF NOT EXISTS daily_signal_snapshot (
|
||
id BIGSERIAL PRIMARY KEY,
|
||
signal_date DATE NOT NULL UNIQUE,
|
||
status TEXT NOT NULL DEFAULT 'generated',
|
||
new_models INTEGER NOT NULL DEFAULT 0,
|
||
price_changes INTEGER NOT NULL DEFAULT 0,
|
||
official_free INTEGER NOT NULL DEFAULT 0,
|
||
aggregator_free INTEGER NOT NULL DEFAULT 0,
|
||
unknown_free INTEGER NOT NULL DEFAULT 0,
|
||
event_count INTEGER NOT NULL DEFAULT 0,
|
||
page_mode TEXT NOT NULL DEFAULT 'standard',
|
||
event_type_counts JSONB NOT NULL DEFAULT '{}'::jsonb,
|
||
top_events JSONB NOT NULL DEFAULT '[]'::jsonb,
|
||
source_audit TEXT,
|
||
generated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
|
||
);
|
||
|
||
CREATE INDEX IF NOT EXISTS idx_daily_signal_snapshot_date ON daily_signal_snapshot(signal_date);
|
||
CREATE INDEX IF NOT EXISTS idx_daily_signal_snapshot_status ON daily_signal_snapshot(status);
|
||
|
||
COMMENT ON TABLE daily_signal_snapshot IS '第一模块产出的每日关键信号快照,用于日报与其他下游形态消费';
|
||
COMMENT ON COLUMN daily_signal_snapshot.top_events IS '已筛选的关键事件数组,JSONB 序列化 ModelEvent';
|
||
COMMENT ON COLUMN daily_signal_snapshot.event_type_counts IS '按事件类型聚合的数量统计';
|
||
|
||
DO $$
|
||
BEGIN
|
||
IF NOT EXISTS (
|
||
SELECT 1
|
||
FROM pg_trigger
|
||
WHERE tgname = 'daily_signal_snapshot_updated_at'
|
||
) THEN
|
||
CREATE TRIGGER daily_signal_snapshot_updated_at
|
||
BEFORE UPDATE ON daily_signal_snapshot
|
||
FOR EACH ROW
|
||
EXECUTE FUNCTION update_updated_at_column();
|
||
END IF;
|
||
END
|
||
$$;
|