b995ee8ada
排序策略 (app/core/ranking.py 新建): - parse_sale_volume: "热销8.5万+" → 85000 整数销量 - get_distance_km: 距离统一(到店米 ÷1000), >50km 视为脏数据 - filter_items: 售价≤0 / 距离>8km / 脏数据剔除 - sort_by_sales: 按销量降序 - split_pages + shuffle_pages: 切页 + 页内 Fisher-Yates 打乱 - inject_billboard: 榜单商品 4 条/页注入前 5 页, 随机位置 - merge_category_pages: 外卖第K页 + 到店第K页合并后 shuffle Feed 接口重写 (app/api/v1/meituan.py): - 旧逻辑: 三页固定 listTopiId 主题轮, 美团给什么序就什么序 - 新逻辑: searchText="外卖"/"到店餐饮" + sortField=6 翻页 LBS 召回, 4 任务并发(外卖召回 / 到店召回 / 外卖榜单 / 到店榜单), 走完 ranking pipeline 后做坐标级内存缓存(5min TTL) - 翻页上限 5 页/品类(性价比最高: 3.4s 拿到 238 条/品类) - 直接调 _call 而非 query_coupon, 因为 searchId 翻页时不能传 pageNo 标签格式化 (app/schemas/meituan.py): - price_label: "比日常团购省3.5元" → "比团购省 3.5 元" - rank_label: "2小时北京外卖销量榜第1名" → "外卖榜第 1" - rating_label: "4.6分" → "点评 4.6 分" Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>