步骤10定价策略设置功能手动测试指南

测试日期: 2026-02-03
测试范围: 定价策略设置功能完整流程


📋 测试前准备

1. 确保服务运行

# 检查服务状态
docker compose ps

# 如果未运行,启动服务
docker compose up -d

2. 准备测试数据

  • 至少有一个已审核通过的专家(状态为 approved
  • 如果没有,需要:
    1. 创建知识库
    2. 创建专家
    3. 发布到市场
    4. 管理员审核通过

🧪 测试步骤

测试1: 验证"设置定价"按钮显示

目标: 验证专家状态为"已审核"时显示"设置定价"按钮

步骤:

  1. 访问开发者门户: https://mbe.hi-maker.com/developer/experts
  2. 登录开发者账号
  3. 查看专家列表

预期结果:

  • ✅ 状态为"✅ 已审核"的专家显示"💰 设置定价"按钮
  • ✅ 按钮样式:渐变紫色背景
  • ✅ 状态为"🔄 审核中"的专家不显示此按钮

验证方法:

  • 检查专家列表中的操作列
  • 确认按钮只在已审核专家上显示

测试2: 访问定价设置页面

目标: 验证定价设置页面可以正常访问

步骤:

  1. 在专家列表中,点击"💰 设置定价"按钮
  2. 或直接访问: /developer/experts/pricing?expert_id=xxx

预期结果:

  • ✅ 页面正常加载
  • ✅ 显示专家名称
  • ✅ 显示定价模式标签页(4个标签)
  • ✅ 显示分润比例设置区域

验证方法:

  • 检查页面标题
  • 检查URL参数是否正确
  • 检查页面元素是否正常显示

测试3: 按Token收费模式

目标: 验证按Token收费模式配置

步骤:

  1. 在定价设置页面,点击"按Token收费"标签
  2. 填写:
    • 每1000 Token价格:0.05
    • 免费试用次数:3
  3. 调整开发者分润:70%
  4. 点击"💾 保存定价设置"

预期结果:

  • ✅ 标签页切换正常
  • ✅ 表单字段可以正常输入
  • ✅ 保存成功提示
  • ✅ 返回专家列表

验证方法:

  • 检查保存后的提示信息
  • 重新打开定价设置页面,验证配置已保存

测试4: 按调用次数收费模式

目标: 验证按调用次数套餐配置

步骤:

  1. 点击"按调用次数"标签
  2. 填写免费试用次数:3
  3. 添加套餐:
    • 套餐1: 名称="单次咨询", 次数=1, 价格=5.0
    • 套餐2: 名称="10次套餐", 次数=10, 价格=39.0
    • 套餐3: 名称="30次套餐", 次数=30, 价格=99.0
  4. 点击"💾 保存定价设置"

预期结果:

  • ✅ 可以添加多个套餐
  • ✅ 可以删除套餐
  • ✅ 套餐信息正确保存
  • ✅ 保存后可以重新加载显示

验证方法:

  • 检查套餐列表是否正确显示
  • 重新打开页面,验证套餐配置已保存

测试5: 订阅制模式

目标: 验证订阅制层级配置

步骤:

  1. 点击"订阅制"标签
  2. 添加订阅层级:
    • 层级1:
      • 名称="基础版"
      • 月费=49.0
      • 每日对话次数=3
      • 功能特性="基础心理支持\n每日3次对话"
    • 层级2:
      • 名称="专业版"
      • 月费=129.0
      • 每日对话次数=-1(无限)
      • 功能特性="无限对话\n优先响应\n专属报告"
  3. 点击"💾 保存定价设置"

预期结果:

  • ✅ 可以添加多个订阅层级
  • ✅ 可以删除订阅层级
  • ✅ 功能特性支持多行输入
  • ✅ 订阅层级信息正确保存

验证方法:

  • 检查订阅层级列表是否正确显示
  • 重新打开页面,验证订阅层级配置已保存

测试6: 混合模式

目标: 验证混合模式配置

步骤:

  1. 点击"混合模式"标签
  2. 填写:
    • 按Token价格:0.05
    • 免费试用次数:3
  3. 添加按次付费套餐(同测试4)
  4. 添加订阅层级(同测试5)
  5. 点击"💾 保存定价设置"

预期结果:

  • ✅ 同时显示Token价格、套餐和订阅层级配置
  • ✅ 所有配置都可以正常保存
  • ✅ 保存后可以重新加载显示

验证方法:

  • 检查所有配置是否正确保存
  • 重新打开页面,验证所有配置已保存

测试7: 分润比例设置

目标: 验证分润比例设置和可视化

步骤:

  1. 在任意定价模式下,调整开发者分润比例
  2. 观察分润比例条的变化

预期结果:

  • ✅ 开发者分润可以调整(0-100%)
  • ✅ 平台分润自动计算(100% - 开发者分润)
  • ✅ 分润比例条实时更新
  • ✅ 分润比例正确保存

验证方法:

  • 调整开发者分润,检查平台分润是否自动更新
  • 检查分润比例条是否实时更新
  • 保存后重新打开,验证分润比例已保存

测试8: API测试(使用curl或Postman)

目标: 验证定价API正常工作

8.1 获取定价配置

curl -X GET "http://localhost:8000/developer/api/expert-pricing/{expert_id}" \
  -H "Cookie: portal_session=YOUR_SESSION_ID"

预期结果:

  • ✅ 返回JSON格式的定价配置
  • ✅ 包含所有定价字段

8.2 保存定价配置

curl -X POST "http://localhost:8000/developer/api/expert-pricing" \
  -H "Content-Type: application/json" \
  -H "Cookie: portal_session=YOUR_SESSION_ID" \
  -d '{
    "expert_id": "expert_xxx",
    "pricing_model": "hybrid",
    "price_per_1k_tokens": 0.05,
    "free_trial_calls": 3,
    "per_call_packages": [
      {"name": "单次咨询", "calls": 1, "price": 5.0},
      {"name": "10次套餐", "calls": 10, "price": 39.0}
    ],
    "subscription_tiers": [
      {"name": "基础版", "price": 49.0, "calls_per_day": 3, "features": ["基础功能"]}
    ],
    "developer_share": 0.7,
    "platform_share": 0.3
  }'

