15dcfa604b
- comparison_record 表 + 上报(幂等 user+trace)/列表/详情 接口;服务端派生 best/saved/is_source_best/status + information(done 帧文案/失败具体原因) - 战绩里程碑:comparison_milestone_claim 表 + 进度/领取接口,按成功比价次数 解锁,复用 grant_coins 真发金币(RECORD_MILESTONES 120/180/300/500/800/1200) - 迁移 record/information/milestone 三个,单 head;rewards.py 集中档位配置 - 测试 test_compare_record(8)+test_compare_milestone(7) 全绿;docs/api 12a-12e + 索引 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
48 lines
2.3 KiB
Markdown
48 lines
2.3 KiB
Markdown
# GET /api/v1/compare/records — 比价记录列表(游标分页)
|
||
|
||
> 所属:比价记录组(前缀 `/api/v1/compare`) | 鉴权:Bearer | [← 返回 API 索引](./README.md)
|
||
|
||
「我的比价记录」列表页数据源。按 `id` 倒序(最新在前)。
|
||
|
||
## 入参(query)
|
||
|
||
| 字段 | 类型 | 必填 | 默认 | 说明 |
|
||
|---|---|---|---|---|
|
||
| `limit` | int | ❌ | 20 | 1–100 |
|
||
| `cursor` | int | ❌ | null | 上一页末条 `id`,首页不传 |
|
||
|
||
## 出参
|
||
响应 `200`:`{ items: ComparisonRecordOut[], next_cursor: int|null }`(分页见 [索引#游标分页约定](./README.md#游标分页约定))
|
||
|
||
**ComparisonRecordOut**(列表项,不含 `raw_payload`,减小 payload)
|
||
|
||
| 字段 | 类型 | 说明 |
|
||
|---|---|---|
|
||
| `id` | int | 记录 id(也是游标) |
|
||
| `business_type` | string | `food` / `ecom` / `coupon` |
|
||
| `trace_id` | string | pricebot trace_id |
|
||
| `source_platform_id` | string \| null | 源平台代号 |
|
||
| `source_platform_name` | string \| null | 源平台中文名 |
|
||
| `source_package` | string \| null | 源平台包名 |
|
||
| `source_price_cents` | int \| null | 源平台到手价(分) |
|
||
| `best_platform_id` | string \| null | 最优平台代号 |
|
||
| `best_platform_name` | string \| null | 最优平台中文名 |
|
||
| `best_price_cents` | int \| null | 最优价(分) |
|
||
| `saved_amount_cents` | int \| null | 省下(分,可 0/负) |
|
||
| `is_source_best` | bool \| null | 源平台是否最便宜(= 没省到) |
|
||
| `store_name` | string \| null | 店铺名 |
|
||
| `total_dish_count` | int \| null | 菜品总数 |
|
||
| `skipped_dish_count` | int \| null | 跳过菜品数 |
|
||
| `status` | string | `success` / `failed` |
|
||
| `information` | string \| null | done 帧文案。成功:"在美团找到同店,到手价 ¥X…";失败:具体原因(如"美团、京东外卖均未找到该商品"),前端在 `status=failed` 时当原因展示 |
|
||
| `items` | object[] | 下单菜品 `{name, qty, specs?}` |
|
||
| `comparison_results` | object[] | 逐平台对比(price 单位元,已按 rank 升序) |
|
||
| `skipped_dish_names` | string[] | 被跳过的菜名 |
|
||
| `created_at` | datetime | 时间 |
|
||
|
||
## 错误
|
||
- `401` 未鉴权
|
||
|
||
## 说明
|
||
只返回当前登录用户自己的记录。需要单条全量(含 `raw_payload`)走 [详情接口](./compare-record-detail.md)。
|