# 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：编写迁移脚本并归档
