fix: some

This commit is contained in:
luo
2026-09-17 12:16:20 +08:00
parent 2308d82d0f
commit 76d4e4ec02
126 changed files with 11671 additions and 294 deletions

View File

@@ -0,0 +1,48 @@
## ADDED Requirements
### Requirement: 佣金记录列表回溯行与状态筛选
佣金记录列表(`GET /api/admin/shops/{shop_id}/commission-records`MUST 支持 `status` 查询参数1 已冻结 / 2 解冻中 / 3 已发放 / 4 已失效 / 5 回溯 / 99 待人工修正),且 MUST NOT 提供 `source` 查询参数;`status=5` 即等价于只看回溯行。
#### Scenario: 只看回溯行
- **GIVEN** 用户在佣金记录列表选择状态「回溯」
- **WHEN** 前端发起列表查询
- **THEN** 前端 MUST 只传 `status=5`
- **AND** 前端 MUST NOT 传 `source` 参数
### Requirement: 佣金记录行新增字段与兜底
列表响应的每一行 MUST 支持 `source``original` / `clawback`);回溯行 MUST 支持 `original_commission_id``refund_id``refund_no``withdrawable`(恒 `false`)与可为负数的 `amount``balance_after`;原佣金行 MUST 支持 `clawback_records` 摘要与 `clawback_total_amount`(负值)。后端 `omitempty` 缺省字段前端 MUST 以 `?? []` / `?? 0` 兜底,金额单位为分。
#### Scenario: 缺省字段兜底
- **GIVEN** 列表响应中的原佣金行未返回 `clawback_records`
- **WHEN** 前端渲染该行
- **THEN** 前端 MUST 按空数组处理并正常渲染
- **AND** 前端 MUST NOT 因缺省字段报错或渲染 `undefined`
### Requirement: 列表行标识与负数渲染
列表 MUST 使用 `source + ':' + id` 作为行 key原佣金与回溯 ID 空间独立,同一页可能出现相同 `id`);回溯行 MUST 展示「不可提现」标识;负数 `amount``balance_after` MUST 标红显示;任何跳转详情的入口 MUST 携带该行的 `source`,缺省按原佣金处理。
#### Scenario: 同一页出现重复 id
- **GIVEN** 同一页列表中同时存在原佣金行与回溯行且 `id` 相同
- **WHEN** 前端渲染表格
- **THEN** 前端 MUST 以 `source + ':' + id` 区分两行
- **AND** 前端 MUST NOT 出现行复用或渲染错位
#### Scenario: 负数金额标红
- **GIVEN** 某回溯行 `amount` 为负值
- **WHEN** 前端渲染金额列
- **THEN** 前端 MUST 标红展示该负值
### Requirement: 佣金记录详情接口封装
前端 MUST 提供 `GET /api/admin/shops/{shop_id}/commission-records/{id}` 的详情封装,并支持可选 `source``source=clawback` 时返回回溯详情,`source` 省略时按原佣金处理。原佣金详情 MUST 返回 `clawback_records`;回溯详情 MUST 返回 `original_commission`;越权与不存在 MUST 返回同一结果(佣金明细不存在),前端 MUST NOT 用该接口做存在性判断。
#### Scenario: 打开回溯行详情
- **GIVEN** 用户在列表点击某条回溯行
- **WHEN** 前端请求详情
- **THEN** 前端 MUST 携带 `source=clawback` 与该行 `id`
- **AND** 详情 MUST 展示来源 `original_commission`
#### Scenario: 越权统一提示
- **GIVEN** 详情接口返回「佣金明细不存在」
- **WHEN** 前端渲染详情
- **THEN** 前端 MUST 展示统一不存在提示
- **AND** 前端 MUST NOT 区分越权与不存在两种原因

View File

@@ -0,0 +1,19 @@
## ADDED Requirements
### Requirement: 佣金记录导出场景
前端 MUST 支持导出场景 `scene=commission_record`(后端已进白名单),并在导出管理中提供该场景的任务列表入口;创建导出任务时 MUST 提交固定 `scene=commission_record`。导出粒度为佣金记录:原佣金与回溯各占一行,金额与余额同样按分转元、负数带 `-` 展示。
#### Scenario: 场景页固定查询
- **GIVEN** 用户打开导出佣金记录页面
- **WHEN** 页面查询导出任务列表
- **THEN** 前端 MUST 调用 `GET /api/admin/export-tasks` 且带 `scene=commission_record`
- **AND** 用户 MUST NOT 能在该页面切换到其他场景
### Requirement: 佣金记录导出筛选受限
佣金记录列表发起导出时,`query` MUST 只包含后端支持的筛选 key`shop_id``status``commission_source``order_no`MUST NOT 提交 `iccid``virtual_no` 及时间筛选,导出弹窗 MUST NOT 直接复用列表全部条件。
#### Scenario: 列表筛选含不支持的 key
- **GIVEN** 佣金记录列表当前筛选包含 `iccid` 与时间范围
- **WHEN** 用户确认创建导出任务
- **THEN** 提交的 `query` MUST NOT 包含 `iccid``virtual_no` 或时间字段
- **AND** 提交的 `query` MUST 仅保留 `shop_id``status``commission_source``order_no` 中已填写的项