# GET /api/v1/report/records — 上报更低价记录列表

> 所属:Report 组（前缀 `/api/v1/report`） | 鉴权:Bearer | [← 返回 API 索引](../README.md)

当前用户的上报更低价记录列表，支持按状态筛选。

## 入参（query）

| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
| `status` | string \| null | ❌ | 筛选状态：`pending` / `approved` / `rejected`；不传 = 全部 |

Mock 请求:
```
GET /api/v1/report/records?status=pending
```

## 出参

响应 `200`:`ReportRecordsOut`

| 字段 | 类型 | 说明 |
|---|---|---|
| `records` | list[ReportRecordOut] | 上报记录列表 |
| `records[].id` | int | 记录 ID |
| `records[].store_name` | string \| null | 门店名 |
| `records[].dish_summary` | string \| null | 菜品摘要（如 `香辣鸡腿堡套餐、可口可乐`） |
| `records[].original_platform_id` | string \| null | 原最低价来源平台 ID |
| `records[].original_platform_name` | string \| null | 原最低价来源平台名 |
| `records[].original_price_cents` | int \| null | 原最低价（分） |
| `records[].reported_platform_id` | string | 上报平台标识 |
| `records[].reported_platform_name` | string | 上报平台名（如 `京东外卖`） |
| `records[].reported_price_cents` | int | 上报更低价（分） |
| `records[].images` | list[string] | 截图 URL 列表 |
| `records[].status` | string | `pending` / `approved` / `rejected` |
| `records[].reject_reason` | string \| null | 驳回原因（rejected 时） |
| `records[].reward_coins` | int \| null | 通过后发的金币数 |
| `records[].created_at` | datetime | 提交时间 |
| `counts` | object | 四态计数（不受 status 筛选影响，供前端 chip 展示） |
| `counts.all` | int | 总数 |
| `counts.pending` | int | 审核中 |
| `counts.approved` | int | 已通过 |
| `counts.rejected` | int | 未通过 |

Mock 出参:
```json
{
  "records": [
    {
      "id": 89,
      "store_name": "肯德基宅急送（天北路店）",
      "dish_summary": "香辣鸡腿堡套餐、可口可乐（中）",
      "original_platform_id": "meituan-waimai",
      "original_platform_name": "美团外卖",
      "original_price_cents": 2850,
      "reported_platform_id": "jd-waimai",
      "reported_platform_name": "京东外卖",
      "reported_price_cents": 1880,
      "images": ["/media/price_report/u42_a1b2c3d4e5f6g7h8.jpg"],
      "status": "pending",
      "reject_reason": null,
      "reward_coins": null,
      "created_at": "2026-07-03T10:30:00Z"
    }
  ],
  "counts": {
    "all": 3,
    "pending": 1,
    "approved": 1,
    "rejected": 1
  }
}
```

## 错误码
- `400` 无效的 `status` 值（仅 `pending`/`approved`/`rejected` 合法）
- `401` 未鉴权

## 说明
- `counts` 始终基于全量（不受 `status` 筛选影响），供前端筛选 chip 显示各状态数量
- 价格单位均为分（`*_cents`），客户端 ÷100 显示元
