## Why

`tb_package_usage` 在套餐激活时只快照了套餐名称（`package_name`），未快照购买时的实付金额。导致 `GET /api/admin/assets/{id}/current-package` 和 `GET /api/admin/assets/{id}/packages` 两个接口无法返回价格信息，也无法在不 JOIN 订单表的情况下展示历史购买价格。

## What Changes

- **新增数据库字段**：`tb_package_usage.paid_amount BIGINT`，单位分，nullable，用于快照购买时的实付金额
- **新增数据库迁移**：`000129_add_paid_amount_to_package_usage`，含存量数据回填（通过 `order_id` JOIN `tb_order`）
- **Model 更新**：`PackageUsage` 结构体新增 `PaidAmount *int64` 字段
- **写入点赋值（4处）**：
  - `internal/service/order/service.go` `activateMainPackage()` — 主套餐激活
  - `internal/service/order/service.go` `activateAddonPackage()` — 加油包激活
  - `internal/task/auto_purchase.go` `activateMainPackage()` — 自动购包主套餐
  - `internal/task/auto_purchase.go` `activateAddonPackage()` — 自动购包加油包
- **DTO 更新**：`AssetPackageResponse` 新增 `PaidAmount *int64` 字段
- **Service 查询更新**：Asset Service 的 `GetCurrentPackage` 和 `GetPackages` 填充 DTO `PaidAmount` 字段

## Capabilities

### New Capabilities

- `package-usage-paid-amount-snapshot`：在套餐使用记录中快照购买实付金额，使资产套餐接口能直接返回购买价格，无需 JOIN 订单表

### Modified Capabilities

- `asset-queries`：套餐列表和当前套餐接口响应新增 `paid_amount` 字段

## Impact

**数据库**
- `tb_package_usage` 新增字段 `paid_amount BIGINT`（nullable，存量回填）

**代码**
| 层级 | 文件 | 改动 |
|------|------|------|
| Model | `internal/model/package.go` | `PackageUsage` 新增 `PaidAmount *int64` |
| Service（写） | `internal/service/order/service.go` | 主套餐 + 加油包激活各加一行赋值 |
| Service（写） | `internal/task/auto_purchase.go` | 自动购包主套餐 + 加油包各加一行赋值 |
| DTO | `internal/model/dto/asset_dto.go` | `AssetPackageResponse` 新增 `PaidAmount *int64` |
| Service（读） | `internal/service/asset/service.go` | `GetCurrentPackage` + `GetPackages` 填充 DTO 字段 |
| 迁移 | `migrations/000129_add_paid_amount_to_package_usage.{up,down}.sql` | 加字段 + 回填 |

**API**
- `GET /api/admin/assets/{id}/current-package`：响应新增 `paid_amount`（分）
- `GET /api/admin/assets/{id}/packages`：响应 items 新增 `paid_amount`（分）

**特殊情况**
- 线下支付订单：`actual_paid_amount` 为 null，`paid_amount` 快照为 null（字段 nullable）
- 存量 `order_id = 0` 的记录（企业无订单分配）：回填为 null，字段保持 nullable
