Files
lijiaoqiao/docs/supply_ui_test_cases_executable_v1_2026-03-25.md
2026-03-26 16:04:46 +08:00

9.3 KiB
Raw Blame History

供应侧 UI-SUP 可执行测试清单v1.0

  • 版本v1.0
  • 日期2026-03-25
  • 适用范围:SUP-PAGE-001/002/003(账号挂载、套餐发布、收益结算)
  • 关联文档:
    • supply_button_level_prd_v1_2026-03-25.md
    • supply_api_contract_openapi_draft_v1_2026-03-25.yaml
    • router_core_s2_acceptance_test_cases_v1_2026-03-17.md
    • acceptance_gate_single_source_v1_2026-03-18.md

1. 测试环境与公共前置

1.1 环境

  1. 环境:staging(含审计日志、告警、导出能力)。
  2. 鉴权仅允许平台凭证header禁止 query key 入站。
  3. 时区:Asia/Shanghai

1.2 测试账号

  1. supplier_owner_01:供应方主账号(可创建/编辑)。
  2. supplier_viewer_01:只读账号(仅查看)。
  3. platform_admin_01:平台管理员(可处理风控态)。

1.3 测试数据

  1. 供应账号初始状态:pendingactivesuspended 各 1 条。
  2. 套餐初始状态:draftactivepausedsold_outexpired 各 1 条。
  3. 结算单初始状态:pendingprocessingcompleted 各 1 条。

