Files
medical-mall/pages/mall/analytics/test/ANALYTICS_DATA_QUICK_START.md
2026-01-26 21:34:17 +08:00

4.2 KiB
Raw Blame History

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 运行 步骤14
  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