端到端测试场景¶
前置:
make up(或等价)、make seed、短信/支付 mock 可用。
场景 S1:配置到生图(Admin → Canvas)¶
目标:运营配置可被 C 端使用并成功生图扣费。
| 步骤 | 角色 | 操作 | 预期表/结果 |
|---|---|---|---|
| 1 | Admin | 登录后台 | admin JWT |
| 2 | Admin | 在品类下创建/启用风格 | product_styles |
| 3 | Admin | 创建主图风格模板套:写入品类+风格 ids;上传子图(可设封面) | main_image_templates, template_images |
| 4 | Admin | 模型池有可用成员与账号 | ai_model_groups, ai_models, bindings |
| 5 | User | Canvas 登录 → /main-image |
— |
| 6 | User | 选同一品类/风格 → 确认模板套 → 填产品/材质 →(可选复刻参考图)batch-generate | tasks completed;consumption_records;usage_quotas.used↑ |
失败注入:停用风格/模板 → list/match 空;配额清零 → BE-REQ-022;缺 custom_product/custom_material → 400。
场景 S2:代理获客分佣(Agent → Canvas → Admin)¶
| 步骤 | 角色 | 操作 | 预期 |
|---|---|---|---|
| 1 | Agent | 登录门户,Links 复制 /r/{code} |
agents.agent_code |
| 2 | Agent | Settings 设优惠 10% | customer_discount_rate=10 |
| 3 | User | 打开落地页 | agent_link_clicks +1 |
| 4 | User | 登录并绑定 | customer_agent_bindings 一行 |
| 5 | User | Account 购买方案并 mock-pay | orders.paid;金额含折扣逻辑 |
| 6 | — | 查库/Agent 分佣页 | commission_records pending/settled |
| 7 | Admin | 结算分账(可选) | status=settled;agent balance↑ |
约束:另开用户尝试改绑其他代理 → 失败。
场景 S3:画布项目乐观锁¶
| 步骤 | 操作 | 预期 |
|---|---|---|
| 1 | User 创建项目,revision=0 | canvas_projects |
| 2 | 标签 A 保存 expected=0 → revision=1 | 成功 |
| 3 | 标签 B 仍用 expected=0 保存 | HTTP 409;库 revision 仍为 1 |
| 4 | B 拉取最新再保存 | 成功 revision=2 |
场景 S4:提现审批¶
| 步骤 | 角色 | 操作 | 预期 |
|---|---|---|---|
| 1 | API/工具 | Agent 有 balance,发起 withdraw | agent_withdrawals.pending;余额预占 |
| 2 | Admin | /admin/billing/withdrawals 拒绝 |
status=rejected;余额恢复 |
| 3 | 再次申请 | Admin 通过 | approved;withdrawn_commission↑ |
场景 S5:结算扫码(开发)¶
| 步骤 | 操作 | 预期 |
|---|---|---|
| 1 | Agent Settlement 选支付宝扫码 | 返回 token/QR |
| 2 | mock-confirm | settlement_account* 写入 |
| 3 | 切换微信 | Confirm 后可重新绑定 |
场景 S6:工作台冒烟清单(P1)¶
对每个路径完成「选最小必填 → 预览或 generate」:
/hot-shoot, /main-image, /detail-image, /scene-replace, /hot-replicate, /model-gen, /single-model, /double-model, /canvas
记录:任务类型、是否出图、错误信息。
测试数据检查清单¶
- [ ] 管理员手机号可收码(或 mock)
- [ ] 至少 1 个在售
member_plans - [ ] 产品树与模板 seed 完整
- [ ] storage 健康(上传不 502)
- [ ] Redis/Worker 对异步任务 Ready