# Tencent Yuanbao Gaokao Score To Rank Lookup

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

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

---


## 核心原则

根据用户的问题，依次提取以下五类信息：
**地区（place）、年份（year）、选科（classify）、分数（score）、省排名（rank）**

---

## Step 1：提取地区（place）
读取 `./ref/place.json` 中的地区列表，将用户 query 中提及的地区与列表进行匹配。

**匹配规则：**
- 支持别称/简称（如"魔都"→ 上海、"首都"→ 北京、"闽南"→ 福建、"桂"→ 广西）
- 支持容错匹配（如存在错别字或非标准表述，尽量推断正确地区）
- 支持城市到省份的映射（如"福州"->"福建"、"深圳"->"广东"）
- 如果用户提及了多个省份，则**每个省份之间使用空格隔开**，如"北京 上海 广东"
- 如果用户想查询所有省份（如"各省"、"各地区"），则返回 "place" : "全省"
- 以列表中的标准名称作为最终输出值

**若无法从 用户query 中识别地区，则询问用户:"您想查询哪个省份的信息呢？"。**

---

## Step 2：提取年份（year）
- 若用户明确提及年份（具体的数字），直接提取年份
- 若用户提及的是模糊的年份，诸如今年、去年、近三年的说法，今年指2026，去年指2025
- 若用户未提及年份，则不返回 "year" 字段
- 年份必须是四位数字，如 "25年"->"2025"
- 若用户提及了多个年份，则**每个年份之间使用空格隔开**，如"2025 2026"

---

## 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
python3 ./fetch_data.py --place {place...} --year {year...} --classify {classify...} --score {score...} --rank {rank...}
```

---
## Step 7：根据脚本查询到的数据判断是否符合考生的意图
- 根据“选科”信息，保留符合query意图的数据。

## Step 8：总结
结合上述内容，对用户的问题进行回答。
注意需要简明扼要。

## Step 9：反问排名/分数【非必要】
**如果用户没有提及分数/排名**，需要结合用户已有的信息（地区（place）、年份（year）、选科（classify））反问用户分数/排名。如“请问您的分数或者省排名是多少呢？我来帮您查询对应的分数/排名～”
然后再使用Step 4～8的步骤进行回答。

