## 1. API Contracts And Types

- [x] 1.1 扩展资产详情响应和资产信息页面状态，支持 5 个预计最终到期字段：`estimated_final_expires_at`、`days_until_final_expiry`、`expiry_estimate_status`、`expiry_estimate_status_name`、`is_expiring`。
- [x] 1.2 扩展 IoT 卡和设备列表项类型，支持 5 个预计最终到期字段；不处理 C 端字段。
- [x] 1.3 校验四种状态及字段约束：`exact` 可返回日期和剩余天数，其他状态的 `estimated_final_expires_at` 与 `days_until_final_expiry` 必须为 `null`。

## 2. Asset Information

- [x] 2.1 将资产解析接口返回的预计最终到期字段映射到资产详情页面状态。
- [x] 2.2 在资产详情卡和设备基础信息中展示“预计套餐到期时间”。
- [x] 2.3 按 `expiry_estimate_status` 展示：`exact` 显示日期，`waiting_activation` 显示“待激活后起算”，`none` 显示占位，`invalid_data` 显示“数据异常”。
- [x] 2.4 `is_expiring=true` 时按 `days_until_final_expiry` 应用临期样式，不根据日期或天数自行推导临期状态。

## 3. Asset Lists

- [x] 3.1 在 IoT 卡列表新增“预计套餐到期时间”可配置列，显示接口返回的预计日期或“待激活后起算”。
- [x] 3.2 在设备列表新增“预计套餐到期时间”可配置列，显示接口返回的预计日期或“待激活后起算”。
- [x] 3.3 在两个列表对 `is_expiring=true` 的预计到期时间使用临期样式，且不改变现有列表排序。

## 4. Verification

- [x] 4.1 验证无套餐时不伪造预计日期并显示稳定占位内容。
- [x] 4.2 验证仅当前套餐和存在多个排队主套餐时，资产详情和两个列表均显示后端 `estimated_final_expires_at`。
- [x] 4.3 验证等待激活等不可预计状态显示“待激活后起算”，不显示计算出的日期。
- [x] 4.4 验证 `is_expiring=true` 时使用临期样式，且卡、设备列表顺序不变。
- [x] 4.5 运行相关类型检查、lint 或构建验证。
