sync: 从服务器同步最新文件
- tuition_data.py: 学费数据模块(新文件) - 更新 scripts 和 sync.sh - 删除无意义的 test.txt
This commit is contained in:
parent
be7989458f
commit
1fd3b0e88b
|
|
@ -1,5 +1,9 @@
|
|||
# 数据库不进 Git
|
||||
*.db
|
||||
__pycache__/
|
||||
*.pyc
|
||||
*.pyo
|
||||
*.db
|
||||
*.log
|
||||
|
||||
# 宝塔相关不要
|
||||
/www/
|
||||
/bt_backup/
|
||||
|
|
@ -35,7 +35,7 @@ from tuition_data import get_tuition_for_school, ALL_TUITION_RATES
|
|||
# 配置
|
||||
# ============================================================
|
||||
REMOTE_DB = "/www/wwwroot/gaokao/gaokao_henan.db"
|
||||
SCHID_XLSX = "/home/muc/Downloads/00、志愿填报必备资料/00、志愿填报必备资料/最新25年招生章程链接.xlsx"
|
||||
SCHID_XLSX = "/tmp/最新25年招生章程链接.xlsx"
|
||||
LOCAL_DB = os.path.expanduser("~/mc/gaokao-site/gaokao_henan.db")
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -182,7 +182,7 @@ SCHOOL_TUITION_MAP = {
|
|||
# 艺术/体育类关键词
|
||||
KW_ARTS = ["艺术", "音乐", "美术", "设计", "舞蹈", "传媒", "戏剧", "影视", "播音", "表演"]
|
||||
# 医学类关键词
|
||||
KW_MEDICAL = ["医学", "药学", "护理", "临床", "口腔", "中医", "医科", "医大", "军医"]
|
||||
KW_MEDICAL = ["医学", "药学", "护理", "临床", "口腔", "中医", "预防", "检验", "影像"]
|
||||
# 农林类关键词
|
||||
KW_AGRI = ["农业", "林业", "园艺", "畜牧", "兽医", "水产", "草业", "农学"]
|
||||
# 师范类关键词(普遍低学费)
|
||||
|
|
|
|||
|
|
@ -0,0 +1,312 @@
|
|||
"""
|
||||
河南高考志愿网站 - 学费数据模块
|
||||
数据来源:河南省发改委高等教育收费标准(2024版)
|
||||
涵盖河南省主要公办高校,按学科分类定价
|
||||
"""
|
||||
|
||||
# ============================================================
|
||||
# 一、河南公办高校标准学费(学年制,每生每学年)
|
||||
# ============================================================
|
||||
# 普通本科
|
||||
TUITION_PUBLIC_NORMAL = {
|
||||
"普通类(文科)": 4400,
|
||||
"普通类(理科)": 5000,
|
||||
"医学类": 5500,
|
||||
"艺术类": 8000,
|
||||
"体育类": 5000,
|
||||
"农林类": 4000,
|
||||
}
|
||||
# 中外合作办学(较高收费)
|
||||
TUITION_JOINT_NORMAL = {
|
||||
"中外合作办学(普通专业)": 18000,
|
||||
"中外合作办学(艺术/医学类)": 22000,
|
||||
"国际学院": 25000,
|
||||
}
|
||||
# 独立学院(民办)
|
||||
TUITION_INDEPENDENT = {
|
||||
"独立学院(普通专业)": 12000,
|
||||
"独立学院(艺术类)": 15000,
|
||||
}
|
||||
# 高等职业院校
|
||||
TUITION_VOCATIONAL = {
|
||||
"高职(普通专业)": 4200,
|
||||
"高职(艺术类)": 5000,
|
||||
"高职(医科类)": 4800,
|
||||
}
|
||||
|
||||
# 所有费率汇总
|
||||
ALL_TUITION_RATES = {
|
||||
**TUITION_PUBLIC_NORMAL,
|
||||
**TUITION_JOINT_NORMAL,
|
||||
**TUITION_INDEPENDENT,
|
||||
**TUITION_VOCATIONAL,
|
||||
}
|
||||
|
||||
# ============================================================
|
||||
# 二、学校名称 → 学费标准 映射表
|
||||
# ============================================================
|
||||
# 格式:学校名: (学费标准描述, 学费金额)
|
||||
# 优先级:精确匹配 > 关键字匹配 > 默认标准
|
||||
SCHOOL_TUITION_MAP = {
|
||||
# ---- 郑州大学(河南省最强综合性大学)----
|
||||
# 主校区:非医学专业按理科标准,医学专业单独计5500
|
||||
"郑州大学": ("普通类(理科)", 5000),
|
||||
"郑州大学国际学院": ("国际学院", 25000),
|
||||
"郑州大学(中外合作)": ("中外合作办学(普通专业)", 18000),
|
||||
"郑州大学医学院": ("医学类", 5500),
|
||||
|
||||
# ---- 河南大学(双一流)----
|
||||
"河南大学": ("普通类(文科)", 4400),
|
||||
"河南大学(中外合作)": ("中外合作办学(普通专业)", 18000),
|
||||
|
||||
# ---- 河南师范大学 ----
|
||||
"河南师范大学": ("普通类(文科)", 4400),
|
||||
"河南师范大学(中外合作)": ("中外合作办学(普通专业)", 18000),
|
||||
|
||||
# ---- 河南科技大学 ----
|
||||
"河南科技大学": ("普通类(理科)", 5000),
|
||||
|
||||
# ---- 河南理工大学 ----
|
||||
"河南理工大学": ("普通类(理科)", 5000),
|
||||
|
||||
# ---- 河南农业大学 ----
|
||||
"河南农业大学": ("农林类", 4000),
|
||||
|
||||
# ---- 河南工业大学 ----
|
||||
"河南工业大学": ("普通类(理科)", 5000),
|
||||
|
||||
# ---- 华北水利水电大学 ----
|
||||
"华北水利水电大学": ("普通类(理科)", 5000),
|
||||
|
||||
# ---- 郑州轻工业大学 ----
|
||||
"郑州轻工业大学": ("普通类(理科)", 5000),
|
||||
|
||||
# ---- 中原工学院 ----
|
||||
"中原工学院": ("普通类(理科)", 5000),
|
||||
|
||||
# ---- 河南财经政法大学 ----
|
||||
"河南财经政法大学": ("普通类(文科)", 4400),
|
||||
|
||||
# ---- 郑州航空工业管理学院 ----
|
||||
"郑州航空工业管理学院": ("普通类(文科)", 4400),
|
||||
|
||||
# ---- 河南中医药大学 ----
|
||||
"河南中医药大学": ("医学类", 5500),
|
||||
|
||||
# ---- 新乡医学院 ----
|
||||
"新乡医学院": ("医学类", 5500),
|
||||
|
||||
# ---- 河南开封科技传媒学院(独立学院)---- # 原河南大学民生学院
|
||||
"河南开封科技传媒学院": ("独立学院(普通专业)", 12000),
|
||||
|
||||
# ---- 河南大学民生学院(已转设)----
|
||||
"河南大学民生学院": ("独立学院(普通专业)", 12000),
|
||||
|
||||
# ---- 独立学院 ----
|
||||
"河南师范大学新联学院": ("独立学院(普通专业)", 12000),
|
||||
"中原工学院信息商务学院": ("独立学院(普通专业)", 12000),
|
||||
"河南科技大学应用工程学院": ("独立学院(普通专业)", 12000),
|
||||
"新乡医学院三全学院": ("独立学院(医学类)", 13000),
|
||||
"河南理工大学万方科技学院": ("独立学院(普通专业)", 12000),
|
||||
|
||||
# ---- 高水平大学中外合作项目 ----
|
||||
"郑州大学西亚斯国际学院": ("中外合作办学(普通专业)", 18000),
|
||||
|
||||
# ---- 河南警察学院 ----
|
||||
"河南警察学院": ("普通类(文科)", 4400),
|
||||
|
||||
# ---- 郑州师范学院 ----
|
||||
"郑州师范学院": ("普通类(文科)", 4400),
|
||||
|
||||
# ---- 洛阳师范学院 ----
|
||||
"洛阳师范学院": ("普通类(文科)", 4400),
|
||||
|
||||
# ---- 信阳师范学院 ----
|
||||
"信阳师范学院": ("普通类(文科)", 4400),
|
||||
|
||||
# ---- 南阳师范学院 ----
|
||||
"南阳师范学院": ("普通类(文科)", 4400),
|
||||
|
||||
# ---- 商丘师范学院 ----
|
||||
"商丘师范学院": ("普通类(文科)", 4400),
|
||||
|
||||
# ---- 安阳师范学院 ----
|
||||
"安阳师范学院": ("普通类(文科)", 4400),
|
||||
|
||||
# ---- 周口师范学院 ----
|
||||
"周口师范学院": ("普通类(文科)", 4400),
|
||||
|
||||
# ---- 许昌学院 ----
|
||||
"许昌学院": ("普通类(文科)", 4400),
|
||||
|
||||
# ---- 洛阳理工学院 ----
|
||||
"洛阳理工学院": ("普通类(理科)", 5000),
|
||||
|
||||
# ---- 河南工程学院 ----
|
||||
"河南工程学院": ("普通类(理科)", 5000),
|
||||
|
||||
# ---- 南阳理工学院 ----
|
||||
"南阳理工学院": ("普通类(理科)", 5000),
|
||||
|
||||
# ---- 河南城建学院 ----
|
||||
"河南城建学院": ("普通类(理科)", 5000),
|
||||
|
||||
# ---- 平顶山学院 ----
|
||||
"平顶山学院": ("普通类(文科)", 4400),
|
||||
|
||||
# ---- 河南牧业经济学院 ----
|
||||
"河南牧业经济学院": ("农林类", 4000),
|
||||
|
||||
# ---- 黄河科技学院(民办)----
|
||||
"黄河科技学院": ("独立学院(普通专业)", 12000),
|
||||
|
||||
# ---- 商丘学院(民办)----
|
||||
"商丘学院": ("独立学院(普通专业)", 12000),
|
||||
|
||||
# ---- 郑州科技学院(民办)----
|
||||
"郑州科技学院": ("独立学院(普通专业)", 12000),
|
||||
|
||||
# ---- 郑州升达经贸管理学院(民办)----
|
||||
"郑州升达经贸管理学院": ("独立学院(普通专业)", 12000),
|
||||
|
||||
# ---- 新乡工程学院 ----
|
||||
"新乡工程学院": ("独立学院(普通专业)", 12000),
|
||||
}
|
||||
|
||||
|
||||
# ============================================================
|
||||
# 三、关键字自动分类规则(用于未精确匹配的学校)
|
||||
# ============================================================
|
||||
# 优先级:精确匹配 → 关键字匹配 → 默认标准
|
||||
|
||||
# 艺术/体育类关键词
|
||||
KW_ARTS = ["艺术", "音乐", "美术", "设计", "舞蹈", "传媒", "戏剧", "影视", "播音", "表演"]
|
||||
# 医学类关键词
|
||||
KW_MEDICAL = ["医学", "药学", "护理", "临床", "口腔", "中医", "医科", "医大", "军医"]
|
||||
# 农林类关键词
|
||||
KW_AGRI = ["农业", "林业", "园艺", "畜牧", "兽医", "水产", "草业", "农学"]
|
||||
# 师范类关键词(普遍低学费)
|
||||
KW_NORMAL = ["师范", "学院", "大学"] # 先放空,后面处理
|
||||
# 中外合作关键词
|
||||
KW_JOINT = ["中外合作", "国际学院", "合作办学", "外方合作", "香港", "台湾"]
|
||||
# 独立学院/民办关键词
|
||||
KW_PRIVATE = ["独立学院", "民生学院", "应用技术学院", "信息商务学院", "应用工程学院"]
|
||||
|
||||
# 默认:公办普通本科文4400,理5000
|
||||
DEFAULT_TUITION_NORMAL = ("普通类(文科)", 4400)
|
||||
DEFAULT_TUITION_SCI = ("普通类(理科)", 5000)
|
||||
|
||||
|
||||
def get_tuition_for_school(school_name: str, school_type: str = "") -> dict:
|
||||
"""
|
||||
根据学校名称和类型返回学费信息
|
||||
|
||||
返回格式:
|
||||
{
|
||||
"category": "普通类(文科)",
|
||||
"annual": 4400,
|
||||
"remark": "公办本科 | 河南省发改委标准",
|
||||
"source": "static_henan"
|
||||
}
|
||||
"""
|
||||
if not school_name:
|
||||
return _default_result("普通类(文科)", 4400)
|
||||
|
||||
sn = school_name.strip()
|
||||
|
||||
# 1. 精确匹配
|
||||
if sn in SCHOOL_TUITION_MAP:
|
||||
cat, amt = SCHOOL_TUITION_MAP[sn]
|
||||
return _make_result(cat, amt)
|
||||
|
||||
# 2. 合作办学优先(关键字匹配顺序很重要)
|
||||
for kw in KW_JOINT:
|
||||
if kw in sn:
|
||||
# 艺术类中外合作更贵
|
||||
if any(a in sn for a in KW_ARTS):
|
||||
return _make_result("中外合作办学(艺术/医学类)", 22000)
|
||||
return _make_result("中外合作办学(普通专业)", 18000)
|
||||
|
||||
# 3. 独立学院/民办
|
||||
for kw in KW_PRIVATE:
|
||||
if kw in sn:
|
||||
if any(a in sn for a in KW_ARTS):
|
||||
return _make_result("独立学院(艺术类)", 15000)
|
||||
return _make_result("独立学院(普通专业)", 12000)
|
||||
|
||||
# 4. 艺术/体育 类
|
||||
if any(kw in sn for kw in KW_ARTS):
|
||||
return _make_result("艺术类", 8000)
|
||||
|
||||
# 5. 医学类
|
||||
if any(kw in sn for kw in KW_MEDICAL):
|
||||
return _make_result("医学类", 5500)
|
||||
|
||||
# 6. 农林类
|
||||
if any(kw in sn for kw in KW_AGRI):
|
||||
return _make_result("农林类", 4000)
|
||||
|
||||
# 7. 师范类(默认文科标准)
|
||||
if "师范" in sn:
|
||||
return _make_result("普通类(文科)", 4400)
|
||||
|
||||
# 8. 体育类
|
||||
if "体育" in sn:
|
||||
return _make_result("体育类", 5000)
|
||||
|
||||
# 9. 高职/专科
|
||||
if any(k in sn for k in ["职业", "技术", "专科", "高职"]):
|
||||
if any(a in sn for a in KW_ARTS):
|
||||
return _make_result("高职(艺术类)", 5000)
|
||||
if any(m in sn for m in KW_MEDICAL):
|
||||
return _make_result("高职(医科类)", 4800)
|
||||
return _make_result("高职(普通专业)", 4200)
|
||||
|
||||
# 10. 默认标准(公办综合性大学 → 理科标准)
|
||||
return _make_result("普通类(理科)", 5000)
|
||||
|
||||
|
||||
def _make_result(category: str, annual: int) -> dict:
|
||||
return {
|
||||
"category": category,
|
||||
"annual": annual,
|
||||
"remark": f"{category} | 河南省发改委标准",
|
||||
"source": "static_henan",
|
||||
}
|
||||
|
||||
|
||||
def _default_result(category: str, annual: int) -> dict:
|
||||
return _make_result(category, annual)
|
||||
|
||||
|
||||
def get_tuition_display(annual: int, category: str = "") -> str:
|
||||
"""格式化显示学费字符串"""
|
||||
return f"{annual:,}元/年"
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
# 测试几所代表性学校
|
||||
test_schools = [
|
||||
"郑州大学",
|
||||
"河南大学",
|
||||
"河南师范大学",
|
||||
"河南科技大学",
|
||||
"河南理工大学",
|
||||
"河南农业大学",
|
||||
"河南中医药大学",
|
||||
"新乡医学院",
|
||||
"华北水利水电大学",
|
||||
"河南大学民生学院",
|
||||
"郑州大学西亚斯国际学院",
|
||||
"河南开封科技传媒学院",
|
||||
"黄河科技学院",
|
||||
"河南警察学院",
|
||||
"南阳理工学院",
|
||||
"河南牧业经济学院",
|
||||
]
|
||||
|
||||
print(f"{'学校':<30} {'类别':<25} {'年费':>8}")
|
||||
print("-" * 65)
|
||||
for s in test_schools:
|
||||
info = get_tuition_for_school(s)
|
||||
print(f"{s:<30} {info['category']:<25} {info['annual']:>6}元/年")
|
||||
Loading…
Reference in New Issue