预期结果:

  • ✅ 返回成功响应
  • ✅ 定价配置已保存到数据库

✅ 测试检查清单

核心功能

  • "设置定价"按钮在已审核专家上显示
  • 定价设置页面可以正常访问
  • 四种定价模式标签页切换正常
  • 按Token收费模式配置正常
  • 按调用次数套餐配置正常(添加/删除)
  • 订阅制层级配置正常(添加/删除)
  • 混合模式配置正常
  • 分润比例设置和可视化正常
  • 定价配置可以正确保存
  • 保存后可以重新加载显示

UI交互

  • 标签页切换流畅
  • 表单字段验证正常
  • 添加/删除套餐/订阅层级正常
  • 分润比例条实时更新
  • 保存成功/失败提示正常

API功能

  • GET API可以获取定价配置
  • POST API可以保存定价配置
  • API错误处理正常

🐛 常见问题

问题1: "设置定价"按钮不显示

原因: 专家状态不是 approved 解决: 确保专家已通过管理员审核

问题2: 定价设置页面404

原因: 路由未注册或expert_id参数缺失 解决:

  • 检查 main.py 中是否注册了 expert_pricing_router
  • 确保URL中包含 expert_id 参数

问题3: 保存失败

原因: 未找到对应的市场模型 解决: 确保专家已发布到市场(状态为 pending_reviewapproved

问题4: 套餐/订阅配置丢失

原因: JSON解析失败 解决: 检查JSON格式是否正确


📊 自动化测试结果

测试脚本: scripts/test_expert_pricing.py

测试结果: ✅ 6/6 测试通过

  • ✅ PricingModel枚举验证
  • ✅ 创建带定价配置的模型
  • ✅ 获取定价配置
  • ✅ 更新定价配置
  • ✅ 所有定价模式测试
  • ✅ 定价数据结构验证

🎯 测试完成标准

所有以下功能正常工作:

  1. ✅ "设置定价"按钮正确显示
  2. ✅ 定价设置页面可以访问
  3. ✅ 四种定价模式都可以配置
  4. ✅ 套餐和订阅层级可以添加/删除
  5. ✅ 分润比例可以调整
  6. ✅ 定价配置可以保存和加载
  7. ✅ API正常工作

测试完成后,请记录测试结果和发现的问题