## ADDED Requirements ### Requirement: Asset Virtual Traffic Progress Uses Real Total The asset information page SHALL calculate the `虚流量使用` progress percentage with `virtual_used_mb / real_total_mb` in both the `当前生效套餐` card and the `套餐列表` package rows. The progress bar denominator MUST be `real_total_mb` even when the display text also shows `virtual_total_mb`, stop threshold, or other virtual traffic threshold values. When `real_total_mb` is missing, empty, or less than or equal to zero, the progress percentage MUST be treated as `0` and MUST NOT render `NaN`, `Infinity`, or a broken progress bar. #### Scenario: Current package virtual progress uses real total - **GIVEN** 用户正在资产信息页查看 `当前生效套餐` - **AND** 当前套餐的 `virtual_used_mb` 为 `20` - **AND** 当前套餐的 `real_total_mb` 为 `100` - **WHEN** 页面渲染 `虚流量使用` 进度条 - **THEN** 进度条百分比 MUST 按 `20 / 100` 计算 - **AND** 进度条 MUST 显示为 `20%` #### Scenario: Package list virtual progress uses real total - **GIVEN** 用户正在资产信息页查看 `套餐列表` - **AND** 某条套餐记录的 `virtual_used_mb` 为 `20` - **AND** 该记录的 `real_total_mb` 为 `100` - **WHEN** 页面渲染该记录的 `虚流量使用` 进度条 - **THEN** 进度条百分比 MUST 按 `20 / 100` 计算 - **AND** 进度条 MUST 显示为 `20%` #### Scenario: Virtual threshold does not control progress denominator - **GIVEN** `虚流量使用` 展示区域同时展示停机阈值或 `virtual_total_mb` - **AND** `virtual_used_mb` 为 `20` - **AND** `real_total_mb` 为 `100` - **AND** `virtual_total_mb` 为 `50` - **WHEN** 页面渲染 `虚流量使用` 进度条 - **THEN** 进度条百分比 MUST 按 `virtual_used_mb / real_total_mb` 计算 - **AND** 进度条 MUST NOT 按 `virtual_used_mb / virtual_total_mb` 计算 #### Scenario: Missing or zero real total renders stable zero progress - **GIVEN** `虚流量使用` 展示区域需要渲染进度条 - **AND** `real_total_mb` 缺失、为空或小于等于 `0` - **WHEN** 页面计算虚流量进度条百分比 - **THEN** 进度条百分比 MUST 为 `0` - **AND** 页面 MUST NOT 显示 `NaN`、`Infinity` 或发生渲染异常