This commit is contained in:
@@ -0,0 +1,28 @@
|
||||
## ADDED Requirements
|
||||
|
||||
### Requirement: 超级管理员按店铺查看我的佣金
|
||||
「我的佣金」页面 MUST 为超级管理员(`user_type` 为 `1`,其账号无 `shop_id`)在页面顶部提供全局店铺选择下拉,选项 MUST 通过店铺列表接口远程搜索获取。选中店铺后,佣金概览与三个页签(佣金明细、提现记录、提现资料)的接口 MUST 使用所选 `shop_id`;切换店铺 MUST 刷新概览与当前页签数据。非超级管理员 MUST NOT 展示该下拉,且 MUST 继续使用当前账号自身的 `shop_id`。超级管理员未选择店铺时,页面 MUST 展示选择店铺的提示,MUST NOT 以「未关联店铺」为由阻止其使用。
|
||||
|
||||
#### Scenario: 超管选择店铺后查看数据
|
||||
- **GIVEN** 超级管理员进入「我的佣金」页面
|
||||
- **WHEN** 其通过顶部下拉远程搜索并选择一个店铺
|
||||
- **THEN** 佣金概览与当前页签 MUST 以所选 `shop_id` 调用接口
|
||||
- **AND** 切换到其他页签 MUST 继续使用同一 `shop_id`
|
||||
|
||||
#### Scenario: 超管未选择店铺
|
||||
- **GIVEN** 超级管理员进入「我的佣金」页面且尚未选择店铺
|
||||
- **WHEN** 页面初始化
|
||||
- **THEN** 页面 MUST 提示先选择店铺
|
||||
- **AND** MUST NOT 展示「未关联店铺」的阻断提示
|
||||
|
||||
#### Scenario: 非超管不展示店铺下拉
|
||||
- **GIVEN** 当前登录账号不是超级管理员
|
||||
- **WHEN** 其进入「我的佣金」页面
|
||||
- **THEN** 页面 MUST NOT 展示店铺下拉
|
||||
- **AND** MUST 使用自身 `shop_id` 加载数据
|
||||
|
||||
#### Scenario: 切换店铺刷新数据
|
||||
- **GIVEN** 超级管理员已选择店铺并加载数据
|
||||
- **WHEN** 其切换为另一个店铺
|
||||
- **THEN** 前端 MUST 重新加载佣金概览与当前页签列表
|
||||
- **AND** 分页 MUST 重置到第 1 页
|
||||
@@ -0,0 +1,64 @@
|
||||
## ADDED Requirements
|
||||
|
||||
### Requirement: 核销申请弹窗抽屉与收款方式远程搜索
|
||||
创建/修改核销申请弹窗 MUST 以从右侧滑出的抽屉形式呈现,并 MUST 保留表单校验、关闭时重置与底部提交/取消操作。收款方式 MUST 改为远程搜索下拉:请求 MUST 携带 `keyword`、`page_size` 为 `20`、`enabled` 为 `true`,仅展示启用项;输入关键字 MUST 经防抖后发起请求,并发时 MUST 丢弃过期响应。编辑已提交申请时,MUST 能回显并保留当前已选收款方式,即使其不在当前搜索结果内。
|
||||
|
||||
#### Scenario: 打开弹窗
|
||||
- **GIVEN** 用户点击创建或修改核销申请
|
||||
- **WHEN** 弹窗打开
|
||||
- **THEN** 弹窗 MUST 从右侧滑出
|
||||
- **AND** MUST 保留表单字段、校验与底部操作
|
||||
|
||||
#### Scenario: 收款方式远程搜索
|
||||
- **GIVEN** 用户打开收款方式下拉
|
||||
- **WHEN** 输入关键字
|
||||
- **THEN** 前端 MUST 以防抖方式调用收款方式接口,携带 `keyword`、`page_size=20`、`enabled=true`
|
||||
- **AND** 仅展示接口返回的启用项
|
||||
- **AND** 过期请求的响应 MUST NOT 覆盖最新结果
|
||||
|
||||
#### Scenario: 编辑场景回显已选收款方式
|
||||
- **GIVEN** 正在修改的申请已选择某收款方式且其不在首屏搜索结果中
|
||||
- **WHEN** 弹窗初始化
|
||||
- **THEN** 下拉 MUST 回显该收款方式名称
|
||||
- **AND** MUST NOT 因搜索而清空已选值
|
||||
|
||||
### Requirement: 核销账单候选筛选与分页
|
||||
核销申请弹窗的核销账单候选列表 MUST 默认以 `page_size` 为 `20` 加载,MUST NOT 固定请求 100 条。候选列表 MUST 支持按来源(`source_type`)、来源单号(`source_no`)、核销状态(`status`)、店铺(`customer_id`)与创建时间(`created_from` / `created_to`)筛选,店铺筛选 MUST 使用远程搜索。筛选条件变化 MUST 回到第 1 页重新加载。翻页 MUST NOT 清空已选账单与已填核销金额;当前页之外已选账单 MUST 仍计入核销合计并随申请提交。
|
||||
|
||||
#### Scenario: 默认分页加载
|
||||
- **GIVEN** 用户打开核销申请弹窗
|
||||
- **WHEN** 账单候选列表加载
|
||||
- **THEN** 请求 MUST 使用 `page_size=20`
|
||||
- **AND** MUST 提供分页或加载更多入口以访问后续数据
|
||||
|
||||
#### Scenario: 按条件筛选账单
|
||||
- **GIVEN** 用户已打开核销申请弹窗
|
||||
- **WHEN** 其填写来源、来源单号、核销状态、店铺或起止时间中的任意条件
|
||||
- **THEN** 前端 MUST 以对应查询参数从第 1 页重新加载候选账单
|
||||
- **AND** 店铺 MUST 通过远程搜索选择
|
||||
|
||||
#### Scenario: 翻页保持已选
|
||||
- **GIVEN** 用户已在当前页勾选账单并填写核销金额
|
||||
- **WHEN** 其翻页后返回或直接提交
|
||||
- **THEN** 已勾选账单与核销金额 MUST 保持不变
|
||||
- **AND** 核销合计 MUST 包含所有页已选账单
|
||||
|
||||
### Requirement: 代办原因按所选账单责任员工判定
|
||||
核销申请的 `acting_reason` MUST 仅在「当前登录账号为超级管理员(`user_type` 为 `1`)且存在非本人负责的所选账单」时展示并必填。责任员工 MUST 取自账单 `debtor_snapshot.account_id`,缺失时回退 `debtor_account_id`。当所选账单全部归属于当前登录账号时,前端 MUST NOT 展示且 MUST NOT 提交 `acting_reason`;当尚未选择任何账单或无法取得责任员工信息时,超级管理员 MUST 视为代办并要求填写。
|
||||
|
||||
#### Scenario: 超管为他人代办需填原因
|
||||
- **GIVEN** 当前登录账号为超级管理员
|
||||
- **WHEN** 其选择责任员工 `account_id` 不等于当前账号 `id` 的账单
|
||||
- **THEN** 代办原因字段 MUST 展示且必填
|
||||
- **AND** 未填写即提交 MUST 被阻止
|
||||
|
||||
#### Scenario: 超管本人办理无需原因
|
||||
- **GIVEN** 当前登录账号为超级管理员且所选账单全部由其本人负责
|
||||
- **WHEN** 其提交核销申请
|
||||
- **THEN** 代办原因字段 MUST NOT 展示
|
||||
- **AND** 提交载荷 MUST NOT 包含 `acting_reason`
|
||||
|
||||
#### Scenario: 非超管不判定代办
|
||||
- **GIVEN** 当前登录账号不是超级管理员
|
||||
- **WHEN** 其创建或重新提交核销申请
|
||||
- **THEN** 代办原因字段 MUST NOT 展示
|
||||
Reference in New Issue
Block a user