接入数据库
This commit is contained in:
66
pages/mall/analytics/test/ANALYTICS_DATA_QUICK_START.md
Normal file
66
pages/mall/analytics/test/ANALYTICS_DATA_QUICK_START.md
Normal file
@@ -0,0 +1,66 @@
|
||||
# Analytics 测试数据快速开始(更新版)
|
||||
|
||||
> 本文档基于 **2026-01 修订后的数据库脚本**(含 RLS 安全、中文注释、幂等执行)
|
||||
>
|
||||
> 请务必按下述 **执行顺序** 依次运行 SQL,否则会出现外键或 RLS 限制导致的插入失败。
|
||||
|
||||
---
|
||||
|
||||
## 🗂️ SQL 执行顺序(只创建,不删除)
|
||||
|
||||
| 步骤 | 作用 | 文件 | 需要权限 |
|
||||
| ---- | ----------------------------------------------------------------------------- | --------------------------------------- | ----------------------------------------------------- |
|
||||
| 1 | 创建基础业务表(orders/users/user_sessions/products/merchants/page_views 等) | `01_create_tables.sql` | 任意(不清空数据,可重复执行) |
|
||||
| 2 | 创建用户资料表(ak_users)+ RLS + 用户资料函数 | `../../user/test/USER_AUTH_SCHEMA.sql` | 任意(不清空数据,可重复执行) |
|
||||
| 3 | 创建 auth.users → ak_users 触发器 | `../../user/test/USER_AUTH_TRIGGER.sql` | **需要访问 auth schema(建议 Dashboard SQL Editor)** |
|
||||
| 4 | 创建 analytics_* 表 + RLS + RPC | `ANALYTICS_DB_SCHEMA.sql` | 任意(不清空数据,可重复执行) |
|
||||
| 5 | 插入业务侧测试数据 | `02_insert_test_data.sql` | **service_role**¹ |
|
||||
| 6 | 插入 analytics_* 测试数据 | `ANALYTICS_TEST_SEED.sql` | **service_role**¹ |
|
||||
| 7 | (可选) 查询验证 | `03_test_queries.sql` | 登录用户 |
|
||||
|
||||
¹ *原因:两份 seed 脚本要写入带 RLS 的表,直接用 anon / authenticated 会被策略拦截。Dashboard SQL Editor 默认具备等价于 postgres/service_role 的权限,可直接执行;CLI 请使用 `psql … -U postgres`(或你的 DB 管理员账号)执行。*
|
||||
|
||||
---
|
||||
|
||||
## 🚀 执行步骤(以 Supabase Dashboard 为例)
|
||||
|
||||
1. 打开 **SQL Editor** → 依次新建 Query 运行 *步骤1–4*。
|
||||
2. 登出 / 使用普通账号登录,再运行 *步骤5* 查询验证。
|
||||
|
||||
---
|
||||
|
||||
## ⚠️ 常见问题
|
||||
|
||||
1. **RLS 阻挡插入**
|
||||
请确认 seed 在 Dashboard 执行,或先 `SET ROLE service_role;`。
|
||||
不建议在 seed 中禁用 RLS。
|
||||
|
||||
2. **重复执行报错**
|
||||
脚本为“只创建,不删除”模式:表/索引使用 `IF NOT EXISTS`,触发器/策略使用系统表判断后再创建,可重复执行。若仍报错,请先 `ROLLBACK;` 再重试。
|
||||
|
||||
3. **前端查不到 seed 数据**
|
||||
登陆用户的 `auth.uid()`必须与 seed 中 `orders.user_id` 等字段匹配;否则受 RLS 影响会看不到。测试时可在 seed 中把某条 `user_id` 改成你自己的 UID。
|
||||
|
||||
---
|
||||
|
||||
## 🔐 权限矩阵(简版)
|
||||
|
||||
| 表 / 功能 | anon | authenticated | service_role |
|
||||
| -------------------------------------- | ----------------- | ------------------- | ------------ |
|
||||
| `orders / order_items / user_sessions` | Insert❌ / Select❌ | ✅(仅本人) | ✅(全部) |
|
||||
| `products / merchants` | Select✅ | CRUD⚠️ (受策略) | ✅ |
|
||||
| `page_views` | Insert✅ / Select❌ | Select✅(本人) | ✅ |
|
||||
| `analytics_*` 表 | ❌ | ✅ (按 owner/shared) | ✅ |
|
||||
| RPC (analytics) | ❌ | ✅ | ✅ |
|
||||
|
||||
> 详细策略请见各 SQL 文件内注释。
|
||||
|
||||
---
|
||||
|
||||
## 🧹 清理
|
||||
|
||||
执行 `04_cleanup.sql` 可按时间 / 用户删除测试数据,脚本已更新为幂等。
|
||||
|
||||
---
|
||||
|
||||
最后更新:2026-01-26
|
||||
Reference in New Issue
Block a user