## 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` 或发生渲染异常
