跳转至

Backend 测试需求

需求 ID 前缀 BE-REQ。验收采用 Given-When-Then。用例矩阵见 test-matrix.md

角色

角色 鉴权 可测范围
匿名 send-code、公开目录、支付回调(验签)
User User JWT 画布、生图、计费、资产、落地绑定
Agent User JWT + agents 行 门户、结算、导出
Admin Admin JWT /api/admin/*

P0 需求

认证

ID 描述 验收
BE-REQ-001 Admin 短信登录 Given 有效 admin_users;When send-sms+正确码 login;Then 返回 token 且可访问 /api/admin/users
BE-REQ-002 Admin 非管理员拒绝 Given 仅 users 无 admin_users;When admin login;Then 失败且无 token
BE-REQ-003 用户短信登录 Given 手机号;When send-code+login;Then 返回 User JWT,/api/auth/me 成功
BE-REQ-004 as_agent 开通 Given 无 agents 行;When login as_agent=true;Then 创建 agents 且可访问 /api/agents/me
BE-REQ-005 禁用用户拦截 Given users.status=0;When 调需 CurrentUser 接口;Then 401/业务错误

产品与模板

ID 描述 验收
BE-REQ-010 大类子类 CRUD Admin 创建→查询→更新→删除;DB 一致;C 端 catalog 可见启用项
BE-REQ-011 子类面料关联 批量关联后 GET .../fabric-materials 返回正确集合(虚拟影棚等仍用)
BE-REQ-012 主图/详情模板 match(品类×风格) Given 模板 product_category_ids∋category 且 style_ids∋style;When match/listproduct_category_id+style_id;Then 命中对应主图/详情模板(同风格可多套;match 返回首条,list 返回全量摘要)
BE-REQ-012b 模板风格 CRUD Admin 在品类下创建/更新/停用 product_styles;C 端 GET /user/catalog/styles?category_id= 仅见启用项
BE-REQ-013 Word 上传(主图/详情风格链路) 上传合法 docx 并指定 product_category_id+style_id(可选 image_template_id);Then word_sessions/items 有记录且图片可入对应模板套

AI 与任务

ID 描述 验收
BE-REQ-020 模型池成员调度配置 Admin 加成员设 weight/priority;health 接口可查
BE-REQ-021 用户生图扣费 Given 配额充足;When generate 成功;Then used 增加且有 consumption_records
BE-REQ-022 配额不足拒绝 Given used≥total;When generate;Then 明确错误且不写成功任务扣费
BE-REQ-023 并发上限 Given concurrent_tasks=1 且有处理中任务;When 再 generate;Then 拒绝或排队策略符合实现

画布

ID 描述 验收
BE-REQ-030 项目乐观锁 Given revision=0;When PUT expectedRevision=0;Then revision=1;再 PUT expected=0 → 409
BE-REQ-031 项目隔离 UserA 不可读写 UserB 的 project_id
BE-REQ-032 删文件夹 删除 folder;项目 folder_id 变 NULL,项目未删

计费与代理

ID 描述 验收
BE-REQ-040 下单支付 mock 创建订单 → mock-pay → status paid;配额/订阅按方案更新
BE-REQ-041 落地绑客 未绑定用户 bind 成功;再次 bind 其他代理失败;customer_agent_bindings 唯一
BE-REQ-042 优惠比例 Agent 设置 customer_discount_rate=10;客户下单金额按规则打折(对照实现)
BE-REQ-043 分账生成 绑定客户支付成功后产生 commission_records(pending)
BE-REQ-044 提现审批 Agent 提现 pending → Admin approve → balance 与 withdrawn 正确;reject 回滚预占
BE-REQ-045 退款 Admin refund 后订单 refunded,配额/佣金按实现回滚或 clawback

P1 需求

ID 描述 验收要点
BE-REQ-050 结算扫码 创建 scan token → mock-confirm → settlement_account 写入
BE-REQ-051 导出 Excel Agent JWT 导出 customers 等返回可解析 xlsx
BE-REQ-052 操作日志 Admin PUT 写资源后 operation_logs 有记录
BE-REQ-053 Prompt 测试记录 test-generate 后 prompt_test_runs 可查
BE-REQ-054 resolve-urls 过期 object_key 可重新签发可访问 URL
BE-REQ-055 批量生图 batch-generate 创建 job;可查状态;单项 retry
BE-REQ-055b 主图/详情批量生图(品类×风格) Given 配额充足且已选品类/风格/模板套;When batch-generate task_type=main_image\|detail_image,params 含 product_category_id+style_id+image_template_id+mode(auto\|copy)+custom_product/custom_material(复刻另需 reference);Then 创建 job、扣积分、入队;缺必填槽 → 400 中文错误
BE-REQ-058 爆款模板目录 Given 子类下有启用 HotStyle;When GET /api/user/catalog/hot-styles?product_sub_type_id=;Then 返回款式列表含 category_id;When 详情;Then 含模板图摘要
BE-REQ-059 爆款模板批量生图 Given 款式有模板图;When batch-generate task_type=hot_template 且无 fabric;Then 创建 task+job、按图数扣积分、入队 Redis;Worker 落图占容;可查进度与 retry

近期新增需求(会员计费 / 储存限容)

ID 描述 验收(Given-When-Then)
BE-REQ-046 储存限容-上传占容 Given 会员 storage_gb=5;When 上传使 used+size>total;Then 返回 400「存储空间不足」;When 删除资产;Then used 减回
BE-REQ-047 储存限容-生成图占容 Given Worker 生图成功;When 落 OSS;Then usage_quotas(storage).used += sizegeneration_result.image_object_keys 写入;When 软删任务;Then used 按 image_sizes 释放
BE-REQ-048 L1/L2 分账 Given 一级设 sub_agent_share_rate=30 且已提拔二级;When 二级客户成交;Then 二级得规则佣金 + 一级佣金池×30%;一级得池×70%
BE-REQ-049 月结关账幂等 Given 某月已关账;When 重复 close 同月;Then balance_commission 不变(幂等键拦截)
BE-REQ-050b 日终对账 When recon/run;Then 生成 recon_batches;When replay/user 传手机号;Then 该户账本重算并修复余额
BE-REQ-051b 登录积分 Given 今日未领取;When claim;Then 积分入账 + 标记已领;When 再次 claim;Then 拒绝
BE-REQ-056 储存用量查询 When GET /api/billing/storage;Then 返回 {storage_gb, total_bytes, used_bytes, remaining_bytes}
BE-REQ-057 订阅激活同步上限 When mark_paid 激活订阅;Then usage_quotas(storage).total = 方案 storage_gb×1024³(used 不重置)

P2 / 非功能

ID 描述 验收
BE-REQ-060 响应包络 成功 code=200;业务错误非 200 且 data 为空或约定结构
BE-REQ-061 CORS 允许配置的 Vite 源与 *.localhost
BE-REQ-062 密钥隔离 backend 进程环境无 OSS AK;仅 STORAGE_SERVICE_URL
BE-REQ-063 幂等支付回调 同一 transaction_id 重复 notify 不重复加配额
BE-REQ-064 健康检查 /health/live /health/ready(若挂载)可用

数据前置

  • make backend-migrate:含会员 7 档价目数据迁移;seed_v3:管理员、产品树、模板、模型池(不含价目覆盖)
  • 集成测试可用 testcontainers Postgres(@pytest.mark.integration
  • 短信/支付在测试环境使用 mock provider

交叉引用

本需求 测试矩阵
BE-REQ-001~005 TC-AUTH-*
BE-REQ-030~032 TC-CANVAS-*
BE-REQ-040~045 TC-BILL- / TC-AGENT-