Files
soul-yongping/开发文档/8、部署/推广设置页面测试清单.md
2026-02-09 15:09:29 +08:00

149 lines
5.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 推广设置页面 - 完整性测试清单
## 前置条件
- ✅ 已创建 `app/admin/referral-settings/page.tsx`
- ✅ 已修改 `app/admin/layout.tsx` 添加菜单入口
- ✅ 已修复 `app/api/referral/bind/route.ts` 读取 `bindingDays`
## 功能验证(按顺序测试)
### 1. 页面访问测试
- [ ] 访问 `https://soul.quwanzhi.com/admin/referral-settings` 页面正常加载
- [ ] 左侧菜单显示「推广设置」入口
- [ ] 点击菜单可正常跳转,高亮状态正确
### 2. 配置加载测试
- [ ] 页面打开时自动从 `system_config` 表加载现有配置
- [ ] 若无配置,显示默认值:
- 好友优惠5%
- 推广者分成90%
- 绑定有效期30天
- 最低提现金额10元
- 自动提现:关闭
### 3. 表单输入验证
- [ ] 修改「好友优惠」为 10输入框显示正确
- [ ] 拖动「推广者分成」滑块,数值同步更新
- [ ] 输入「绑定有效期」为 60输入框显示正确
- [ ] 修改「最低提现金额」为 50输入框显示正确
- [ ] 切换「自动提现」开关,状态正确
### 4. 配置保存测试
- [ ] 点击「保存配置」按钮
- [ ] 弹出成功提示:「✅ 分销配置已保存成功!」
- [ ] 刷新页面后,配置仍然是刚才保存的值
### 5. 数据库验证
在数据库执行以下查询:
```sql
SELECT config_key, config_value, description
FROM system_config
WHERE config_key = 'referral_config';
```
**预期结果**
```json
{
"distributorShare": 90,
"minWithdrawAmount": 10,
"bindingDays": 30,
"userDiscount": 5,
"enableAutoWithdraw": false
}
```
所有字段都应该是 **数字类型**(不是字符串 "90"
### 6. 业务流程验证
#### 6.1 绑定关系测试
1. 修改「绑定有效期」为 **60 天**,保存
2. 在小程序中让一个新用户通过推广链接进入并登录
3. 查询数据库:
```sql
SELECT referee_id, referrer_id, expiry_date, status
FROM referral_bindings
WHERE referee_id = '新用户ID'
ORDER BY created_at DESC LIMIT 1;
```
4. **验证**`expiry_date` 应该是当前时间 + **60 天**(不是硬编码的 30 天)
#### 6.2 佣金计算测试
1. 修改「推广者分成」为 **85%**,保存
2. 让已绑定的用户在小程序购买 100 元的订单
3. 等待支付成功回调
4. 查询数据库:
```sql
SELECT user_id, earnings, pending_earnings
FROM users
WHERE user_id = '推广者ID';
```
5. **验证**`pending_earnings` 应该增加 **85 元**(不是 90 元)
#### 6.3 提现门槛测试
1. 修改「最低提现金额」为 **50 元**,保存
2. 刷新小程序「推广中心」页面
3. **验证**:推广规则卡片显示「满 **50 元** 可提现」
4. 用 pending_earnings < 50 的账号点击提现应提示可提现金额不足
#### 6.4 小程序展示验证
刷新小程序推广中心页面检查推广规则卡片
- [ ] 好友优惠显示与后台设置一致 5%
- [ ] 你得收益显示与后台设置一致 90%
- [ ] 绑定期显示与后台设置一致 30
## 关键代码验证点
### 读取 referral_config 的 API
1. `app/api/referral/bind/route.ts` - 读取 `bindingDays`
2. `app/api/miniprogram/pay/notify/route.ts` - 读取 `distributorShare` 并除以 100
3. `app/api/referral/data/route.ts` - 读取 `distributorShare` 并除以 100
### 数据类型保护:
- 前端保存时强制转换为 `Number` 类型
- 后端 `setConfig` 使用 `JSON.stringify` 正确序列化
- 后端 `getConfig` 使用 `JSON.parse` 正确反序列化
## 回滚方案
如果测试发现问题可以执行以下 SQL 恢复默认配置
```sql
UPDATE system_config
SET config_value = '{"distributorShare":90,"minWithdrawAmount":10,"bindingDays":30,"userDiscount":5,"enableAutoWithdraw":false}'
WHERE config_key = 'referral_config';
```
## 常见问题排查
### Q1: 保存后刷新,配置变成了默认值?
**排查**检查数据库 `system_config` 表是否正确写入
### Q2: 小程序显示的比例与后台不一致?
**排查**
1. 小程序端是否有缓存清除缓存重试
2. 检查 API `/api/referral/data` 是否正确读取配置
3. 检查小程序代码是否硬编码了规则文案
### Q3: 新绑定关系的过期时间还是 30 天?
**排查**
1. 确认 `app/api/referral/bind/route.ts` 已正确修改
2. 重启 Node.js 服务`pm2 restart soul`
3. 检查服务器日志是否有 "读取配置失败" 的警告
### Q4: 佣金计算还是用的旧比例?
**排查**
1. 确认订单是在 **修改配置之后** 创建的
2. 历史订单不会重算只影响新订单
3. 检查 `app/api/miniprogram/pay/notify/route.ts` 的日志
## 上线建议
1. **先在测试环境验证**完成上述所有测试用例
2. **备份数据库**上线前导出 `system_config`
3. **灰度发布**先让内部测试账号测试确认无误后全量放开
4. **监控日志**上线后密切关注 PM2 日志搜索 "referral_config" 关键词
## 性能影响
- 每次绑定/支付回调会额外查询 1 `system_config`
- 由于 `config_key` 有索引性能影响可忽略
- 建议后续可增加 Redis 缓存TTL 60秒优化性能