Files
gaokao-volunteer-system/docs/MAJOR_DATA_SOURCE_OF_TRUTH.md
Hermes Agent 246f21c7f2
Some checks failed
CI / pytest (Python 3.10) (push) Has been cancelled
CI / pytest (Python 3.11) (push) Has been cancelled
CI / pytest (Python 3.12) (push) Has been cancelled
feat(review): land unified remediation and rules evidence closure
2026-06-18 10:21:38 +08:00

6.1 KiB
Raw Blame History

MAJOR_DATA_SOURCE_OF_TRUTH

最后更新: 2026-06-18 真相源: 本文件是"专业目录"维度的入口索引。 审计上下文: docs/PROJECT_PLANNING_REALIGNMENT_2026-06-16.md §2.3-2.4 设计上下文: docs/DESIGN_RULES_TRUSTED_CLI_2026-06-16.md §4 执行上下文: docs/ACTIVE_EXECUTION_BOARD_2026-06-17.md §1.2-§1.4


1. 范围

本文件收敛以下两类信息:

  • 教育部本科专业目录(国家级)
  • 高校招生专业目录(校级)

2. 当前真相源路径

类别 路径 格式 写入方式
国家级专业目录 data/majors_catalog/national/<year>.json JSON 半自动抓取 + 人工校对
国家级当前 data/majors_catalog/national/latest.json JSON 当前先用同内容副本锁定
校级招生专业 data/majors_catalog/schools/<year>/<school_code>.json JSON 人工为主,来源高校招生章程
元数据 data/majors_catalog/METADATA.md Markdown 人工维护
已撤销/新设清单 data/majors_catalog/changes/2024-2026.md Markdown 人工维护

2.1 当前已落地范围2026-06-18

执行 Phase 2 Batch 1/2/3 后,P2-3 已形成当前最小可信闭环:

  • 已落地 data/majors_catalog/ 包与 national loader/CLIBatch 1
  • 已落地 national/2024.json + national/latest.json13 个 curated subset, coverage_mode=mvp_subsetBatch 1
  • 已新增 schools/2026/10001.json 校级招生目录样本,并显式带 version / national_major_code / mapping_statusBatch 2 + P2-3
  • 已新增 changes/2024-2026.md作为版本化更新策略与风险标签解释入口P2-3
  • loader / CLI 已显式暴露 risk_tagsversion_strategymapped_offering_countunmapped_offering_countP2-3
  • 已落地 major_validation 接入 audit_engineBatch 3
  • 已新增 CLI 子命令:
    • gaokao-cli majors {status,lookup,verify,changes}Batch 1
    • gaokao-cli majors {school-status,school-verify --year}Batch 2
    • gaokao-cli audit run --province --plan --truth-root --catalog-root --json 命中 MAJORS.not_found / MAJORS.non_activeBatch 3
  • school-verify 当前会把“仅隐式 code 命中、未显式声明 national_major_code”视为映射缺口而不是默许通过P2-3

2.2 尚未落地

  • 更多学校 schools/<year>/ 批量目录(仅 1 所样本)
  • 国家层第二批扩面(>13 个专业)
  • 国家层 2026 版(当前是 2024 版快照)

3. 两层数据模型

3.1 国家级(NationalMajor)

NationalMajor:
  code: str                     # 教育部专业代码, e.g. "120201K"
  name: str                     # 官方名称, e.g. "工商管理"
  discipline: str               # 学科门类
  category: str                 # 专业类
  degree: str                   # 授予学位
  is_directional: bool          # 国家控制布点专业
  status: "active" | "renamed" | "merged" | "deprecated"
  year_added: int
  year_removed: int | None
  notes: str | None
  source_url: str
  last_verified_at: str          # ISO 日期
  risk_tags: list[str]          # e.g. non_active / removed_in_last_2y

3.2 校级(SchoolMajorOffering)

SchoolMajorOffering:
  school_code: str
  school_name: str
  major_code: str
  major_name: str
  national_major_code: str | None
  admission_year: int
  province: str
  duration_years: int
  tuition_cny: int | None
  study_mode: str
  is_new: bool
  is_discontinued: bool
  mapping_status: "exact" | "mapped_alias" | "implicit_code_match" | "unmapped"
  risk_tags: list[str]          # e.g. missing_explicit_mapping / school_new_in_last_2y
  source: str
  last_verified_at: str         # ISO 日期

当前落地情况:校级目录仍只有 schools/2026/10001.json 1 所样本,但该样本已满足版本化与映射显式化契约。

3.3 版本化更新与映射策略

  • 国家目录必须同时维护 national/<year>.jsonnational/latest.json
  • 校级目录必须使用 schools/<year>/<school_code>.json,且每个文件显式带 version
  • 跨年变更统一登记到 changes/2024-2026.md
  • 校级专业必须显式声明 national_major_code;仅靠 major_code 隐式命中不算“可信映射”
  • majors verify / majors school-verify 必须输出 version_strategy,不能把版本策略只留在文档中

4. 接入策略

4.1 国家级

  • 首选源: 教育部 2024 年《普通高等学校本科专业目录》
  • 兜底源: 阳光高考/学位中心
  • 抓取方式: 不自动爬取,使用人工收录 + 摘录
  • 校验: python3 scripts/gaokao-cli majors verify --json

4.2 校级

  • 首选源: 各高校 2025/2026 招生章程
  • 覆盖范围: 首批 5-10 所重点高校
  • 接入节奏: 每所高校每年一次,5 月前完成
  • 校验: python3 scripts/gaokao-cli majors school-verify --year <year> --json
  • 映射要求: 每条 offering 必须显式带 national_major_code 与可解释的 mapping_status

5. 审计引擎集成

AuditEngine.audit_plan 新增 major_validation 一步:

  • 命中 MAJORS.not_found(专业未在国家级目录中找到)
  • 命中 MAJORS.non_active(专业已撤销/合并/改名)

详细见 tests/test_audit_engine_major_validation_phase2.py


6. 下一阶段(当前最小可信闭环后的扩面清单)

已在 Batch 1/2/3 中完成的事项不再列入"必须收口"清单。

  • 国家层扩面(>13 个专业)— Batch 4 候选
  • 校级扩面(>1 所学校)— Batch 4 候选
  • 国家层 2026 版快照(当前为 2024 版)— Batch 4 候选

7. 风险

  • 国家级目录与校级目录语义混淆
  • 教育部新设专业不进入旧目录(2024 之后新设)
  • 跨年招生章程口径不一致
  • 当前 13 个 curated subset 不应被误读为完整教育部目录