| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- -- ============================================================
- -- 数仓同步 + 卡片趋势 扩展建表/改表脚本(PostgreSQL)
- -- ⚠️ 需大侠评审确认后手动执行;执行器不主动连库执行
- -- 2026-06-25
- -- 依赖:先执行 2026-06-24-rating-recommend-rule.sql(已建 t_rating_recommend_rule)
- -- ============================================================
- -- ------------------------------------------------------------
- -- 1. 规则主表加列:卡片唯一ID/卡号/价值/批次号
- -- ------------------------------------------------------------
- ALTER TABLE t_rating_recommend_rule ADD COLUMN IF NOT EXISTS card_id VARCHAR(64);
- ALTER TABLE t_rating_recommend_rule ADD COLUMN IF NOT EXISTS card_no VARCHAR(64);
- ALTER TABLE t_rating_recommend_rule ADD COLUMN IF NOT EXISTS current_value NUMERIC(12,2);
- ALTER TABLE t_rating_recommend_rule ADD COLUMN IF NOT EXISTS value_change_pct NUMERIC(8,4);
- ALTER TABLE t_rating_recommend_rule ADD COLUMN IF NOT EXISTS value_min NUMERIC(12,2);
- ALTER TABLE t_rating_recommend_rule ADD COLUMN IF NOT EXISTS value_max NUMERIC(12,2);
- ALTER TABLE t_rating_recommend_rule ADD COLUMN IF NOT EXISTS batch_no VARCHAR(32);
- COMMENT ON COLUMN t_rating_recommend_rule.card_id IS '数仓卡片唯一ID(去重键)';
- COMMENT ON COLUMN t_rating_recommend_rule.card_no IS '卡号(如 066/080)';
- COMMENT ON COLUMN t_rating_recommend_rule.current_value IS '当前价';
- COMMENT ON COLUMN t_rating_recommend_rule.value_change_pct IS '涨跌幅(百分数,如 7.05 表示 +7.05%)';
- COMMENT ON COLUMN t_rating_recommend_rule.value_min IS '价格区间下限';
- COMMENT ON COLUMN t_rating_recommend_rule.value_max IS '价格区间上限';
- COMMENT ON COLUMN t_rating_recommend_rule.batch_no IS '同步批次号(如 2026062501)';
- -- 批次内卡片唯一
- CREATE UNIQUE INDEX IF NOT EXISTS uk_rrr_batch_card ON t_rating_recommend_rule (batch_no, card_id);
- -- 带批次的特征降级查询索引
- CREATE INDEX IF NOT EXISTS idx_rrr_batch_feature ON t_rating_recommend_rule (batch_no, series, card_set, year);
- -- ------------------------------------------------------------
- -- 2. POP 明细表(按机构,一卡多行)
- -- ------------------------------------------------------------
- CREATE TABLE IF NOT EXISTS t_rating_card_pop (
- id BIGSERIAL PRIMARY KEY,
- card_id VARCHAR(64) NOT NULL,
- agency VARCHAR(32) NOT NULL,
- grade_all INT,
- grade_10 INT,
- grade_9 INT,
- grade_8 INT,
- grade_7 INT,
- batch_no VARCHAR(32) NOT NULL,
- create_time TIMESTAMP NOT NULL DEFAULT now()
- );
- COMMENT ON TABLE t_rating_card_pop IS '卡片 POP report 明细(按评级机构 PSA/BGS/Nexphostis)';
- CREATE INDEX IF NOT EXISTS idx_rcp_batch_card ON t_rating_card_pop (batch_no, card_id);
- -- ------------------------------------------------------------
- -- 3. 价格历史表(增量累积,趋势曲线数据源)
- -- ------------------------------------------------------------
- CREATE TABLE IF NOT EXISTS t_rating_card_value_history (
- id BIGSERIAL PRIMARY KEY,
- card_id VARCHAR(64) NOT NULL,
- price NUMERIC(12,2) NOT NULL,
- record_date DATE NOT NULL,
- create_time TIMESTAMP NOT NULL DEFAULT now()
- );
- COMMENT ON TABLE t_rating_card_value_history IS '卡片价格历史(每日增量累积,趋势曲线用)';
- -- 同卡同日只一条,保证每日推送幂等
- CREATE UNIQUE INDEX IF NOT EXISTS uk_rcvh_card_date ON t_rating_card_value_history (card_id, record_date);
- -- ------------------------------------------------------------
- -- 4. 生效批次指针表(单行,记录当前对外生效的批次号)
- -- ------------------------------------------------------------
- CREATE TABLE IF NOT EXISTS t_rating_recommend_active_batch (
- id BIGSERIAL PRIMARY KEY,
- active_batch_no VARCHAR(32),
- update_time TIMESTAMP NOT NULL DEFAULT now()
- );
- COMMENT ON TABLE t_rating_recommend_active_batch IS '推荐规则生效批次指针(单行)';
- -- 初始化一行空指针(首次同步前查询将无生效批次→走兜底,符合预期)
- INSERT INTO t_rating_recommend_active_batch (active_batch_no)
- SELECT NULL
- WHERE NOT EXISTS (SELECT 1 FROM t_rating_recommend_active_batch);
|