a753843804
把 main 的实时 feed 换成离线库版本 + status 降级兜底: - rec 智能推荐:改走离线库 meituan_coupon 筛佣金≥3%(SQL 去重+排序+分页),不再实时撞限流 - distance 距离最近:改实时搜索翻页(sortField=6),按用户真实位置由近及远排 - top_sales 销量最高:改 SQL DISTINCT ON 分页,修原全表拉取+全量解析的翻页卡顿 - 四路加 status(ok/empty/degraded):空库/上游失败均返 200 不再 5xx;/coupons 502 软化为降级 - FeedResponse/CouponListResponse 加 status 字段(默认 ok,向后兼容) 注意:替换 main #18 的实时 feed 实现,需 review 行为变更;依赖的离线库由 ETL 灌(见 meituan-etl PR) --------- Co-authored-by: chenshuobo <1119780489@qq.com> Reviewed-on: #40
1.4 KiB
1.4 KiB
POST /api/v1/meituan/top-sales — 销量最高(离线库)
所属:美团 CPS 组(前缀
/api/v1/meituan,全部无鉴权) | 鉴权:无 | ← 返回 API 索引数据来自离线库 database/meituan_coupon;不实时打美团(美团搜索对销量排序支持差、且有 402 限流)。
入参
| 字段 | 类型 | 必填 | 默认 | 说明 |
|---|---|---|---|---|
page |
int | ❌ | 1 | ≥1 |
page_size |
int | ❌ | 20 | 1–50 |
platform |
int | null | ❌ | null | 1 只外卖 / 2 只到店 / 不填=全部(全城销量) |
出参
响应 200:{ items: CouponCard[], has_next: bool, search_id: null, status: "ok"|"empty"|"degraded" }。CouponCard 见 API 索引;status 语义见 feed 接口。
说明
- 从
meituan_coupon取sale_volume_num非空的券,DISTINCT ON(dedup_key)跨源去重(每个「品牌|名|价」只留销量最高一条,同销量再按佣金),按销量降序分页;每页只对当前 ~20 条做from_raw解析(翻页快,不全表拉取)。 - 不依赖 MT 凭证(纯库查询)。库为空(prod 刚部署 / ETL 未跑完)→
status=empty;库查询异常 →status=degraded。均返200、不抛 5xx。 - 仅 PostgreSQL(
DISTINCT ON为 PG 专用)。
错误码
无业务级错误码:库空 / 异常都返 200 + 空 items + 对应 status。