fix(comparison): 比价 best 无 is_best 时兜底回落「含源最低价」 #201

Merged
guke merged 3 commits from fix/comparison-best-fallback-no-isbest into main 2026-07-30 11:00:36 +08:00

3 Commits

Author SHA1 Message Date
guke 88607d17fd Merge branch 'main' of https://gitea.shaguabijia.com/WonderableAI/shaguabijia-app-server into fix/comparison-best-fallback-no-isbest 2026-07-30 10:54:44 +08:00
guke e6dcad7c7d fix(comparison): best 兜底候选含源,源最便宜时回落源避免负省额
无 is_best 兜底原本排除源、强选最低目标;当源本身最便宜时(全平台
dish-diff 相似替换),会误选更贵目标 → saved 变负,倒扣 get_stats 的
「累计发现可省」(该聚合按 status=success 求和、不带 >0 过滤)。

改为在含源的有价行里取最低价,与老派生函数 _derive「全目标缺菜回落源、
不虚报省」同一语义:源最便宜 → best=源、saved=0、is_source_best=True。
补回归测试:源最便宜场景(旧逻辑 best 误选更贵目标、saved 为负)。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-30 10:52:33 +08:00
guke c61eab610b fix(comparison): 派生 best 无 is_best 时兜底取有价目标最低价
#195 改为只认 pricebot platforms.is_best 后, 全平台 has_dish_diff
(相似替换/仅供参考) pricebot 一个 is_best 都不标时, best_*/saved 整条落
NULL → 首页价 ¥0.0 / 记录页无最低红框 / 省额丢失 (线上占 success ~33%)。

_derive_from_platforms 增兜底: 无 is_best 但有有价目标时取最低价当参考 best,
不再让派生列静默 NULL; 复用 platforms 单源, 不引入 comparison_results 双源。

TDD: 新增 test_harvest_done_platforms_no_isbest_falls_back_to_cheapest_target
(id 3304 型), 先复现 best_platform_id=None 再修绿。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-30 09:21:52 +08:00