fix: 新增: 修改资产套餐已用量, 修改资产套餐过期时间
All checks were successful
构建并部署前端到测试环境 / build-and-deploy (push) Successful in 4m22s
All checks were successful
构建并部署前端到测试环境 / build-and-deploy (push) Successful in 4m22s
This commit is contained in:
@@ -0,0 +1,134 @@
|
||||
## ADDED Requirements
|
||||
|
||||
### Requirement: Package List Adjustment Actions
|
||||
|
||||
The asset information package list SHALL provide operator actions to update a package usage record's real used data and expiration time.
|
||||
|
||||
#### Scenario: Render adjustment actions in the package list
|
||||
|
||||
- **GIVEN** 用户正在查看资产信息页的“套餐列表”
|
||||
- **AND** 当前登录账号满足对应操作的可见性规则
|
||||
- **WHEN** 页面渲染套餐列表操作列
|
||||
- **THEN** 系统 MUST 显示“修改已用量”操作
|
||||
- **AND** 系统 MUST 显示“修改过期时间”操作
|
||||
|
||||
#### Scenario: Open used-data adjustment form
|
||||
|
||||
- **GIVEN** 用户可见“修改已用量”操作
|
||||
- **WHEN** 用户点击某条套餐记录的“修改已用量”
|
||||
- **THEN** 系统 MUST 打开修改已用量弹窗
|
||||
- **AND** 弹窗 MUST 展示当前套餐记录上下文
|
||||
- **AND** 表单 MUST 要求输入新的套餐真实已用量 MB
|
||||
|
||||
#### Scenario: Open expiration adjustment form
|
||||
|
||||
- **GIVEN** 用户可见“修改过期时间”操作
|
||||
- **WHEN** 用户点击某条套餐记录的“修改过期时间”
|
||||
- **THEN** 系统 MUST 打开修改过期时间弹窗
|
||||
- **AND** 弹窗 MUST 展示当前套餐记录上下文
|
||||
- **AND** 表单 MUST 要求输入新的套餐过期时间
|
||||
|
||||
### Requirement: Used Data Update API Integration
|
||||
|
||||
The frontend SHALL update a package usage record's real used data through `PATCH /api/admin/assets/{identifier}/packages/{package_usage_id}/used-data`.
|
||||
|
||||
#### Scenario: Submit valid used-data update
|
||||
|
||||
- **GIVEN** 用户正在修改某条套餐记录的已用量
|
||||
- **AND** 当前资产标识符为 `identifier`
|
||||
- **AND** 当前套餐使用记录 ID 为 `package_usage_id`
|
||||
- **WHEN** 用户输入非负整数 `data_usage_mb` 并提交
|
||||
- **THEN** 系统 MUST send `PATCH /api/admin/assets/{identifier}/packages/{package_usage_id}/used-data`
|
||||
- **AND** 请求体 MUST be JSON with `data_usage_mb`
|
||||
- **AND** `data_usage_mb` MUST be a non-negative integer MB value
|
||||
|
||||
#### Scenario: Reject invalid used-data input
|
||||
|
||||
- **GIVEN** 用户正在修改套餐已用量
|
||||
- **WHEN** 用户未输入值、输入负数或输入非整数
|
||||
- **THEN** 系统 MUST block submission
|
||||
- **AND** 系统 MUST show a validation message explaining that the used data must be a non-negative integer MB value
|
||||
- **AND** 系统 MUST NOT call the PATCH endpoint
|
||||
|
||||
#### Scenario: Used-data update succeeds
|
||||
|
||||
- **GIVEN** used-data PATCH request returns `code=0`
|
||||
- **WHEN** 系统收到响应
|
||||
- **THEN** 系统 MUST show a success message
|
||||
- **AND** 系统 MUST close the edit dialog
|
||||
- **AND** 系统 MUST refresh the asset package list so the latest package usage data is displayed
|
||||
|
||||
### Requirement: Expiration Time Update API Integration
|
||||
|
||||
The frontend SHALL update a package usage record's expiration time through `PATCH /api/admin/assets/{identifier}/packages/{package_usage_id}/expires-at`.
|
||||
|
||||
#### Scenario: Submit valid expiration update
|
||||
|
||||
- **GIVEN** 用户正在修改某条套餐记录的过期时间
|
||||
- **AND** 当前资产标识符为 `identifier`
|
||||
- **AND** 当前套餐使用记录 ID 为 `package_usage_id`
|
||||
- **WHEN** 用户输入有效的 `expires_at` 并提交
|
||||
- **THEN** 系统 MUST send `PATCH /api/admin/assets/{identifier}/packages/{package_usage_id}/expires-at`
|
||||
- **AND** 请求体 MUST be JSON with `expires_at`
|
||||
- **AND** `expires_at` MUST be formatted as `YYYY-MM-DD HH:MM:SS` or another backend-accepted RFC3339 string
|
||||
|
||||
#### Scenario: Reject missing expiration input
|
||||
|
||||
- **GIVEN** 用户正在修改套餐过期时间
|
||||
- **WHEN** 用户未选择或未输入过期时间
|
||||
- **THEN** 系统 MUST block submission
|
||||
- **AND** 系统 MUST show a validation message explaining that expiration time is required
|
||||
- **AND** 系统 MUST NOT call the PATCH endpoint
|
||||
|
||||
#### Scenario: Expiration update succeeds
|
||||
|
||||
- **GIVEN** expires-at PATCH request returns `code=0`
|
||||
- **WHEN** 系统收到响应
|
||||
- **THEN** 系统 MUST show a success message
|
||||
- **AND** 系统 MUST close the edit dialog
|
||||
- **AND** 系统 MUST refresh the asset package list so the latest expiration time is displayed
|
||||
|
||||
### Requirement: Environment And Account Visibility Gate
|
||||
|
||||
The frontend SHALL gate both package adjustment actions by environment, current account `user_type`, and production button permissions.
|
||||
|
||||
#### Scenario: Production platform user with permission sees matching action
|
||||
|
||||
- **GIVEN** 当前运行环境为线上环境
|
||||
- **AND** 当前登录账号的 `user_type` 为 `2`
|
||||
- **AND** 当前登录账号拥有“修改已用量”的按钮权限
|
||||
- **WHEN** 页面渲染套餐列表操作列
|
||||
- **THEN** 系统 MUST show “修改已用量”
|
||||
|
||||
#### Scenario: Production platform user without permission cannot see matching action
|
||||
|
||||
- **GIVEN** 当前运行环境为线上环境
|
||||
- **AND** 当前登录账号的 `user_type` 为 `2`
|
||||
- **AND** 当前登录账号缺少“修改过期时间”的按钮权限
|
||||
- **WHEN** 页面渲染套餐列表操作列
|
||||
- **THEN** 系统 MUST NOT show “修改过期时间”
|
||||
|
||||
#### Scenario: Production super admin cannot see adjustment actions
|
||||
|
||||
- **GIVEN** 当前运行环境为线上环境
|
||||
- **AND** 当前登录账号的 `user_type` 为 `1`
|
||||
- **WHEN** 页面渲染套餐列表操作列
|
||||
- **THEN** 系统 MUST NOT show “修改已用量”
|
||||
- **AND** 系统 MUST NOT show “修改过期时间”
|
||||
|
||||
#### Scenario: Test environment super admin sees actions without permissions
|
||||
|
||||
- **GIVEN** 当前运行环境为测试或开发环境
|
||||
- **AND** 当前登录账号的 `user_type` 为 `1`
|
||||
- **AND** 当前登录账号没有两个调整操作的按钮权限
|
||||
- **WHEN** 页面渲染套餐列表操作列
|
||||
- **THEN** 系统 MUST show “修改已用量”
|
||||
- **AND** 系统 MUST show “修改过期时间”
|
||||
|
||||
#### Scenario: Test environment non-super-admin cannot see actions
|
||||
|
||||
- **GIVEN** 当前运行环境为测试或开发环境
|
||||
- **AND** 当前登录账号的 `user_type` is not `1`
|
||||
- **WHEN** 页面渲染套餐列表操作列
|
||||
- **THEN** 系统 MUST NOT show “修改已用量”
|
||||
- **AND** 系统 MUST NOT show “修改过期时间”
|
||||
Reference in New Issue
Block a user