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

6.0 KiB
Raw Blame History

数据分析实时大屏 - 测试数据说明

本目录包含用于测试数据分析实时大屏功能的 SQL 脚本和测试数据。

文件说明

1. 01_create_tables.sql

创建所需的数据表结构,包括:

  • orders - 订单表
  • user_sessions - 用户会话表
  • users - 用户表
  • products - 商品表(可选)
  • order_items - 订单商品关联表(可选)
  • page_views - 访问日志表(可选)

执行顺序: 首先执行此文件创建表结构

2. 02_insert_test_data.sql

插入测试数据,包括:

  • 8个测试用户
  • 5个在线用户会话最近5分钟内有活动
  • 15个今日订单用于计算实时GMV和订单数
  • 10个昨日同时段订单用于计算增长率
  • 15条访问日志用于转化率计算

执行顺序: 在创建表后执行此文件插入测试数据

3. 03_test_queries.sql

包含各种测试查询,用于验证数据计算逻辑:

  • 实时GMV查询
  • 在线用户查询
  • 转化率查询
  • 综合实时大屏数据查询
  • 数据验证查询

执行顺序: 在插入测试数据后执行此文件验证数据

使用方法

方式 1: 通过 Supabase Dashboard推荐

  1. 打开 Supabase Studio / Dashboard

    • 请使用你自己的部署地址访问(不要在仓库文档里硬编码地址/账号/密码)。
  2. 打开 SQL Editor

    • 在左侧菜单找到 "SQL Editor"
    • 点击 "New Query"
  3. 执行脚本

    • 复制 01_create_tables.sql 的内容,粘贴并执行
    • 复制 02_insert_test_data.sql 的内容,粘贴并执行
    • (可选)复制 03_test_queries.sql 的内容,验证数据

方式 2: 使用命令行PostgreSQL

# 连接到 Supabase Postgres参数请按你的环境填写
psql -h <DB_HOST> -p <DB_PORT> -U postgres -d postgres

# 执行 SQL 文件(需要完整路径)
\i D:/datas/hfkj/mall/pages/mall/analytics/test/01_create_tables.sql
\i D:/datas/hfkj/mall/pages/mall/analytics/test/02_insert_test_data.sql
\i D:/datas/hfkj/mall/pages/mall/analytics/test/03_test_queries.sql

方式 3: 使用图形工具DBeaver / pgAdmin

  1. 创建连接

    • 主机:<DB_HOST>
    • 端口:<DB_PORT>
    • 数据库:postgres
    • 用户名:postgres(或你的管理员账号)
    • 密码:<DB_PASSWORD>
  2. 执行 SQL

    • 打开 SQL 编辑器
    • 复制 SQL 文件内容并执行

详细说明请查看:

  • ANALYTICS_DATA_QUICK_START.md - SQL 文件执行顺序指南(必读!)
  • SQL_USAGE_GUIDE.md - SQL 脚本执行详细指南
  • TEST_DATA_INSERT_GUIDE.md - 测试数据插入指南(包含 RLS 处理说明)

测试数据说明

实时GMV测试数据

  • 今日订单总数: 15笔
  • 今日GMV 约 3,500 元(根据订单金额累加)
  • 昨日同时段订单: 10笔
  • 昨日同时段GMV 约 2,200 元
  • 预期增长率: 约 59%(3500-2200)/2200 * 100

实时订单测试数据

  • 今日订单数: 15笔
  • 昨日同时段订单数: 10笔
  • 预期增长率: 50%(15-10)/10 * 100

在线用户测试数据

  • 最近5分钟内有活动的用户 5个
  • 这些用户会在实时大屏中显示为"在线用户"

转化率测试数据

  • 今日访问用户数: 约 10-15个从 user_sessions 表统计)
  • 今日下单用户数: 约 8个从 orders 表去重统计)
  • 预期转化率: 约 53-80%(根据实际数据计算)

⚠️ 重要RLS行级安全策略说明

所有表已启用 RLS,插入测试数据时需要注意:

  1. 推荐方式:使用 Supabase Dashboard 的 SQL Editor 执行脚本

    • Dashboard 默认使用 service_role 权限,可以绕过 RLS
    • 无需额外配置,直接执行即可
  2. 命令行方式:如果使用命令行或脚本执行

    • 需要临时禁用 RLS02_insert_test_data.sql 中的注释说明)
    • 或使用 SECURITY DEFINER 函数(见 TEST_DATA_INSERT_GUIDE.md
  3. 详细说明:请查看 TEST_DATA_INSERT_GUIDE.md 获取完整的插入指南

注意事项

  1. 时间依赖

    • 测试数据使用了 NOW() 和相对时间(如 INTERVAL '1 hour'
    • 每次执行时,数据的时间戳会基于当前时间生成
    • 建议在测试前先清空相关表的数据(谨慎操作)
  2. 数据冲突

    • 脚本使用了 ON CONFLICT DO NOTHINGON CONFLICT DO UPDATE
    • 可以多次执行而不会产生重复数据
    • 如需重新生成数据,请先清空表
  3. 状态值

    • 订单状态:2 表示已支付/已完成
    • 用户会话:is_active = true 表示活跃会话
  4. UUID 格式

    • 所有 ID 使用 UUID 格式
    • 测试数据使用了固定的 UUID 便于识别
  5. RLS 权限

    • 插入数据后,前端查询需要用户已登录
    • 测试数据的 user_id 需要与登录用户的 auth.uid() 匹配才能查询到
    • 或者使用公开数据(如 productsmerchants 表)

清理测试数据

如需清理测试数据,请使用独立的清理脚本(例如 04_cleanup.sql)。

验证实时大屏功能

执行完测试数据后,在数据分析页面应该能看到:

  1. 实时GMV 约 ¥3,500根据实际订单金额
  2. 实时订单: 15笔
  3. 在线用户: 5人
  4. 转化率: 约 50-80%(根据实际计算)

增长率会根据昨日同时段的数据自动计算。

问题排查

如果实时大屏显示异常,可以:

  1. 执行 03_test_queries.sql 中的查询验证数据
  2. 检查订单状态是否为 2(已支付)
  3. 检查时间范围是否正确(今日 vs 昨日同时段)
  4. 检查用户会话的 last_active_at 是否在最近5分钟内
  5. 查看浏览器控制台的错误信息

扩展测试数据

如果需要更多测试数据,可以:

  1. 修改 02_insert_test_data.sql 中的 INSERT 语句
  2. 调整订单金额、数量和时间分布
  3. 添加更多用户和会话数据
  4. 使用循环生成大量测试数据(注意性能)