fix: 真流量虚流量权限
All checks were successful
构建并部署前端到测试环境 / build-and-deploy (push) Successful in 4m42s

This commit is contained in:
sexygoat
2026-05-14 10:52:11 +08:00
parent 1690252740
commit 38cf7d12e9
29 changed files with 859 additions and 198 deletions

View File

@@ -0,0 +1,29 @@
# Change: 更新资产信息当前生效套餐的到期计时基准展示
## Why
资产信息页的“当前生效套餐”依赖 `GET /api/admin/assets/:identifier/current-package` 获取套餐详情。后端现已在该接口中新增返回 `expiry_base` 字段,用于标识套餐到期时间的计时基准,但当前前端侧还没有建立对应的契约与展示规范。
如果不先补齐这份 spec后续实现时容易出现类型未对齐、数据映射丢失或页面根据开始/到期时间自行推断口径的情况,导致运营人员无法直接判断套餐是“实名激活时起算”还是“购买时起算”。
## What Changes
- 为资产信息页“当前生效套餐”补充 `expiry_base` 契约规范:
- `GET /api/admin/assets/:identifier/current-package` 支持返回 `expiry_base`
- 前端当前套餐类型与页面状态需要保留该字段
- 为资产信息页“当前生效套餐”补充“到期计时基准”展示规范:
- `from_activation` 显示为“实名激活时起算”
- `from_purchase` 显示为“购买时起算”
- 字段为空或未知时显示稳定占位内容
- 明确页面必须优先使用后端返回的 `expiry_base`,不得根据 `start_time``expire_time` 等字段自行推断
## Impact
- Affected specs:
- `asset-information`
- Affected code:
- `src/types/api/asset.ts`
- `src/views/asset-management/asset-information/composables/useAssetInfo.ts`
- `src/views/asset-management/asset-information/components/CurrentPackageCard.vue`
- Dependencies:
- `GET /api/admin/assets/:identifier/current-package` 已新增返回 `expiry_base`

View File

@@ -0,0 +1,50 @@
## ADDED Requirements
### Requirement: Admin Current Package Expiry Base Contract
The admin asset information integration SHALL accept and preserve `expiry_base` from `GET /api/admin/assets/:identifier/current-package`.
#### Scenario: Accept additive expiry_base from current-package API
- **GIVEN** 用户正在查看后台“资产信息”中的“当前生效套餐”
- **AND** `GET /api/admin/assets/:identifier/current-package` 返回当前套餐数据
- **WHEN** 响应中包含 `expiry_base`
- **THEN** 前端类型契约 MUST 支持 `expiry_base`
- **AND** 页面状态 MUST 保留该字段原始值
- **AND** 支持的取值 MUST 包含 `from_activation``from_purchase`
#### Scenario: Missing expiry_base does not break current package parsing
- **GIVEN** `GET /api/admin/assets/:identifier/current-package` 返回当前套餐数据
- **AND** 响应中未返回 `expiry_base` 或该字段为空
- **WHEN** 前端解析当前套餐响应
- **THEN** 页面 MUST 继续保留现有套餐字段的解析行为
- **AND** MUST NOT 因缺少 `expiry_base` 导致“当前生效套餐”整体渲染失败
### Requirement: Admin Current Package Expiry Base Display
The admin asset information view SHALL display `expiry_base` as the expiry countdown base in the `当前生效套餐` card and MUST use the backend-provided value instead of inferring from time fields.
#### Scenario: Show activation-based expiry text on current package card
- **GIVEN** 用户正在查看后台“资产信息”中的“当前生效套餐”
- **AND** 当前套餐返回 `expiry_base``from_activation`
- **WHEN** 页面渲染套餐详情表格
- **THEN** 页面 MUST 显示“到期计时基准”
- **AND** 该字段的展示文案 MUST 为“实名激活时起算”
#### Scenario: Show purchase-based expiry text on current package card
- **GIVEN** 用户正在查看后台“资产信息”中的“当前生效套餐”
- **AND** 当前套餐返回 `expiry_base``from_purchase`
- **WHEN** 页面渲染套餐详情表格
- **THEN** 页面 MUST 显示“到期计时基准”
- **AND** 该字段的展示文案 MUST 为“购买时起算”
#### Scenario: Show placeholder when expiry_base is empty or unknown
- **GIVEN** 用户正在查看后台“资产信息”中的“当前生效套餐”
- **AND** 当前套餐的 `expiry_base` 为空、缺失或不是已知取值
- **WHEN** 页面渲染套餐详情表格
- **THEN** 页面 MUST 在“到期计时基准”位置显示稳定占位内容
- **AND** 页面 MUST NOT 根据 `start_time``expire_time` 或其他时间字段自行推断展示文案

View File

@@ -0,0 +1,16 @@
## 1. Contract Alignment
- [x] 1.1 扩展资产当前生效套餐相关类型,支持 `expiry_base`
- [x] 1.2 调整 `useAssetInfo.ts` 中当前生效套餐的数据映射,确保页面状态保留 `expiry_base`
## 2. UI Display
- [x] 2.1 在资产信息页“当前生效套餐”卡片中新增“到期计时基准”展示项
- [x] 2.2 按统一文案映射 `expiry_base``from_activation` -> “实名激活时起算”,`from_purchase` -> “购买时起算”
- [x] 2.3 当 `expiry_base` 为空、缺失或未知时,显示稳定占位内容,不自行推断
## 3. Verification
- [x] 3.1 验证 `current-package` 返回 `expiry_base=from_activation` 时,页面正确显示“实名激活时起算”
- [x] 3.2 验证 `current-package` 返回 `expiry_base=from_purchase` 时,页面正确显示“购买时起算”
- [x] 3.3 验证 `expiry_base` 缺失或为空时,页面仍能正常渲染其余套餐信息且显示占位内容