diff --git a/scripts/update_grades_summary.py b/scripts/update_grades_summary.py new file mode 100644 index 0000000..ecbe129 --- /dev/null +++ b/scripts/update_grades_summary.py @@ -0,0 +1,174 @@ +#!/usr/bin/env python3 +"""Update grades_summary.json from repos-management/grades_summary.toml. + +Output schema: +- Top-level is a mapping: { : { : } } +- entry_key is one of: + - default + - 入学年份_default (e.g. 2024_default) + - 入学年份_专业 (e.g. 2021_自动化) +- grade_items is a flat ordered list: [ {"name": , "percent": } ... ] + +Notes: +- We intentionally do NOT output course_name / grades wrapper / raw / note. +- For unparseable segments, percent is null and name keeps the original text. +""" + +from __future__ import annotations + +import json +import re +import tomllib +import urllib.request +from pathlib import Path +from typing import Any + +SOURCE_URL = ( + "https://raw.githubusercontent.com/HITSZ-OpenAuto/repos-management/main/grades_summary.toml" +) +OUT_PATH = Path(__file__).resolve().parents[1] / "src/hoa_majors/data/grades_summary.json" + +PERCENT_RE = re.compile(r"(\d+%)") + + +def normalize_entry_key(course_variant: str) -> str: + """Normalize TOML variant keys into one of: + + - default + - 入学年份_default (e.g. 2024_default) + - 入学年份_专业 (e.g. 2022_自动化) + + Notes: + - Keys like "23级" / "21级自动化" are converted to 2023_* / 2021_*. + - A few variants in upstream data are not enrollment-year based (e.g. teacher names). + We currently map them into "default" (see PR discussion if this needs refinement). + """ + + if course_variant == "default": + return "default" + + # Plain year. + if re.fullmatch(r"\d{4}", course_variant): + return f"{course_variant}_default" + + # Patterns like "23级" / "21级自动化". + m = re.fullmatch(r"(?P\d{2})级(?P.*)", course_variant) + if m: + year = f"20{m.group('yy')}" + rest = m.group("rest").strip() + if not rest: + return f"{year}_default" + return f"{year}_{rest}" + + # Non-year variants in the upstream file. + return "__DROP__" + + +def parse_grade(raw: str) -> list[dict[str, Any]]: + """Parse a grade string into a flat list of items. + + Output item format: + {"name": , "percent": } + + For unparseable segments, percent is None and name preserves the text. + """ + + raw_norm = raw.replace("+", "+") + + # Split on '+' only when it likely separates components. + # - "... 30%+ ..." (plus right after a percent) + # - "... + ..." (plus surrounded by whitespace) + # This avoids splitting merged names like "作业+实验 50%". + split_re = r"(?<=%)\s*\+\s*|\s+\+\s+" + parts = [p.strip() for p in re.split(split_re, raw_norm) if p.strip()] + + items: list[dict[str, Any]] = [] + + for part in parts or [raw_norm.strip()]: + m = PERCENT_RE.search(part) + if not m: + items.append({"name": part}) + continue + + percent = m.group(1) + name = part[: m.start()].strip() or part + items.append({"name": name, "percent": percent}) + + return items + + +def extract_grade_strings(obj: Any) -> list[str]: + """Collect all grade strings found under a variant block. + + Upstream TOML shapes include: + - variant -> default -> {grade: "..."} + - variant -> default -> default -> {grade: "..."} + """ + + out: list[str] = [] + if isinstance(obj, dict): + for k, v in obj.items(): + if k == "grade" and isinstance(v, str): + out.append(v) + else: + out.extend(extract_grade_strings(v)) + elif isinstance(obj, list): + for v in obj: + out.extend(extract_grade_strings(v)) + return out + + +def main() -> None: + raw_bytes = urllib.request.urlopen(SOURCE_URL).read() + toml_data = tomllib.loads(raw_bytes.decode("utf-8")) + + grades = toml_data.get("grades", {}) + out_grades: dict[str, Any] = {} + + for course_code, course_obj in grades.items(): + if not isinstance(course_obj, dict): + continue + + entries: dict[str, Any] = {} + dropped_grade_strings: list[str] = [] + + for variant_key, variant_obj in course_obj.items(): + if variant_key == "course_name": + continue # explicitly removed per repo convention + + grade_strings = extract_grade_strings(variant_obj) + if not grade_strings: + continue + + entry_key = normalize_entry_key(str(variant_key)) + if entry_key == "__DROP__": + # Per request: drop non-year variants, but we may still use one of their values + # as a representative if nothing else exists for this course. + dropped_grade_strings.extend(grade_strings) + continue + + # If multiple grade strings appear for the same entry_key, pick the first. + first = grade_strings[0] + grade_items = parse_grade(first) + + # If we see the same entry_key again, keep the first. + entries.setdefault(entry_key, grade_items) + + # If the course had only non-year variants, keep ONE representative under "default". + if not entries and dropped_grade_strings: + entries["default"] = parse_grade(dropped_grade_strings[0]) + + if entries: + out_grades[course_code] = entries + + out = out_grades + + OUT_PATH.parent.mkdir(parents=True, exist_ok=True) + OUT_PATH.write_text( + json.dumps(out, ensure_ascii=False, indent=2, sort_keys=True) + "\n", + encoding="utf-8", + ) + + +if __name__ == "__main__": + main() diff --git a/src/hoa_majors/data/grades_summary.json b/src/hoa_majors/data/grades_summary.json new file mode 100644 index 0000000..6f98793 --- /dev/null +++ b/src/hoa_majors/data/grades_summary.json @@ -0,0 +1,1863 @@ +{ + "AUTO1001": { + "default": [ + { + "name": "作业", + "percent": "10%" + }, + { + "name": "课堂实验", + "percent": "30%" + }, + { + "name": "机器人考核", + "percent": "30%" + }, + { + "name": "期末考试", + "percent": "30%" + } + ] + }, + "AUTO2001": { + "default": [ + { + "name": "作业", + "percent": "40%" + }, + { + "name": "期末考试", + "percent": "60%" + } + ] + }, + "AUTO2003B": { + "default": [ + { + "name": "大作业", + "percent": "100%" + } + ] + }, + "AUTO2005": { + "default": [ + { + "name": "作业", + "percent": "10%" + }, + { + "name": "实验", + "percent": "25%" + }, + { + "name": "期末考试", + "percent": "65%" + } + ] + }, + "AUTO2006": { + "default": [ + { + "name": "平时成绩", + "percent": "10%" + }, + { + "name": "作业", + "percent": "20%" + }, + { + "name": "期末考试", + "percent": "70%" + } + ] + }, + "AUTO3001A": { + "default": [ + { + "name": "作业", + "percent": "13%" + }, + { + "name": "课堂表现", + "percent": "5%" + }, + { + "name": "上机实验", + "percent": "4%" + }, + { + "name": "硬件实验", + "percent": "8%" + }, + { + "name": "期末考试", + "percent": "70%" + } + ] + }, + "AUTO3001B": { + "default": [ + { + "name": "作业", + "percent": "12%" + }, + { + "name": "出勤", + "percent": "5%" + }, + { + "name": "上机实验", + "percent": "5%" + }, + { + "name": "实验", + "percent": "8%" + }, + { + "name": "期末考试", + "percent": "70%" + } + ] + }, + "AUTO3002A": { + "default": [ + { + "name": "作业", + "percent": "10%" + }, + { + "name": "实验", + "percent": "25%" + }, + { + "name": "期末考试", + "percent": "65%" + } + ] + }, + "AUTO3002B": { + "2021_default": [ + { + "name": "作业", + "percent": "10%" + }, + { + "name": "实验", + "percent": "40%" + }, + { + "name": "期末考试", + "percent": "50%" + } + ], + "2023_default": [ + { + "name": "作业", + "percent": "10%" + }, + { + "name": "实验", + "percent": "30%" + }, + { + "name": "期末考试", + "percent": "60%" + } + ], + "default": [ + { + "name": "作业", + "percent": "10%" + }, + { + "name": "实验", + "percent": "40%" + }, + { + "name": "期末考试", + "percent": "50%" + } + ] + }, + "AUTO3003": { + "default": [ + { + "name": "作业", + "percent": "10%" + }, + { + "name": "课程设计", + "percent": "25%" + }, + { + "name": "实验", + "percent": "20%" + }, + { + "name": "期末考试", + "percent": "45%" + } + ] + }, + "AUTO3004": { + "default": [ + { + "name": "作业", + "percent": "20%" + }, + { + "name": "实验", + "percent": "20%" + }, + { + "name": "期末考试", + "percent": "60%" + } + ] + }, + "AUTO3005": { + "default": [ + { + "name": "作业", + "percent": "15%" + }, + { + "name": "实验", + "percent": "15%" + }, + { + "name": "课程设计", + "percent": "20%" + }, + { + "name": "期末考试", + "percent": "50%" + } + ] + }, + "AUTO3006": { + "default": [ + { + "name": "考勤", + "percent": "5%" + }, + { + "name": "作业", + "percent": "10%" + }, + { + "name": "实验", + "percent": "20%" + }, + { + "name": "课设", + "percent": "25%" + }, + { + "name": "期末考试", + "percent": "40%" + } + ] + }, + "AUTO3007": { + "2020_default": [ + { + "name": "作业", + "percent": "20%" + }, + { + "name": "实验", + "percent": "40%" + }, + { + "name": "期末考试", + "percent": "40%" + } + ], + "2021_default": [ + { + "name": "作业", + "percent": "20%" + }, + { + "name": "实验", + "percent": "30%" + }, + { + "name": "期末考试", + "percent": "50%" + } + ], + "2022_default": [ + { + "name": "作业", + "percent": "20%" + }, + { + "name": "实验", + "percent": "30%" + }, + { + "name": "期末考试", + "percent": "50%" + } + ], + "default": [ + { + "name": "作业", + "percent": "20%" + }, + { + "name": "实验", + "percent": "30%" + }, + { + "name": "期末考试", + "percent": "50%" + } + ] + }, + "AUTO3011": { + "default": [ + { + "name": "作业+实验", + "percent": "50%" + }, + { + "name": "期末考试", + "percent": "50%" + } + ] + }, + "AUTO3012": { + "default": [ + { + "name": "作业", + "percent": "20%" + }, + { + "name": "实验", + "percent": "40%" + }, + { + "name": "实验报告", + "percent": "40%" + } + ] + }, + "AUTO3016": { + "default": [ + { + "name": "实验报告", + "percent": "90%" + }, + { + "name": "答辩", + "percent": "10%" + } + ] + }, + "AUTO3019": { + "default": [ + { + "name": "平时", + "percent": "10%" + }, + { + "name": "作业", + "percent": "30%" + }, + { + "name": "报告", + "percent": "20%" + }, + { + "name": "期末大作业", + "percent": "40%" + } + ] + }, + "AUTO3022": { + "default": [ + { + "name": "报告", + "percent": "100%" + } + ] + }, + "AUTO3024": { + "default": [ + { + "name": "作业", + "percent": "10%" + }, + { + "name": "实验", + "percent": "50%" + }, + { + "name": "期末考试", + "percent": "40%" + } + ] + }, + "AUTO3028": { + "2021_default": [ + { + "name": "作业", + "percent": "30%" + }, + { + "name": "期末考试", + "percent": "70%" + } + ], + "2023_default": [ + { + "name": "作业", + "percent": "40%" + }, + { + "name": "期末考试", + "percent": "60%" + } + ] + }, + "AUTO3099": { + "2021_default": [ + { + "name": "开题检查", + "percent": "2%" + }, + { + "name": "中期检查", + "percent": "3%" + }, + { + "name": "结题检查", + "percent": "5%" + }, + { + "name": "指导老师评分", + "percent": "27%" + }, + { + "name": "评阅老师评分", + "percent": "18%" + }, + { + "name": "答辩小组评分", + "percent": "45%" + } + ] + }, + "AUTO5001": { + "default": [ + { + "name": "作业", + "percent": "40%" + }, + { + "name": "期末考试", + "percent": "60%" + } + ] + }, + "AUTO5002": { + "default": [ + { + "name": "作业", + "percent": "40%" + }, + { + "name": "期末考试", + "percent": "60%" + } + ] + }, + "AUTO5005": { + "default": [ + { + "name": "平时成绩", + "percent": "30%" + }, + { + "name": "期末考试", + "percent": "70%" + } + ] + }, + "AUTO5013": { + "default": [ + { + "name": "作业", + "percent": "10%" + }, + { + "name": "出勤", + "percent": "10%" + }, + { + "name": "项目", + "percent": "40%" + }, + { + "name": "期末考试", + "percent": "40%" + } + ] + }, + "AUTO5023": { + "2024_default": [ + { + "name": "作业(含凸优化习题以及最优控制大作业)", + "percent": "30%" + }, + { + "name": "期末考试", + "percent": "70%" + } + ], + "default": [ + { + "name": "随堂测验", + "percent": "10%" + }, + { + "name": "作业", + "percent": "20%" + }, + { + "name": "期末考试", + "percent": "70%" + } + ] + }, + "AUTO5024": { + "default": [ + { + "name": "上机实验", + "percent": "40%" + }, + { + "name": "期末考试", + "percent": "60%" + } + ] + }, + "CHEM1012": { + "default": [ + { + "name": "平时", + "percent": "60%" + }, + { + "name": "实验", + "percent": "40%" + } + ] + }, + "COMP1011": { + "default": [ + { + "name": "作业", + "percent": "10%" + }, + { + "name": "实验", + "percent": "30%" + }, + { + "name": "期末考试", + "percent": "60%" + } + ] + }, + "COMP2001": { + "default": [ + { + "name": "作业", + "percent": "30%" + }, + { + "name": "期末考试", + "percent": "70%" + } + ] + }, + "COMP2008": { + "default": [ + { + "name": "作业", + "percent": "10%" + }, + { + "name": "实验", + "percent": "20%" + }, + { + "name": "期末考试", + "percent": "70%" + } + ] + }, + "COMP2010": { + "default": [ + { + "name": "作业", + "percent": "40%" + }, + { + "name": "期末考试", + "percent": "60%" + } + ] + }, + "COMP2012": { + "default": [ + { + "name": "实验", + "percent": "100%" + } + ] + }, + "COMP2014": { + "default": [ + { + "name": "作业", + "percent": "20%" + }, + { + "name": "实验", + "percent": "40%" + }, + { + "name": "期末考试", + "percent": "40%" + } + ] + }, + "COMP2029": { + "default": [ + { + "name": "过程检查", + "percent": "30%" + }, + { + "name": "结题验收", + "percent": "70%" + } + ] + }, + "COMP2030": { + "default": [ + { + "name": "作业", + "percent": "40%" + }, + { + "name": "期末考试", + "percent": "60%" + } + ] + }, + "COMP2050": { + "2021_default": [ + { + "name": "作业", + "percent": "10%" + }, + { + "name": "实验", + "percent": "20%" + }, + { + "name": "作业", + "percent": "70%" + } + ] + }, + "COMP2051": { + "default": [ + { + "name": "作业", + "percent": "20%" + }, + { + "name": "实验", + "percent": "30%" + }, + { + "name": "期末考试", + "percent": "50%" + } + ] + }, + "COMP2052": { + "default": [ + { + "name": "作业", + "percent": "10%" + }, + { + "name": "实验", + "percent": "20%" + }, + { + "name": "期末考试", + "percent": "70%" + } + ] + }, + "COMP3001": { + "default": [ + { + "name": "平时分", + "percent": "10%" + }, + { + "name": "实验", + "percent": "30%" + }, + { + "name": "期末考试", + "percent": "60%" + } + ] + }, + "COMP3002": { + "default": [ + { + "name": "作业", + "percent": "30%" + }, + { + "name": "期末考试", + "percent": "70%" + } + ] + }, + "COMP3004": { + "default": [ + { + "name": "作业", + "percent": "30%" + }, + { + "name": "期末考试", + "percent": "70%" + } + ] + }, + "COMP3005": { + "default": [ + { + "name": "作业", + "percent": "30%" + }, + { + "name": "实验", + "percent": "30%" + }, + { + "name": "期末考试", + "percent": "40%" + } + ] + }, + "COMP3006": { + "default": [ + { + "name": "作业", + "percent": "10%" + }, + { + "name": "Project", + "percent": "50%" + }, + { + "name": "期末考试", + "percent": "40%" + } + ] + }, + "COMP3007": { + "default": [ + { + "name": "作业", + "percent": "10%" + }, + { + "name": "期末考试", + "percent": "90%" + } + ] + }, + "COMP3009": { + "default": [ + { + "name": "大作业", + "percent": "40%" + }, + { + "name": "小作业", + "percent": "30%" + }, + { + "name": "实验", + "percent": "30%" + } + ] + }, + "COMP3010": { + "default": [ + { + "name": "作业", + "percent": "10%" + }, + { + "name": "实验", + "percent": "30%" + }, + { + "name": "期末考试", + "percent": "60%" + } + ] + }, + "COMP3011": { + "default": [ + { + "name": "作业", + "percent": "20%" + }, + { + "name": "实验", + "percent": "40%" + }, + { + "name": "期末考试", + "percent": "40%" + } + ] + }, + "COMP3013": { + "default": [ + { + "name": "作业", + "percent": "10%" + }, + { + "name": "实验", + "percent": "20%" + }, + { + "name": "期末考试", + "percent": "70%" + } + ] + }, + "COMP3017": { + "default": [ + { + "name": "Participation", + "percent": "5%" + }, + { + "name": "Hot topic study journal", + "percent": "15%" + }, + { + "name": "Exercises", + "percent": "20%" + }, + { + "name": "Final Examination", + "percent": "60%" + } + ] + }, + "COMP3018": { + "default": [ + { + "name": "作业", + "percent": "30%" + }, + { + "name": "期末考试", + "percent": "70%" + } + ] + }, + "COMP3019": { + "default": [ + { + "name": "作业", + "percent": "40%" + }, + { + "name": "期末考试", + "percent": "60%" + } + ] + }, + "COMP3021": { + "default": [ + { + "name": "比赛", + "percent": "60%" + }, + { + "name": "期末考试", + "percent": "40%" + } + ] + }, + "COMP3028": { + "default": [ + { + "name": "Participation", + "percent": "10%" + }, + { + "name": "Practical exercises", + "percent": "30%" + }, + { + "name": "Final examination", + "percent": "60%" + } + ] + }, + "COMP3029": { + "default": [ + { + "name": "考勤", + "percent": "24%" + }, + { + "name": "作业", + "percent": "40%" + }, + { + "name": "Final Project", + "percent": "36%" + } + ] + }, + "COMP3030": { + "default": [ + { + "name": "随堂练习", + "percent": "10%" + }, + { + "name": "作业", + "percent": "40%" + }, + { + "name": "大项目", + "percent": "50%" + } + ] + }, + "COMP3039": { + "default": [ + { + "name": "作业", + "percent": "40%" + }, + { + "name": "期末考试", + "percent": "60%" + } + ] + }, + "COMP3040": { + "default": [ + { + "name": "作业", + "percent": "20%" + }, + { + "name": "实验", + "percent": "30%" + }, + { + "name": "期末考试", + "percent": "50%" + } + ] + }, + "COMP3043": { + "default": [ + { + "name": "实验", + "percent": "40%" + }, + { + "name": "课堂小测", + "percent": "40%" + }, + { + "name": "期末报告", + "percent": "20%" + } + ] + }, + "COMP3044": { + "default": [ + { + "name": "课堂参与", + "percent": "20%" + }, + { + "name": "课堂展示", + "percent": "40%" + }, + { + "name": "论文", + "percent": "40%" + } + ] + }, + "COMP3052": { + "default": [ + { + "name": "作业", + "percent": "20%" + }, + { + "name": "实验", + "percent": "20%" + }, + { + "name": "期末考试", + "percent": "60%" + } + ] + }, + "COMP3053": { + "default": [ + { + "name": "作业", + "percent": "20%" + }, + { + "name": "实验", + "percent": "20%" + }, + { + "name": "期末考试", + "percent": "60%" + } + ] + }, + "COMP3054": { + "default": [ + { + "name": "作业", + "percent": "10%" + }, + { + "name": "实验", + "percent": "30%" + }, + { + "name": "期末考试", + "percent": "60%" + } + ] + }, + "COMP3059": { + "default": [ + { + "name": "作业", + "percent": "10%" + }, + { + "name": "上机实验", + "percent": "40%" + }, + { + "name": "期末考试", + "percent": "50%" + } + ] + }, + "COMP3060": { + "default": [ + { + "name": "开题报告", + "percent": "10%" + }, + { + "name": "中期检查", + "percent": "20%" + }, + { + "name": "结题报告", + "percent": "20%" + }, + { + "name": "软件作品", + "percent": "50%" + } + ] + }, + "ECON2005F": { + "default": [ + { + "name": "考勤", + "percent": "20%" + }, + { + "name": "生活中的经济学", + "percent": "20%" + }, + { + "name": "期中考试", + "percent": "30%" + }, + { + "name": "期末考试", + "percent": "30%" + } + ] + }, + "EE1007": { + "2021_电气/通信、22级自动化": [ + { + "name": "作业", + "percent": "20%" + }, + { + "name": "期末考试", + "percent": "80%" + } + ], + "2021_自动化": [ + { + "name": "作业", + "percent": "30%" + }, + { + "name": "期末考试", + "percent": "70%" + } + ] + }, + "EE1008": { + "default": [ + { + "name": "MOOC预习题" + }, + { + "name": "按时完成实验(不按时完成,则适当扣分)+ 报告分数(无考试)" + } + ] + }, + "EE1009": { + "default": [ + { + "name": "平时成绩", + "percent": "20%" + }, + { + "name": "期末考试", + "percent": "80%" + } + ] + }, + "EE1010": { + "default": [ + { + "name": "预习题" + }, + { + "name": "按时完成实验(不按时完成,则适当扣分)+ 报告分数" + } + ] + }, + "EE1011A": { + "default": [ + { + "name": "作业", + "percent": "35%" + }, + { + "name": "期末考试", + "percent": "65%" + } + ] + }, + "EE1011B": { + "default": [ + { + "name": "作业", + "percent": "20%" + }, + { + "name": "期末考试", + "percent": "80%" + } + ] + }, + "EE1012A": { + "default": [ + { + "name": "实验报告", + "percent": "100%" + } + ] + }, + "EE1012B": { + "default": [ + { + "name": "出勤" + }, + { + "name": "实验报告", + "percent": "100%" + } + ] + }, + "EE1013": { + "default": [ + { + "name": "作业", + "percent": "20%" + }, + { + "name": "期末考试", + "percent": "80%" + } + ] + }, + "EE1014": { + "default": [ + { + "name": "实验报告", + "percent": "100%" + } + ] + }, + "EE1018": { + "default": [ + { + "name": "作业", + "percent": "20%" + }, + { + "name": "期末考试", + "percent": "80%" + } + ] + }, + "EE2003": { + "default": [ + { + "name": "作业", + "percent": "14%" + }, + { + "name": "MOOC", + "percent": "12%" + }, + { + "name": "实验", + "percent": "8%" + }, + { + "name": "期末考试", + "percent": "66%" + } + ] + }, + "EE2004": { + "2024_default": [ + { + "name": "作业", + "percent": "20%" + }, + { + "name": "期末考试", + "percent": "80%" + } + ] + }, + "EE3002": { + "default": [ + { + "name": "实验", + "percent": "20%" + }, + { + "name": "期中考试", + "percent": "20%" + }, + { + "name": "期末考试", + "percent": "60%" + } + ] + }, + "EE304X": { + "default": [ + { + "name": "实物验收", + "percent": "30%" + }, + { + "name": "设计报告", + "percent": "70%" + } + ] + }, + "EMEC1002": { + "2024_default": [ + { + "name": "平时考勤", + "percent": "10%" + }, + { + "name": "作业&小测", + "percent": "20%" + }, + { + "name": "期中考试", + "percent": "20%" + }, + { + "name": "期末考试", + "percent": "50%" + } + ] + }, + "ENGG1002": { + "default": [ + { + "name": "工程认知(课堂作业)", + "percent": "15%" + }, + { + "name": "工程素养(出勤)", + "percent": "15%" + }, + { + "name": "工程技能(训练内容)", + "percent": "30%" + }, + { + "name": "工程综合(项目制作)", + "percent": "30%" + }, + { + "name": "工程创新(项目创新)", + "percent": "10%" + } + ] + }, + "ENGG1003": { + "2023_default": [ + { + "name": "元器件识别", + "percent": "7%" + }, + { + "name": "电子封装", + "percent": "7%" + }, + { + "name": "电子可靠性", + "percent": "5%" + }, + { + "name": "硬件设计", + "percent": "11%" + }, + { + "name": "PCB设计", + "percent": "11%" + }, + { + "name": "软件设计", + "percent": "18%" + }, + { + "name": "焊接调试", + "percent": "11%" + }, + { + "name": "项目制作", + "percent": "30%" + } + ], + "default": [ + { + "name": "实验", + "percent": "100%" + } + ] + }, + "GEIP1011": { + "2022_default": [ + { + "name": "课堂表现", + "percent": "10%" + }, + { + "name": "讨论与展示", + "percent": "20%" + }, + { + "name": "作业", + "percent": "20%" + }, + { + "name": "期末考试", + "percent": "50%" + } + ], + "2023_default": [ + { + "name": "课堂表现", + "percent": "4%" + }, + { + "name": "小测", + "percent": "16%" + }, + { + "name": "讨论与展示", + "percent": "10%" + }, + { + "name": "期末考试", + "percent": "70%" + } + ] + }, + "GEIP1015": { + "default": [ + { + "name": "平时", + "percent": "50%" + }, + { + "name": "期末考试", + "percent": "50%" + } + ] + }, + "GEIP1016": { + "default": [ + { + "name": "课堂表现", + "percent": "10%" + }, + { + "name": "讨论与展示", + "percent": "20%" + }, + { + "name": "论文", + "percent": "20%" + }, + { + "name": "期末考试", + "percent": "50%" + } + ] + }, + "GEIP1017": { + "2023_default": [ + { + "name": "平时和课堂展示", + "percent": "20%" + }, + { + "name": "期中论文", + "percent": "30%" + }, + { + "name": "期末论文", + "percent": "50%" + } + ], + "2024_default": [ + { + "name": "平时和课堂展示", + "percent": "20%" + }, + { + "name": "期中论文", + "percent": "20%" + }, + { + "name": "期末考试", + "percent": "60%" + } + ], + "2025_default": [ + { + "name": "平时和课堂展示", + "percent": "24%" + }, + { + "name": "期中论文", + "percent": "16%" + }, + { + "name": "期末考试", + "percent": "60%" + } + ], + "default": [ + { + "name": "请参考具体年份设置(23级为考查课,24级及以后为考试课)" + } + ] + }, + "GEIP1018": { + "2024_default": [ + { + "name": "课程论文", + "percent": "10%" + }, + { + "name": "小组汇报", + "percent": "20%" + }, + { + "name": "期末考试", + "percent": "70%" + } + ] + }, + "GEIP4004": { + "default": [ + { + "name": "出勤", + "percent": "10%" + }, + { + "name": "论文", + "percent": "20%" + }, + { + "name": "讨论与展示", + "percent": "20%" + }, + { + "name": "期末考试", + "percent": "50%" + } + ] + }, + "LANG100X": { + "default": [ + { + "name": "作业", + "percent": "40%" + }, + { + "name": "期末考试", + "percent": "60%" + } + ] + }, + "MATH1002": { + "default": [ + { + "name": "作业", + "percent": "20%" + }, + { + "name": "期中考试", + "percent": "30%" + }, + { + "name": "期末考试", + "percent": "50%" + } + ] + }, + "MATH1004": { + "default": [ + { + "name": "作业", + "percent": "20%" + }, + { + "name": "论文", + "percent": "10%" + }, + { + "name": "期末考试", + "percent": "70%" + } + ] + }, + "MATH1005": { + "default": [ + { + "name": "作业", + "percent": "20%" + }, + { + "name": "期末考试", + "percent": "80%" + } + ] + }, + "MATH1015A": { + "default": [ + { + "name": "作业", + "percent": "20%" + }, + { + "name": "期中考试", + "percent": "30%" + }, + { + "name": "期末考试", + "percent": "50%" + } + ] + }, + "MATH1015B": { + "default": [ + { + "name": "作业", + "percent": "20%" + }, + { + "name": "期中考试", + "percent": "30%" + }, + { + "name": "期末考试", + "percent": "50%" + } + ] + }, + "MATH4001": { + "default": [ + { + "name": "作业", + "percent": "30%" + }, + { + "name": "期末考试", + "percent": "70%" + } + ] + }, + "MATH4002": { + "default": [ + { + "name": "作业", + "percent": "30%" + }, + { + "name": "期末考试", + "percent": "70%" + } + ] + }, + "MATH4004": { + "default": [ + { + "name": "出勤", + "percent": "10%" + }, + { + "name": "课堂测验及作业", + "percent": "20%" + }, + { + "name": "期末考试", + "percent": "70%" + } + ] + }, + "MECH2010": { + "default": [ + { + "name": "平时成绩", + "percent": "30%" + }, + { + "name": "作业", + "percent": "20%" + }, + { + "name": "期末考试", + "percent": "50%" + } + ] + }, + "MECH2019": { + "default": [ + { + "name": "平时作业", + "percent": "20%" + }, + { + "name": "大作业", + "percent": "30%" + }, + { + "name": "期末考试", + "percent": "50%" + } + ] + }, + "MECH2020": { + "default": [ + { + "name": "小作业", + "percent": "10%" + }, + { + "name": "大作业", + "percent": "20%" + }, + { + "name": "期末考试", + "percent": "70%" + } + ] + }, + "MECH2022": { + "default": [ + { + "name": "作业", + "percent": "15%" + }, + { + "name": "实验", + "percent": "15%" + }, + { + "name": "期末考试", + "percent": "70%" + } + ] + }, + "MECH3005": { + "default": [ + { + "name": "平时作业", + "percent": "20%" + }, + { + "name": "实验", + "percent": "20%" + }, + { + "name": "期末考试", + "percent": "60%" + } + ] + }, + "MECH3041": { + "default": [ + { + "name": "大作业", + "percent": "20%" + }, + { + "name": "实验", + "percent": "30%" + }, + { + "name": "期末考试", + "percent": "50%" + } + ] + }, + "MECH3060": { + "default": [ + { + "name": "作业", + "percent": "25%" + }, + { + "name": "实验", + "percent": "15%" + }, + { + "name": "期末考试", + "percent": "60%" + } + ] + }, + "PHYS1001": { + "2023_default": [ + { + "name": "作业", + "percent": "30%" + }, + { + "name": "期末考试", + "percent": "70%" + } + ], + "2024_default": [ + { + "name": "作业", + "percent": "30%" + }, + { + "name": "期中考试", + "percent": "20%" + }, + { + "name": "期末考试", + "percent": "50%" + } + ] + }, + "PHYS1002": { + "default": [ + { + "name": "每次实验得分的加权和", + "percent": "100%" + } + ] + }, + "SEIN1040": { + "default": [ + { + "name": "平时", + "percent": "20%" + }, + { + "name": "实验", + "percent": "40%" + }, + { + "name": "课堂展示", + "percent": "40%" + } + ] + }, + "WOCD1008": { + "default": [ + { + "name": "平时成绩", + "percent": "100%" + } + ] + }, + "WRIT0001": { + "default": [ + { + "name": "各小班成绩构成可能不同,通常包含平时表现、短文、长文和口头汇报。" + } + ] + } +}