# Tencent Yuanbao Gaokao Score To Rank Lookup

> 高考一分一段信息检索助手，帮助考生根据分数查询全省排名位次，或根据位次估算对应分数区间，或提供一分一段表。

- Skill: `ahang1598/tencent-yuanbao-gaokao-score-to-rank-lookup` (Agent Skill, multi-file: 5 files)
- Install (CLI): `npx skillmds@latest add ahang1598/tencent-yuanbao-gaokao-score-to-rank-lookup`
- Raw SKILL.md: https://api.skillmd.com/api/skills/ahang1598/tencent-yuanbao-gaokao-score-to-rank-lookup/raw
- Safety review: pending (external: skill-scanner PASS, skillspector PASS)
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: ahang1598 (https://skillmd.com/u/ahang1598)
- Updated: 2026-09-09
- Page: https://skillmd.com/skills/ahang1598/tencent-yuanbao-gaokao-score-to-rank-lookup

---


## 核心原则

根据用户的问题，依次提取以下五类信息：
**地区（place）、年份（year）、选科（classify）、分数（score）、省排名（rank）**

回答必须严格遵循脚本返回字段，不得使用模型记忆、历史回答或外部网络资料补写分数、同分人数、累计位次等信息。同一地区、年份、选科、分数/位次条件一致时，重复回答必须保持与脚本返回数据一致。

用户侧表达要面向高考生和家长，避免"优先级、P0/P1/P2、阻断、闸门"等内部术语，也不得使用评价性、标签化措辞。

---

## Step 0：时间锚点自检（调用脚本前必走）

高考是按年举行、有明确时间窗口的全国性考试，所有一分一段表都依赖官方放榜才会发布。时间锚点用于避免查询未来或明显未完成考试的数据，**不得替代结构化接口的实际返回**。进入 6 月下旬发布窗口后，不要仅凭日期或旧经验判断"尚未公布"。

### 0.1 关键时间节点

- **高考笔试**：每年 **6 月 7 日 ~ 6 月 9 日**（部分新高考省份考至 6 月 10 日）
- **成绩公布**：通常 6 月 23-26 日前后（各省略有差异，可能提前或错峰）
- **一分一段表发布**：紧随成绩公布，**通常成绩公布当日或次日**
- **脚本年份策略**：`fetch_data.py` 不再硬编码最新数据年份；显式传入的年份会按原值查询，未传年份时会按当前日期动态尝试最新候选年份

### 0.2 自检流程

1. 确认运行时当前日期（年-月-日）
2. 确认用户问的"目标年份"
3. 按下表处理：

| 情形 | 处理 |
|------|------|
| 目标年份 > 当前年份 | **不调用脚本**，明确告知"该年份高考尚未举行，无任何一分一段/位次数据" |
| 目标年份 = 当前年份，6 月 9 日前 | 不以目标年份调用脚本；如需参考，可查最近一年已返回数据并显式标注年份 |
| 目标年份 = 当前年份，6 月 9 日后且进入 6 月下旬发布窗口 | **调用脚本查询目标年份**，以脚本返回为准；不得仅凭时间锚点断言"尚未公布" |
| 脚本返回目标年份数据 | 正常回答 |
| 脚本未返回目标年份数据 | 说明"当前结构化数据源未返回该年份一分一段/位次数据"，不要替官方断言"尚未公布"；可按需提供最近一年已返回数据作参考 |
| 目标年份 < 当前年份 | 正常调用脚本 |

### 0.3 脚本年份提示

`fetch_data.py` 会优先查询用户显式传入的年份，不再把大于固定上限的年份截断为旧年份。回复必须以脚本返回的"年份"字段为准；若返回年份与用户目标年份不一致或为空，只能说明当前数据源的返回情况，不得把旧年份数据标成新年份。


---

## Step 1：提取地区（place）
读取 `./ref/place.json` 中的地区列表，将用户 query 中提及的地区与列表进行匹配。

**匹配规则：**
- 支持别称/简称（如"魔都"→ 上海、"首都"→ 北京、"闽南"→ 福建、"桂"→ 广西）
- 支持容错匹配（如存在错别字或非标准表述，尽量推断正确地区）
- 支持城市到省份的映射（如"福州"->"福建"、"深圳"->"广东"）
- 如果用户提及了多个省份，则**每个省份之间使用空格隔开**，如"北京 上海 广东"
- 如果用户想查询所有省份（如"各省"、"各地区"），则返回 "place" : "全省"
- 以列表中的标准名称作为最终输出值

**若无法从 用户query 中识别地区，则询问用户:"您想查询哪个省份的信息呢？"。**

---

## Step 2：提取年份（year）
- 若用户明确提及年份（具体的数字），直接提取年份
- 若用户提及的是模糊年份，如"今年""去年""近三年"，必须按运行时当前日期动态换算为具体年份；例如"今年"=当前日期所在年份，"去年"=当前日期所在年份减 1。不得在说明中写死固定年份。
- 若用户未提及年份，则不返回 "year" 字段
- 年份必须是四位数字，如 "25年"->"2025"
- 若用户提及了多个年份，则**每个年份之间使用空格隔开**，如"2025 2026"
- **年份必须先与 Step 0 的时间锚点自检结果联动**：未来年份和 6 月 9 日前的当前年份不得直接查询；进入 6 月下旬发布窗口后，应将目标年份传给脚本验证，按脚本实际返回判断。

---

## Step 3：提取选科（classify）
读取 `./ref/classify.json` 中的选科列表，将用户 query 中提及的选科与列表进行匹配。

**核心难点：新老高考政策差异**
中国各省份在不同年份实行的高考政策不同（分为：传统文理科、3+3新高考、3+1+2新高考），选科名称会随之变化。你必须结合 Step 1 的【地区】和 Step 2 的【年份】进行动态匹配与转换。

下表列出各省份切换新高考的年份，**切换年份之前为传统文理科模式**：

| 模式 | 省份 | 启用年份 |
|------|------|----------|
| 3+3 | 上海、浙江 | 2017 |
| 3+3 | 北京、天津、山东、海南 | 2020 |
| 3+1+2 | 河北、辽宁、江苏、福建、湖北、湖南、广东、重庆 | 2021 |
| 3+1+2 | 甘肃、吉林、黑龙江、安徽、江西、贵州、广西 | 2024 |
| 3+1+2 | 山西、内蒙古、河南、四川、云南、陕西、青海、宁夏 | 2025 |

内蒙古蒙授生（蒙授文科/蒙授理科）不受以上规则约束，始终保持独立分类。

**匹配与自动纠错规则：**
1. **传统高考模式**：
   - 标准选科为：**文科 理科**
   - 映射：用户提及"文史类"→ 文科；"理工类"→ 理科
2. **3+3 新高考模式**：
   - 标准选科为：**综合**（不分文理）
   - 纠错：若用户提及"文科/理科/物理/历史"，自动映射为：**综合**
3. **3+1+2 新高考模式**：
   - 标准选科为：**物理 历史**
   - 纠错：若用户提及"理科/理工"，自动映射为：**物理**；提及"文科/文史"，自动映射为：**历史**

**若用户未提及选科，则不返回 "classify" 字段**

---

## Step 4：提取分数（score）
若用户明确说分数（如"考了 600 分"、"分数是 580"、"600 分能排第几"、"我考了 600"），则返回 "score" 字段。
- score 必须是数字，如"考了 600 分"->"600"
- 若无法提取到数字信息，则禁止 "score" 字段

---

## Step 5：提取省排名（rank）
若用户明确说位次/排名（如"位次 1000"、" 400 名"、"省排 500 名"、"排名第 2000"、"我排在第 1000 位"），则返回 "rank" 字段。
- 注意中文数字需转成整数，如"5万名"->"50000"
- rank 必须是数字，如"排名第 1000 位"->"1000"
- 若无法提取到数字信息，则禁止 "rank" 字段

---

## Step 6：调用脚本查询数据（db_info）
确认地区、年份、选科后，调用以下脚本获取真实数据：
**注意，若用户未提及分数或排名，也必须调用脚本获取数据。**
**禁止直接访问API获取完整数据，必须通过脚本获取数据。**
**脚本路径：** `./fetch_data.py`
**调用方式：**
```bash
python ./fetch_data.py --place {place...} --year {year...} --classify {classify...} --score {score...} --rank {rank...}
```

Windows 环境如 `python` 未绑定到 Python 3，可使用 `py -3` 替代；Agent 执行时优先使用当前可用的 Python 解释器。

---
## Step 7：根据脚本查询到的数据判断是否符合考生的意图
- 根据"选科"信息，保留符合query意图的数据。

## Step 8：总结
结合上述内容，对用户的问题进行回答。
注意需要简明扼要，只复述脚本返回的年份、地区、选科、分数、同分人数、累计位次等字段；不要延伸到录取预测或院校评价。

**强制年份标注**：
1. 回复开头必须显式写明"这是 {脚本返回的年份} 年 {地区} {选科} 一分一段数据"（如"这是 2026 年湖南物理类一分一段数据"）。
2. 当用户问的年份与脚本实际返回的年份不一致或脚本返回为空时，**必须**说明："当前结构化数据源未返回 {用户年份} 年数据"；如提供其他年份数据，必须写明"以下为 {脚本实际年份} 年数据，仅供参考"。
3. 严禁在回复中出现"2026 年福建物理类 600 分对应位次是 XXX"这种把旧年份数据当新年份输出的句子（除非脚本确实返回了该年份）。

## Step 9：反问排名/分数【非必要】
**如果用户没有提及分数/排名**，需要结合用户已有的信息（地区（place）、年份（year）、选科（classify））反问用户分数/排名。如"请问您的分数或者省排名是多少呢？我来帮您查询对应的分数/排名～"
然后再使用Step 4～8的步骤进行回答。