1.4 通用断言

  1. 每次关键按钮点击均产生审计事件。
  2. 错误体不出现可复用上游凭证片段(映射 M-013
  3. 所有请求 request_id 可追踪。

2. SUP-PAGE-001 账号挂载UI-SUP-ACC-001~006

UI-SUP-ACC-001 立即验证成功路径

  • 前置数据:
  1. supplier_owner_01 已登录。
  2. 页面字段 provider/account_type/credential_input 均可编辑。
  • 步骤:
  1. 选择 provider=openai
  2. 选择 account_type=api_key
  3. 输入合法凭证(测试密钥)。
  4. 点击 BTN-ACC-001 立即验证
  • 断言:
  1. 发起 POST /api/v1/supply/accounts/verify
  2. 返回 verify_status=pass
  3. 页面显示“验证通过 + 可用额度摘要”。
  4. 记录审计事件 supply.account.verify

UI-SUP-ACC-002 提交挂载成功路径

  • 前置数据:
  1. 已完成 UI-SUP-ACC-001 且返回通过。
  2. 勾选 risk_ack
  • 步骤:
  1. 输入 account_alias
  2. 点击 BTN-ACC-002 提交挂载
  • 断言:
  1. 发起 POST /api/v1/supply/accounts
  2. 返回 201,状态为 pendingactive
  3. 列表出现新账号记录。
  4. 记录审计事件 supply.account.create

UI-SUP-ACC-003 激活账号

  • 前置数据:
  1. 存在状态为 pending 的账号 A。
  2. 当前用户有编辑权限。
  • 步骤:
  1. 在账号 A 行点击 BTN-ACC-003 激活账号
  • 断言:
  1. 发起 POST /api/v1/supply/accounts/{id}/activate
  2. 状态从 pending 变为 active
  3. 页面即时刷新该行状态。
  4. 记录审计事件 supply.account.activate

UI-SUP-ACC-004 暂停账号

  • 前置数据:
  1. 存在状态为 active 的账号 B。
  2. 账号 B 无未结清风险单。
  • 步骤:
  1. 在账号 B 行点击 BTN-ACC-004 暂停账号
  • 断言:
  1. 发起 POST /api/v1/supply/accounts/{id}/suspend
  2. 状态从 active 变为 suspended
  3. 记录审计事件 supply.account.suspend

UI-SUP-ACC-005 删除账号失败保护

  • 前置数据:
  1. 存在状态 active 的账号 C。
  • 步骤:
  1. 尝试触发 BTN-ACC-005 删除账号(若不可见则通过接口模拟)。
  • 断言:
  1. UI 层按钮不可见或不可点。
  2. 若后端请求被触发,返回 409 冲突。
  3. 页面提示“活跃账号不可删除”。
  4. 不产生删除成功审计事件。

UI-SUP-ACC-006 查看审计日志

  • 前置数据:
  1. 账号 D 已有至少 3 条历史操作记录。
  • 步骤:
  1. 点击 BTN-ACC-006 查看审计
  • 断言:
  1. 发起 GET /api/v1/supply/accounts/{id}/audit-logs
  2. 侧边栏展示审计列表(含 operator/request_id/time
  3. 列表分页正常page/page_size 生效)。

3. SUP-PAGE-002 套餐发布UI-SUP-PKG-001~006

UI-SUP-PKG-001 保存草稿

  • 前置数据:
  1. 至少存在 1 个 active 账号。
  • 步骤:
  1. 选择 supply_account_idmodel
  2. 输入 total_quotaprice_per_1m_inputprice_per_1m_outputvalid_days
  3. 点击 BTN-PKG-001 保存草稿
  • 断言:
  1. 发起 POST /api/v1/supply/packages/draft
  2. 返回 201,状态为 draft
  3. 列表可查询到该草稿。
  4. 记录审计事件 supply.package.draft.save

UI-SUP-PKG-002 发布上架成功

  • 前置数据:
  1. 存在 draft 套餐 E且价格高于最低保护价。
  • 步骤:
  1. 点击 BTN-PKG-002 发布上架
  • 断言:
  1. 发起 POST /api/v1/supply/packages/{id}/publish
  2. 状态由 draft 变更为 active
  3. 记录审计事件 supply.package.publish

UI-SUP-PKG-003 暂停售卖

  • 前置数据:
  1. 存在 active 套餐 F。
  • 步骤:
  1. 点击 BTN-PKG-003 暂停售卖
  • 断言:
  1. 发起 POST /api/v1/supply/packages/{id}/pause
  2. 状态变更为 paused
  3. 记录审计事件 supply.package.pause

UI-SUP-PKG-004 下架套餐

  • 前置数据:
  1. 存在 activepaused 套餐 G。
  2. 套餐 G 不存在未完成结算锁。
  • 步骤:
  1. 点击 BTN-PKG-004 立即下架
  • 断言:
  1. 发起 POST /api/v1/supply/packages/{id}/unlist
  2. 状态变更为 expired(或按策略回到 paused)。
  3. 记录审计事件 supply.package.unlist

UI-SUP-PKG-005 批量调价部分失败

  • 前置数据:
  1. 选择 3 个套餐2 个可编辑1 个不可编辑(状态冲突)。
  • 步骤:
  1. 触发 BTN-PKG-005 批量调价,提交统一调价参数。
  • 断言:
  1. 发起 POST /api/v1/supply/packages/batch-price
  2. 返回 total=3success_count=2failed_count=1
  3. 失败项含明确 package_iderror_code
  4. 成功项价格实际更新。

UI-SUP-PKG-006 复制套餐

  • 前置数据:
  1. 存在任意套餐 H。
  • 步骤:
  1. 点击 BTN-PKG-006 复制套餐
  • 断言:
  1. 发起 POST /api/v1/supply/packages/{id}/clone
  2. 返回 201,新套餐状态为 draft
  3. 新套餐字段默认值与原套餐一致(除状态、创建时间)。
  4. 记录审计事件 supply.package.clone

4. SUP-PAGE-003 结算提现UI-SUP-SET-001~005

UI-SUP-SET-001 刷新收益数据

  • 前置数据:
  1. 供应方账号存在账单数据。
  • 步骤:
  1. 点击 BTN-SET-001 刷新收益
  • 断言:
  1. 发起 GET /api/v1/supplier/billing
  2. 汇总卡片与趋势图刷新。
  3. 刷新失败时显示可重试提示,不清空旧数据。

UI-SUP-SET-002 发起提现成功

  • 前置数据:
  1. available_amount > 0
  2. 当前无 processing 结算单。
  • 步骤:
  1. 输入提现金额、收款方式、收款账户、验证码。
  2. 点击 BTN-SET-002 发起提现
  • 断言:
  1. 发起 POST /api/v1/supply/settlements/withdraw
  2. 返回 201,结算状态为 pending
  3. 提现金额从可提现余额冻结。
  4. 记录审计事件 supply.settlement.withdraw.create

UI-SUP-SET-003 撤销提现申请

  • 前置数据:
  1. 存在 pending 状态结算单 I。
  • 步骤:
  1. 点击 BTN-SET-003 撤销申请
  • 断言:
  1. 发起 POST /api/v1/supply/settlements/{id}/cancel
  2. 状态变更为 failed/cancelled
  3. 冻结金额回退。
  4. 记录审计事件 supply.settlement.withdraw.cancel

UI-SUP-SET-004 下载对账单

  • 前置数据:
  1. 存在任意结算单 J。
  • 步骤:
  1. 点击 BTN-SET-004 下载对账单
  • 断言:
  1. 发起 GET /api/v1/supply/settlements/{id}/statement
  2. 返回可下载链接与过期时间。
  3. 下载文件成功,文件命名符合规范。
  4. 记录审计事件 supply.settlement.statement.export

UI-SUP-SET-005 查看收益流水

  • 前置数据:
  1. 已生成多条收益流水记录。
  • 步骤:
  1. 点击 BTN-SET-005 查看流水明细
  2. 分别使用时间区间和分页参数查询。
  • 断言:
  1. 发起 GET /api/v1/supply/earnings/records
  2. 明细返回 earnings_type/status/amount/earned_at 字段完整。
  3. 分页逻辑正确,无重复/漏项。

5. 安全专项SEC-SUP-001~002

SEC-SUP-001 错误体与导出脱敏检查

  • 前置数据:
  1. 人为构造账号验证失败、发布失败、提现失败场景。
  2. 准备账单导出与对账单导出样本。
  • 步骤:
  1. 触发上述失败场景并抓取错误响应。
  2. 执行对账单下载。
  3. 对错误体、导出文件运行脱敏扫描。
  • 断言:
  1. 任一结果中均不出现可复用上游凭证片段。
  2. 命中敏感片段则标记 P0对应 M-013 失败。

SEC-SUP-002 凭证边界回归(对齐 CB-001~CB-004

  • 前置数据:
  1. 平台鉴权与拦截策略已开启。
  2. 出网审计与告警已开启。
  • 步骤:
  1. 使用平台凭证访问主路径,确认可通过。
  2. 构造外部 query key 请求(含 /v1beta/*)。
  3. 构造需求方绕过平台直连上游尝试。
  • 断言:
  1. platform_credential_ingress_coverage_pct=100%M-014
  2. query_key_external_reject_rate_pct=100%M-016
  3. direct_supplier_call_by_consumer_events=0M-015
  4. supplier_credential_exposure_events=0M-013

6. 执行产物要求

每条用例至少产出:

  1. 原始请求/响应日志(含 request_id
  2. 页面录屏或关键截图。
  3. 审计事件截图或导出。
  4. 用例结论PASS/FAIL/BLOCKED与责任人签字。