Files
Neo-ZQYY/db/zqyy_app/migrations/20260423__ai_cache_allow_app2a.sql
Neo 76a23639ee feat(db): app2a DWS 新列 + ai_cache CHECK 约束放开
1. db/etl_feiqiu/migrations/20260423__app2a_add_member_order_count.sql:
   - dws.dws_finance_area_daily 增加 member_order_count 列 (integer NOT NULL DEFAULT 0)
   - 重建 app.v_dws_finance_area_daily RLS 视图暴露新列
   - 同步重建 dws.v_dws_finance_area_daily(遵守双 schema 规则)
   - 列顺序因 PostgreSQL CREATE OR REPLACE VIEW 限制必须加在末尾

2. db/zqyy_app/migrations/20260423__ai_cache_allow_app2a.sql:
   - biz.ai_cache.chk_ai_cache_type CHECK 约束放开 app2a_finance_area 新值
   - DROP 旧 7 项 CHECK + CREATE 含 8 项的新 CHECK(新增 app2a_finance_area)

3. docs/database/changes/ 两份变更文档:
   - 变更说明 + 兼容性 + 回滚策略 + 3-4 条验证 SQL

测试库已执行 + 验证通过。生产库待上线窗口按 checklist 跑。

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-22 21:55:01 +08:00

71 lines
2.6 KiB
PL/PgSQL
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
-- =============================================================
-- Migration: 20260423__ai_cache_allow_app2a.sql
-- Purpose: 放开 biz.ai_cache.chk_ai_cache_type CHECK 约束,
-- 允许新 cache_type 'app2a_finance_area'app2a 区域财务洞察)
-- Related: docs/ai/app2_finance_multi_app_design.md v2 · Phase F
-- Author: Claude + Neo
-- =============================================================
--
-- 改动说明:
-- 1. DROP 旧 CHECK 约束 chk_ai_cache_type
-- 2. CREATE 新 CHECK 约束,加入 'app2a_finance_area' 值
--
-- 兼容性:
-- - 旧 cache_type 值全部保留,仅新增一个允许值
-- - 无需数据迁移
--
-- 回滚策略:
-- 见文件末 ROLLBACK 段
--
-- 验证 SQL
-- 见文件末 VERIFICATION 段
-- =============================================================
BEGIN;
-- 1. DROP 旧约束
ALTER TABLE biz.ai_cache DROP CONSTRAINT IF EXISTS chk_ai_cache_type;
-- 2. CREATE 新约束(加入 app2a_finance_area
ALTER TABLE biz.ai_cache ADD CONSTRAINT chk_ai_cache_type
CHECK (cache_type IN (
'app2_finance',
'app2a_finance_area', -- 2026-04-23 新增(区域财务洞察 · 64 组合)
'app3_clue',
'app4_analysis',
'app5_tactics',
'app6_note_analysis',
'app7_customer_analysis',
'app8_clue_consolidated'
));
COMMIT;
-- =============================================================
-- VERIFICATION事后手工执行
-- =============================================================
-- 1. 约束允许值检查
-- SELECT pg_get_constraintdef(oid)
-- FROM pg_constraint
-- WHERE conname = 'chk_ai_cache_type';
-- -- 期望:返回的 CHECK 里包含 'app2a_finance_area'
--
-- 2. 插入新 cache_type 应成功
-- INSERT INTO biz.ai_cache (cache_type, site_id, target_id, result_json, status, expires_at)
-- VALUES ('app2a_finance_area', 1, 'test__all', '{}', 'valid', NOW() + INTERVAL '1 day');
-- -- 期望:成功插入
-- DELETE FROM biz.ai_cache WHERE cache_type = 'app2a_finance_area' AND site_id = 1 AND target_id = 'test__all';
-- =============================================================
-- ROLLBACK
-- =============================================================
-- BEGIN;
-- ALTER TABLE biz.ai_cache DROP CONSTRAINT IF EXISTS chk_ai_cache_type;
-- ALTER TABLE biz.ai_cache ADD CONSTRAINT chk_ai_cache_type
-- CHECK (cache_type IN (
-- 'app2_finance', 'app3_clue', 'app4_analysis', 'app5_tactics',
-- 'app6_note_analysis', 'app7_customer_analysis', 'app8_clue_consolidated'
-- ));
-- COMMIT;
-- 注:回滚前必须先 DELETE 所有 cache_type = 'app2a_finance_area' 的记录,否则 CHECK 会失败