Files
Neo-ZQYY/db/CLAUDE.md
Neo 82c321ef0a chore: 更新 CLAUDE.md — 补充 demo-miniprogram、更新 db/ 描述
- 子系统表新增 apps/demo-miniprogram/(MOCK 小程序标杆校对)
- db/ 描述从 "DDL/迁移/种子" 更新为 "权威DDL/迁移归档/FDW配置"
- db/CLAUDE.md 目录结构对齐实际(schemas/ 为主、migrations 留空、种子已合并)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-06 00:48:07 +08:00

2.2 KiB
Raw Blame History

CLAUDE.md — Database (DDL / Migrations / Seeds)

进入本目录时自动加载。

Schema 变更规则

修改任何影响 PostgreSQL schema 的内容(迁移脚本/DDL/表定义)时,必须同步更新 docs/database/

  1. 变更说明:新增/修改/删除的表、字段、约束、索引
  2. 兼容性:对 ETL、后端 API、小程序字段映射的影响
  3. 回滚策略如何撤销DDL 回滚 / 数据回填)
  4. 验证步骤:至少 3 条校验 SQL

RLS 视图双 Schema 规则

新建 DWS/DWD 表的 RLS 视图必须同时在原 schemadws)和 app schema 创建:

-- 1. 原 schema
CREATE VIEW dws.v_xxx AS SELECT ... WHERE site_id = current_setting('app.current_site_id')::int;

-- 2. app schema后端通过此路径访问
CREATE VIEW app.v_xxx AS SELECT ... WHERE site_id = current_setting('app.current_site_id')::int;

回滚需逆序 DROP 两个 schema 的视图。只在原 schema 创建会导致后端查询失败。

目录结构

db/
├── etl_feiqiu/
│   ├── schemas/          # 权威 DDL — 六层完整定义meta/ods/dwd/core/dws/app
│   ├── migrations/       # 未来增量迁移v1 已全部归档)
│   ├── ods/              # ODS 补充脚本
│   └── scripts/          # 测试数据库脚本
├── zqyy_app/
│   ├── schemas/          # 权威 DDL — 三层完整定义public/auth/biz
│   ├── migrations/       # 未来增量迁移v1 已全部归档)
│   └── scripts/          # 测试数据库脚本
├── fdw/                  # FDW 跨库只读映射(正向 + 反向 + 测试环境)
└── _archived/            # 归档v1 迁移 39 个、旧基线)

v1 阶段种子数据已合并进 schemas/ 对应 DDL 文件末尾,不再单独维护。

DDL 刷新

修改 schema 后,重新生成完整 DDL

PYTHONUTF8=1 python tools/db/gen_consolidated_ddl.py

输出到 docs/database/ddl/,然后复制到 db/*/schemas/ 保持同步。

测试规范

  • 数据库操作使用测试库(TEST_DB_DSN / TEST_APP_DB_DSN),禁止连正式库
  • 迁移脚本在测试库执行后需验证表结构