在前后端开发联调前 的提交20260223
This commit is contained in:
63
docs/prd/specs/P1-miniapp-db-foundation.md
Normal file
63
docs/prd/specs/P1-miniapp-db-foundation.md
Normal file
@@ -0,0 +1,63 @@
|
||||
# P1:基础设施层 — miniapp-db-foundation
|
||||
|
||||
> 优先级:P1(最高,无前置依赖)
|
||||
> 预估工作量:中等
|
||||
|
||||
---
|
||||
|
||||
## 需求(Requirements)
|
||||
|
||||
### 用户故事
|
||||
|
||||
1. 作为后端开发者,我需要 `test_zqyy_app` 中有清晰的 Schema 划分(`auth` + `biz`),以便按功能组织业务表。
|
||||
2. 作为后端开发者,我需要通过 FDW 从 `test_zqyy_app` 读取 ETL 库的 DWS/DWD 数据,以便小程序页面展示 ETL 计算结果。
|
||||
3. 作为系统管理员,我需要 RLS 视图按 `site_id` 隔离数据,以便多门店数据安全。
|
||||
|
||||
### 验收标准
|
||||
|
||||
- AC1:`test_zqyy_app` 中存在 `auth` 和 `biz` 两个 Schema,权限配置正确
|
||||
- AC2:`test_etl_feiqiu.app` Schema 中为数据依赖矩阵列出的所有表创建了 RLS 视图
|
||||
- AC3:`test_zqyy_app.fdw_etl` 中所有外部表可正常 `SELECT`,数据与源表一致
|
||||
- AC4:RLS 视图在设置 `app.current_site_id` 后正确过滤数据
|
||||
- AC5:所有变更有对应的迁移脚本(`db/zqyy_app/migrations/` + `db/etl_feiqiu/migrations/`)
|
||||
|
||||
---
|
||||
|
||||
## 设计要点
|
||||
|
||||
### Schema 规划
|
||||
|
||||
```
|
||||
test_zqyy_app
|
||||
├── auth — 用户认证、权限、映射
|
||||
├── biz — 业务数据(任务、备注、AI、Excel)
|
||||
├── fdw_etl — FDW 外部表(只读,映射 ETL app schema)
|
||||
└── public — 保留现有系统管理表(admin_users 等)
|
||||
```
|
||||
|
||||
### RLS 实现方案
|
||||
|
||||
```sql
|
||||
-- ETL 库 app schema 示例
|
||||
CREATE VIEW app.v_dws_member_consumption_summary AS
|
||||
SELECT * FROM dws.dws_member_consumption_summary
|
||||
WHERE site_id = current_setting('app.current_site_id')::bigint;
|
||||
```
|
||||
|
||||
### FDW 映射
|
||||
|
||||
- 使用 `postgres_fdw` 扩展
|
||||
- 外部服务器指向 `test_etl_feiqiu`
|
||||
- 外部表映射 `app` schema 的 RLS 视图(而非直接映射 dws/dwd 表)
|
||||
- 映射表清单见 `00-数据依赖矩阵.md` 第四节
|
||||
|
||||
---
|
||||
|
||||
## 任务清单
|
||||
|
||||
- [ ] T1:创建 `auth` 和 `biz` Schema + 权限配置
|
||||
- [ ] T2:在 `test_etl_feiqiu.app` 中创建全部 RLS 视图(约 33 张)
|
||||
- [ ] T3:配置 `postgres_fdw` 外部服务器和用户映射
|
||||
- [ ] T4:在 `fdw_etl` 中创建全部外部表
|
||||
- [ ] T5:编写验证脚本(检查所有外部表可查询)
|
||||
- [ ] T6:编写迁移脚本并归档
|
||||
Reference in New Issue
Block a user