山东高考 CEE 录取数据整理——大绿本招生计划匹配近三年线差。Use when the user provides 山东高考 admission xlsx and wants them matched into a unified table with 线差+标准差+结构化日志列. Annual reuse; auto-asks 一段线/scope.
Resources
14Install
npx skillscat add chhsiching/shandong-cee-line-diff Install via the SkillsCat registry.
山东省高考录取数据匹配整理(年度复用,v5)
单一真相源:完整设计见 spec/plan(
docs/superpowers/specs/+plans/)。
管线阶段/审计检查项/故障排查的详细参考:REFERENCE.md(各 Step 内联指针指向具体章节)。
本 skill 是年度执行的浓缩;与 spec/plan 冲突时以 spec/plan 为准。
自主启动流程(收到文件后按此执行)
收到山东省高考数据 xlsx(或提及 大绿本/近三年线差/提前批录取/CEE)时,按以下 7 步自主执行。每步有完成判据;不确定的用 AskUserQuestion 问,不静默停。
Step 1:识别三源 + 验证列布局
- 读
data/(或用户指定路径)下 xlsx,按内容识别:大绿本(含「批次/学校代码/代号/名称」)、近三年线差统计(含「batch/schoolcode/统计线差」)、提前批录取数据(含「批次名称/录取低分」)。 - 验证列布局:读各表 header,用下方「常量速查」的列索引确认一致。若列变 → 更新
constants.py+ 告知用户。 - 完成判据:三源识别完毕 + 列布局匹配 constants(或已更新并验证)。
Step 2:确认参数(智能询问——只在缺失时问)
先检查调用 prompt 提供了什么:文件路径?年份?一段线?范围?已知改名?
已提供的直接用,只问缺失的。 能从数据推断的(如年份从文件内容)不问。
- 一段线:调用 prompt 说了就用;没说 → 从近三年「说明」sheet 读取(如有);都没有 → AskUserQuestion 问。
- 范围:默认「仅提前批+常规批一段、仅本科」——除非调用 prompt 另说。
- 已知改名校:调用 prompt 提了就记录;没提也行(改名检测 agent 会网查)。
- 完成判据:一段线已确认(提供 / 读取 / 问到)+
constants.ONE_LINE已更新。
Step 3:更新常量 + 基线
- 更新
constants.ONE_LINE+tests/baseline_hashes.py(三源 SHA256)。 - 完成判据:ONE_LINE + baseline_hashes 反映当年数据。
Step 4:跑确定性管线
.venv/bin/python -m scripts.run_pipeline(Stage0→1→1.5→3,不调 agent)。各 Stage 的详细参数(归一化函数/严格键/粗筛键/Stage2 契约/复核 demote/边界公式)见
REFERENCE.md「管线阶段」——出问题时查阅。- 完成判据:管线跑通,主表+边界表产出,agent prompt 已生成待派发。
Step 5:派发 agent(harness 侧)
semantic-match/RUN.md:Stage2 语义匹配 agent。semantic-match/RUN_VERIFY.md:判断型二次复核(precision-first:粗筛+语义全部须复核)。research/RUN_RENAME.md:改名检测 + WebSearch 网查。- 完成判据:三套 agent result jsonl 齐全。
Step 6:回填 + 审计硬门
.venv/bin/python -m scripts.run_pipeline --with-agent-results(回填最终主表+边界表)。.venv/bin/python -m scripts.audit_output→ exit 0 才算完成。审计 5 项检查的详细判据见
REFERENCE.md「数据质量审计硬门」——audit FAIL 时查阅定位。故障排查表也在 REFERENCE.md。- 完成判据:audit exit 0。
Step 7:产出报告
- 生成
output/数据整理报告.md(markdown,讲清表格关系/作用/口径/阶段分布/列说明,基于真实当年数字)。 - 完成判据:报告文档产出 + audit exit 0 +
.venv/bin/python -m pytest全绿 +ruff check无错。
铁律
- 三源 xlsx 字节级只读:读取前后 SHA256 校验。
- 范围:仅 提前批 + 常规批一段、仅本科;专科全排除(小标题含「专科」即弃)。
- 一段线:每年不同(
constants.ONE_LINE,Step 2 确认)。 - 输出不覆盖大绿本原列:行尾追加 7 列(J/T + 匹配阶段/单年数据/选科漂移/复核结果/原因备注)。原 12 + 7 = 19 列。
- precision-first:只有严格精确构造的匹配算「确定」;所有判断型匹配(粗筛+语义)必须经二次 agent 复核。verdict=确定 留主表;verdict=存疑 → 下放特殊表。主表零错配是完成硬门。
- 精度 2 位:新算的值舍入 2 位;matched 保留源值。
- T 策略:单年历史 T 留空+日志「(单年数据,无标准差)」;新增估算 J 与 T 同时给(同校同选科均值,T 排除 None)。
- 审计硬门:完成前必跑
python -m scripts.audit_output,exit 0 才算完成(pytest 全绿 ≠ 产出正确)。
常量速查(Step 1 验证列布局用)
- 一段线:
{2023:443, 2024:444, 2025:441}(constants.ONE_LINE)。 - 近三年列(0-based):批次=0 / 校名=2 / 专业=3 / 选科=4 / 统计线差 J=9 / 标准差 T=19。
- 提前批低分列:2025=10 / 2024=14 / 2023=18。
- 大绿本批次:
4.常规批/1.提前批A类/2.提前批B类/3.提前批—飞行技术(军队)。 - 专科关键词:「专科」(小标题含即排除)。
匹配规则(核心领域知识——理解专业名匹配的全部依据)
什么使同名专业是「不同专业」(六要素差异化,必须对齐)
- 专业方向/描述(如
量化投资、含电力储能方向)——核心名同但方向不同 = 不同专业。
教学样例:投资学(量化投资)≠投资学——两个不同专业、不同分数线,不能混配。 - 性别(男/女)——分性别招生、不同分数线。完全同名但不同性别 = 两个独立专业,分开匹配。
- 校外合作(中外合作办学 / 校企合作 / 合作国别)——不同合作轨道 = 不同专业。
- 独立校区(如
东北大学秦皇岛分校≠东北大学)——不同校区 = 不同专业。 - 招生类别(普通计划 / 中外合作 / 地方专项 / 走读 / 边防预科…)——不同招生轨道 = 不同专业。
近三年拼进校名,大绿本在小标题(B)列——须剥校名后缀对齐。 - 核心名本身(去括号后的基础专业名)——核心名不同 = 不同专业。
什么不影响「是否同一专业」(忽略类,剥除后匹配)
身高 / 体重 / 色盲 / 色弱 / 视力 / 体检标准 / 合格 / 语种 / 单科成绩 / 年龄 / 特殊类型招生控制线
性别是唯一例外——不能忽略。
关键洞察
- 大绿本 2026 专业名远比近三年详细(子专业清单/校区/培养描述/国际交流长文)→ 核心名+差异化括号对齐即可匹配,多余描述性长文不影响。
- 核心名唯一也可能错配方向(投资学反例)→ 判断型匹配须二次复核(precision-first)。
- 选科政策漂移(37.5% 近三年跨年多值)→ 选科不作为差异化项。
输出(output/)
| 文件 | 内容 |
|---|---|
大绿本_附线差_分层版.xlsx |
原表全行 + 行尾 7 列(J/T + 5 结构列);专科行标注「专科(超范围)」 |
大绿本_附线差_扁平版.xlsx |
仅本科专业行 + 行尾 7 结构列 |
新增专业.xlsx |
估算值 / 退化级别 / 样本量 / 日志 |
被删旧专业.xlsx |
近三年 J/T + 日志 |
特殊情况.xlsx |
飞行不成 / 剩余无法匹配 / 复核存疑 |
学校改名表.xlsx |
新校名 / 候选旧校名 / 置信度 / 专业数 / 备注 / 人工已核验 |
新增校表.xlsx |
未配对的大绿本独有校 |
停招消失校表.xlsx |
未配对的历史独有校 |
分层版与扁平版同源:同一 MatchResult 列表,同专业行 7 列行尾逐行相等(审计检查④验证)。
主表 5 结构化列(便于筛选):匹配阶段 / 单年数据(是/空) / 选科漂移(是/空) / 复核结果(确定/空) / 原因备注(自由文本)。flag 列「是」即满足、「非空」即可筛。边界表保留原单一日志列。
完成判据(每项必过)
- 8 张表齐全;pytest 全绿(≥80%) + ruff clean。
- 审计 exit 0(主表零错配 / 0空匹配阶段 / 0空行 / J-T一致)。
- 三源 SHA256 不变;100% 归类;精度 ≤2 位;报告文档已生成。