feat(meituan-cps): 经纬度→城市离线反查 + rec/销量最高按城市过滤 #116

Merged
marco merged 2 commits from feat/meituan-cps-city-geo into main 2026-07-05 09:31:55 +08:00
Member

主要功能

新增离线「经纬度 → 美团 cityId」反查,让 rec(智能推荐)与 top-sales(销量最高)从离线库只返同城券(此前会混返异地券)。

  • app/utils/geo.py + app/utils/meituan_city.py:坐标 → 美团 city_id(reverse_geocoder 离线反查,零网络)。
  • feed?tab=rec / /top-sales:按 city_id 过滤;解析不出 / 老客户端不带坐标 → 降级返空。
  • top-salesrec 一致置空库内距离(相对城市默认点、对用户无意义)。
## 主要功能 新增离线「经纬度 → 美团 cityId」反查,让 `rec`(智能推荐)与 `top-sales`(销量最高)从离线库只返**同城券**(此前会混返异地券)。 - `app/utils/geo.py` + `app/utils/meituan_city.py`:坐标 → 美团 `city_id`(reverse_geocoder 离线反查,零网络)。 - `feed?tab=rec` / `/top-sales`:按 `city_id` 过滤;解析不出 / 老客户端不带坐标 → 降级返空。 - `top-sales` 与 `rec` 一致置空库内距离(相对城市默认点、对用户无意义)。
guke added 2 commits 2026-07-04 16:22:00 +08:00
- app/utils/geo.py: reverse_geocoder 单例(mode=1 单进程 KDTree),经纬度→最近聚居点
- app/utils/meituan_city.py: 坐标→美团 city_id(省份/城市名桥接 + 多级兜底 + lru_cache 量化)
- feed(rec) / top-sales: 按解析出的 city_id 过滤离线库;城市解析不出 / 老客户端不带坐标 → degraded
- top-sales 与 rec 一致置空库内距离(相对城市默认点,对用户无意义)
- main.py 启动预热 KDTree;pyproject 加 reverse_geocoder 依赖 + 分发 city_dict.txt
- 新增 geo / meituan_city 测试(56 例);scripts/load_meituan_coupon_tsv.py 灌样本到本地 SQLite
- .gitignore 忽略样本 TSV 与 .claude 本地设置

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
给指定用户灌一批真实感外卖比价记录,填充首页「上次比价」横幅 / 比价记录页 / 省钱战绩卡。
trace_id 固定幂等,重跑覆盖同号;第 1 条落在 4 分钟新鲜窗口,其余铺近 7 天。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
marco merged commit 7b6756f936 into main 2026-07-05 09:31:55 +08:00
Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: WonderableAI/shaguabijia-app-server#116