feat(savings): 省钱战绩卡比价口径 + 关停 savings demo 兜底

- 新增 GET /api/v1/compare/stats(comparison_record: status=success 计数 + saved_amount_cents 求和),供「我的」页省钱战绩卡比价口径(完成比价 + 累计发现可省),不要求下单
- savings.py 停用 demo seeder(ensure_seeded 等移除),只计真实 source='compare';简化 beat_percent 为 compare-only
- 测试: compare/stats 用例 + savings/welfare 改纯真实语义
- 文档: 新增 compare-stats.md;更新 savings-battle.md / savings_record.md / comparison_record.md / API README

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
OuYingJun1024
2026-06-07 20:36:44 +08:00
parent c9578f5ba2
commit 4faf0b8e16
12 changed files with 176 additions and 129 deletions
+25
View File
@@ -0,0 +1,25 @@
# GET /api/v1/compare/stats — 比价口径战绩(「我的」页省钱战绩卡)
> 所属:比价记录组(前缀 `/api/v1/compare` | 鉴权:Bearer | [← 返回 API 索引](./README.md)
## 入参
无(用户由 token 确定)。
## 出参
响应 `200`:`CompareStatsOut`
| 字段 | 类型 | 说明 |
|---|---|---|
| `compare_count` | int | 累计完成比价次数(`comparison_record``status='success'` 的记录数) |
| `discovered_saved_cents` | int | 累计发现可省额(分;各成功比价 `saved_amount_cents`=源价−最低价 之和,null 不计) |
## 说明
「我的」页**省钱战绩卡**的数据源(**比价口径**):
- 卡主额「累计发现可省 ¥X」← `discovered_saved_cents`
- 卡三列之「完成比价(次)」← `compare_count`
- 卡「未比价锁定态」判据:`compare_count == 0`(没比过价 → 盖锁定蒙层,引导「立即开始」去首页比价)
> ⚠️ **与下单口径解耦**:本接口只看「比过价」(`comparison_record`)**不要求下单**。区别于 `savings_record`(下单成交记账,见 [savings-summary](./savings-summary.md) / [savings-records](./savings-records.md))——那是订单记录/省钱明细的源。两表互不喂数据。
> 卡另两项数据源:「赚取金币」← `GET /wallet/account.total_coin_earned`;「领取优惠券」后端暂无累计字段(前端先占位)。