xiaowei-system/skills/devops/devops-umbrella/references/gaokao-site/recommend-engine-notes.md

2.1 KiB
Raw Blame History

推荐引擎调试笔记

rows_dict 同校多计划类型去重 Bug (2026-06-21)

问题

推荐算法 _calc_prob_data() 中,schools 表数据通过 rows_dict[r[0]] = r 按学校名去重。当同一学校有多个计划类型时(如 鹤壁职业技术学院:普通类 222分/较高收费专业 185分只有最后一条被保留。

对于 2025 年数据ORDER BY min_score DESC最高分被保留 对于 2024 年回退数据:if r[0] not in rows_dict 检查,最先出现的被保留(最高分)

影响:低分考生看不到较高收费专业入口,高分考生只能看到较高收费专业入口。

修复

改前rows_dict[r[0]] = r(按 school_name 去重) 改后rows_dict[(r[0], r[5])] = r(按 (school_name, plan_type) 去重)

改了 3 处:

  1. rows_dict[(r[0], r[5])] = r — 2025 年数据
  2. if (r[0], r[5]) not in rows_dict: — 2024 回退检查
  3. rows_dict[(r[0], r[5])] = r — 2024 回退赋值

下游 with_entry_points() 已正确处理多计划类型 → 按学校名分组,取距考生分数最近的入口。

测试验证

190分 物理类 河南 → 鹤壁职业技术学院 较高收费专业 (185) 出现在保底 ✅
250分 → 鹤壁职业技术学院不在保底rank_diff < 30000正常行为✅
320分 → 鹤壁职业技术学院出现在深保(但可能在 top(6) 后被截断)✅

bao_deep 30000 位次差条件

深保bao_deep要求

  • gap < -15专科批或 gap < -30本科批
  • (school_rank - student_rank) >= 30000

当使用 2024 年回退数据时2024 年的位次与 2025 年考生位次直接比较,可能因年份差异导致偏差。此条件设计用于防止推荐位次差距过小的保底学校,当前逻辑合理,无需修改。

front-end min score validation (2026-06-21)

plan.html 第 245 行和 384 行硬编码了 min="200"score < 200。改到 160 覆盖专科线以下考生。

修复位置:

  • plan.html:245: min="200"min="160"
  • plan.html:384: score < 200score < 160