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

本目录包含用于测试数据分析实时大屏功能的 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）

```bash
# 连接到 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. **命令行方式**：如果使用命令行或脚本执行
   - 需要临时禁用 RLS（见 `02_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 NOTHING` 或 `ON CONFLICT DO UPDATE`
   - 可以多次执行而不会产生重复数据
   - 如需重新生成数据，请先清空表

3. **状态值**
   - 订单状态：`2` 表示已支付/已完成
   - 用户会话：`is_active = true` 表示活跃会话

4. **UUID 格式**
   - 所有 ID 使用 UUID 格式
   - 测试数据使用了固定的 UUID 便于识别

5. **RLS 权限**
   - 插入数据后，前端查询需要用户已登录
   - 测试数据的 `user_id` 需要与登录用户的 `auth.uid()` 匹配才能查询到
   - 或者使用公开数据（如 `products`、`merchants` 表）

## 清理测试数据

如需清理测试数据，请使用独立的清理脚本（例如 `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. 使用循环生成大量测试数据（注意性能）
