OBE课程达成度计算与达成报告生成器
加载本Skill后,用户的WorkBuddy等AI工具将化身为一名OBE专家,根据用户提供的符合OBE理念的教学大纲、课程测点成绩表、课程总结成绩表等资料,自动计算课程目标达成度,并生成含有统计数据和统计图表的课程目标达成情况评价报告、课程总结的Word文档,并配套相应的数据Excel表格(含图表)。
本Skill具有自适应性,支持对各学校常见的成绩表格式自动识别。所有脚本的输出都是 JSON;零第三方依赖,完全离线,环境自检通过后可直接使用。
一、30 秒上手(老师只需要看这一段)
零门槛承诺:老师全程只用"说话",不用敲任何命令、不用打开任何终端、不用装任何软件、不用学任何代码。
| 老师要做的 | AI 助手要做的 |
|---|---|
| 把成绩表(Excel 或 CSV)交给 AI | 自己敲命令、跑脚本、看报错 |
| 把教学大纲(或课程目标与权重)交给 AI | 自动识别表头、列、满分、等级制、班级 |
| 回答 AI 一次性提出的几个确认项 | 自己写配置、自己算、自己排版 |
| 说"可以,出报告吧" | 生成 Word 报告 + 可改的图表 Excel |
最快 3 步(照着说就行)
- 把成绩表放进工作目录,对 AI 说一句:"帮我算这门课的达成度并出报告";
- AI 自动识别成绩表、自动起草配置,然后一次性把几件待确认的事(学期、各环节权重、达标线)列给你,你只回答一次;
- AI 生成课程目标达成情况评价报告(或课程总结)与配套的图表数据 Excel,直接交给教务处。
可以直接照说的原话(意思对即可,不用记命令):
- "帮我算一下这门课的课程目标达成度。"
- "按这份成绩表和大纲,生成课程达成度评价报告。"
- "我们学校要交课程总结,帮我做一份。"
- "先给我看个样例,我要知道报告长什么样。"
- "这份成绩表格式有点怪,能处理吗?"
二、一分钟判定:这个技能适合你吗?
| 问自己 | 回答"是"就继续 |
|---|---|
| 我手上有一份学生成绩表(Excel 或 CSV)吗? | 有就能算 |
| 我知道课程目标有哪几条、各考核环节占多少权重吗? | 大纲里有就行;没有 AI 会帮你一起定 |
| 我要交的是课程达成度评价报告或课程总结吗? | 两种都能生成 |
不适合的场景(请如实告诉用户,别硬做)
| 场景 | 直接这样说 |
|---|---|
| 连一份成绩表都没有,只有"大概的印象" | "得先有一份成绩表才能算,哪怕是只有总评一列的也行。" |
| 要的是专业/年级层面的整体达成度,不是一门课 | "这一版是按一门课程算的,跨课程汇总请先把各课结果导出后自行合并。" |
| 学校要求必须提交指定的老系统表格、不让用 Word | "可以先把内容算出来,再由您填进学校系统里。" |
| 成绩表是 .xls 老格式 | "请先用 Excel 或 WPS 另存为 .xlsx 或 .csv,我再帮您处理。" |
| 想把 AI 写的分析文字直接当正式材料交上去 | "分析文字是草稿,请务必按本校表述习惯改写后再提交。" |
三、想深入时再看:流程地图与阅读层级
阅读层级(不必一次读完,按需跳转)
| 你现在的状态 | 只看这一节 |
|---|---|
| 只想快点出报告 | 第一节 + 第六节(完整演示) |
| 想确认适不适合自己 | 第二节 |
| 想弄清每一步在干什么 | 第三节 + 第七节 |
| 出错了、卡住了 | 第八节 + 第十二节 |
| 想避免踩坑 | 第九节(反模式清单) |
| 要提交前最后把关 | 第十节(自查清单) |
流程地图:每一步的结果都会存成文件,任何一步出问题,改完从那一步重跑即可,前面已经做好的不会丢。
| 步骤 | 做什么 | 得到什么 | 谁敲命令 |
|---|---|---|---|
| 第 0 步(可选) | 先看样例效果 | 示例报告 / 示例成绩表 | AI |
| 第 1 步 | 环境自检 | 一句"通过" | AI |
| 第 2 步 | 看成绩表结构 | 自动识别结果 | AI |
| 第 3 步 | 写两个配置文件 | mapping.json、objectives.json | AI 起草,老师确认 |
| 第 4 步 | 清洗成绩数据 | scores.json | AI |
| 第 5 步(建议) | 提交前核对 | 核对结论 | AI |
| 第 6 步 | 计算达成度 | results.json | AI |
| 第 7 步 | 撰写分析与建议 | 写进 results.json | AI 起草,老师改 |
| 第 8 步 | 生成报告 | Word + 图表 Excel | AI |
| 第 9 步(可选) | 联网查参考 | 参考信息 | AI |
四、教师需要提供的材料
| 材料 | 必需性 | 用途 |
|---|---|---|
| 成绩表(xlsx 或 csv) | 必需 | 计算达成度的数据来源,包括:课程测点成绩表、课程总结成绩表。需包含学号、姓名及各考核环节成绩 |
| 教学大纲 | 必需 | 提取课程目标、考核环节权重、支撑的毕业要求指标点 |
| 人才培养方案 | 建议提供 | 核对课程目标与毕业要求指标点的对应关系 |
| 达成度报告模版 | 建议提供 | 包括达成度报告指导意见、达成度报告模版等 |
| 课程名称、代码、学分学时、班级、学期、教师姓名等 | 建议提供 | 写入报告封面与基本信息 |
材料信息不全时按顺序处理:先询问教师;教师也不确定时,用第 9 步的联网检索找同类课程的参考做法,并向教师说明是参考值、需其确认。
只给得齐成绩表也能开工:大纲暂时拿不到时,AI 可先按成绩表跑一遍,把课程目标与权重留作草稿,等大纲到手再改 objectives.json 重算,已跑好的成绩数据不用重做。
五、成绩表格式的自适应能力(不同学校格式差异的处理)
工具内置多种自适应机制,遇到以下情况无需教师改动成绩表:
- 多工作表自动遍历:preview 会遍历工作簿的每一张工作表(而不是只看第一张),自动区分有效成绩数据表与无用表(空白表、只有表头的模板占位表、说明页等),无用表自动清洗跳过;不指定 sheet 时也会自动选用有效数据表,并在输出中报告每张表的判定结果;
- 表头不在第一行(学校模板常有标题行、合并行):自动探测表头行,也允许在 mapping.json 用 header_row 手工指定;
- 表头下方的权重行 / 单点满分行(如"权重 0.6 0.4…"、"单点满分 100 100…10"):自动识别并读取各列满分与权重,避免把小分值环节(如满分 10 的口试)误按 100 分计算;
- 列名写法各异(全角/半角括号、空格、"平时(30%)"等):列名模糊匹配,并且会自动去掉列名末尾的括号说明("期末考试(150分制)"记为"期末考试"、"实验报告(等级)"记为"实验报告"),报告里的环节名干净统一;
- 等级制成绩(优/良/中/及格/不及格):自动换算为百分制(优95 良85 中75 及格65 不及格50),可在 mapping.json 用 grade_words 覆盖;
- 不同满分制(100 分、150 分、10 分口试等):可从列名或"单点满分"行自动识别,也可在 full_scores 手工指定;等级制列的满分填 grade;
- 一份表多个班级:识别班级列后自动分班统计,报告含分班达成情况;
- 表尾有平均分/最高分等汇总行:自动跳过;
- 多工作表:preview 会列出全部工作表,也可用 sheet 或 sheet_index 指定。
六、完整演示(照抄即可跑通)
下面这套命令 AI 助手可以原样执行一遍,教师不必自己敲。用技能内置的示例数据,从头到尾跑通:
1) python scripts/main.py doctor
→ {"ok": true, "message": "环境自检通过,可以开始使用"}
2) python scripts/main.py sample --data
→ 得到 示例成绩表.csv、mapping.json、objectives.json(供对照格式)
3) python scripts/main.py preview --file "示例成绩表.csv"
→ 自动识别结果:表头在第 3 行、三个考核环节、期末 150 分制、实验报告是等级制
4) python scripts/main.py map --file "示例成绩表.csv" --out scores.json
→ {"ok": true, "student_count": 30, "items": ["平时成绩","实验报告","期末考试"], ...}
(只给成绩表即可,列、满分、表头行全部自动识别,不需要先写 mapping.json)
5) python scripts/main.py check --scores scores.json --objectives objectives.json
→ 逐条列出:人数、缺考、权重之和是否等于 1、有没有成绩超过满分、学期填没填
6) python scripts/main.py calc --objectives objectives.json --scores scores.json --out results.json
→ 各课程目标达成度、总体达成度、是否达到阈值
7) python scripts/main.py report --results results.json --out "课程目标达成情况评价报告.docx"
→ 生成 Word 报告,同时自动生成一个同名的图表数据 Excel
8) python scripts/main.py report --results results.json --type summary --out "课程总结.docx"
→ 换成课程总结;只想出图表时用 charts 命令
跑完第 7 步,工作目录里就有:一份可直接打印签字的 Word 报告 + 一份图表可自行修改的 Excel。
七、标准工作流程
所有命令在技能目录下执行,用系统可用的 python 或 python3;命令一律由 AI 助手代跑,教师不需要接触命令行。
第 0 步 教师想先看效果(可选)
技能内置了示例报告与示例成绩数据(以 JSON 文本形式存放,需要时还原):
- 想看报告长什么样:运行
python scripts/main.py sample --report attainment(还原"课程目标达成情况评价报告"示例)或--report summary(还原"课程总结"示例),得到 docx 后交给教师打开查看; - 想看真实的成绩表 / 达成度计算表格式:运行
python scripts/main.py sample --form grades(还原成绩表样例:表头下方带权重行与单点满分行、两个班级)或--form calc(还原达成度计算表样例:多工作表、模板占位数据),再用 preview 演示自动遍历与清洗效果; - 想看图表数据 Excel 长什么样:运行
python scripts/main.py sample --form charts,还原"示例_图表数据.xlsx"(数据表 + 原生 Excel 图表),向教师演示"改数据 → 图表自动更新 → 复制粘贴回 Word"的用法; - 教师信息不足、想先看完整效果:运行
python scripts/main.py sample --case rl200还原内置的 200 人虚拟完整案例做演示(含全流程演示与只看成品两种用法),具体操作与注意事项见内置资料 templates 中的 sample_case200_演示指引(运行python scripts/materials.py templates查看); - 想了解成绩表怎么准备:运行
python scripts/main.py sample --data,会还原示例成绩表(csv)和 mapping.json、objectives.json,供教师对照格式; python scripts/main.py sample --list可查看全部示例清单。
示例中不出现学校名称与学院名称,学生学号统一以 26**** 形式脱敏显示。
第 1 步 环境自检
运行 python scripts/main.py doctor。输出 ok 为 false 时,用通俗中文向教师解释其中的 error 和 hint 字段。排查工作全部由 AI 承担,教师不需要做任何技术排查。
第 2 步 查看成绩表并确认结构
运行 python scripts/main.py preview --file "成绩表.xlsx"。对 Excel 文件会遍历每一张工作表:
- scan:每张表的判定结果(data=有效成绩数据,附 suggested_mapping;placeholder=模板占位;empty=空白;other=说明页等无关表)与自动跳过原因;
- recommended_sheet:自动推荐使用的有效数据表;
- preview / suggested_mapping:选中表的前几行内容与自动识别结果。
把自动识别结果念给教师确认:选用了哪张工作表、每个考核环节对应哪列、各环节满分与权重、等级制换算是否符合学校规定。
第 3 步 编写两个配置文件(AI 代写,教师只确认)
参照内置模板(运行 python scripts/materials.py templates 查看 templates 资料),在工作目录写两个 JSON 文件。所有字符串必须是纯文本:不要出现 Markdown 星号、井号,也不要在字符串里用换行符,多条内容用数组表达。
mapping.json:列标题映射(学号、姓名、班级 + 各考核环节)、满分、表头行号。多数情况可以不用写:第 4 步直接用map --file 成绩表.xlsx即可自动识别;只有在自动识别不准、或想指定某几列时才需要写这个文件,建议加"auto": true,工具会自动探测并只补充手工未覆盖的列。objectives.json:课程基本信息(名称、代码、性质、学分、学时、开课单位、专业、年级、班级、学期、教师、考核方式,能提供多少写多少)、课程目标(desc 目标描述、grad_requirement 支撑的毕业要求指标点)、每个目标下各考核环节权重(各目标内权重之和必须等于 1)、可选的 objective_weights(各目标在课程中的权重)、达成阈值 threshold(默认 0.65,务必与教师确认)。term(学期)可留空:calc 会按当前日期自动推算——当年 9 月至次年 2 月为"当年-次年学年度"第 1 学期,当年 3 月至 8 月为"前一年-当年学年度"第 2 学期;并在结果的 term_confirm 字段给出推算学期与备选学期,必须念给教师确认后再生成报告(报告常在下一学期开学后补写,不能想当然)。
权重信息在大纲中找不到时,先与教师讨论确定;或按第 9 步检索参考值。
确认要一次问完:把需要教师拍板的事项(学期、各目标权重、达标线、是否剔除缓考)合并成一次提问;教师说"按默认来"就直接采用自动识别结果出初稿,再按需微调,不要来回问。
第 4 步 清洗成绩数据
- 常规做法(推荐):
python scripts/main.py map --file "成绩表.xlsx" --out scores.json - 需要精确指定列时:
python scripts/main.py map --mapping mapping.json --out scores.json
输出会报告:学生人数、缺考/旷考人数、等级换算人数、跳过的汇总行数。若提示找不到列,输出中会列出成绩表里实际存在的列标题,与教师核对后改配置重跑;这一步重跑不会影响别的文件。
第 5 步 提交前核对(建议,赶时间可跳过)
运行 python scripts/main.py check --scores scores.json --objectives objectives.json。
它会把这些容易算错的地方逐条列出来:学生人数、缺考人次、成绩有没有超过该环节满分、学号有没有重复、每个目标下权重之和是不是等于 1、权重里写的环节名和成绩表对不对得上、达标线合不合理、学期填没填。
输出里"必须处理"的项会附一句"怎么办",照着改完从出错的那一步重跑即可。本命令只读不改,不会动任何已有文件。
第 6 步 计算达成度
运行 python scripts/main.py calc --objectives objectives.json --scores scores.json --out results.json。
向教师逐项汇报:每个课程目标的达成度、是否达到阈值、总体达成度、分班情况。若输出含 warnings 字段(如权重之和不为 1),向教师说明并确认处理方式。
若输出含 term_confirm 字段(objectives.json 未填学期时出现),必须以提问方式向教师确认开课学期:报出按当前日期推算的学期与备选学期(报告常在下一学期开学后补写),教师确认后把所选学期写入 objectives.json 的 term 字段并重跑 calc;生成报告前学期必须已确认。
第 7 步 撰写报告分析与建议(报告质量的关键)
先与教师讨论,把以下字段写入 results.json(参照 templates 资料中 results_json_报告前补充 的说明,运行 python scripts/materials.py templates 查看):
overall_analysis:总体达成情况一段分析;analysis:逐个课程目标的分析(结合得分率、分布数据,具体到教学环节);teaching_design:教学及考核设计说明(课程总结用);effect_analysis:教学效果分析(课程总结用,结合分布与散点图分析能力形成弱项的具体原因);previous_problems/previous_measures/previous_effects:上次教学存在的问题、本次采取的措施、改进效果(三者要一一对应,体现"依据评价结果持续改进",这是工程认证的重点);problems:本次教学存在的问题及原因;suggestions:整改措施及建议(3 至 5 条,具体可行)。
第 8 步 生成 Word 报告(两种类型,用 --type 选择)
- 达成情况评价报告(默认):
python scripts/main.py report --results results.json --out "课程目标达成情况评价报告.docx"
结构:封面 → 1 课程基本信息(专业性质课/学分/线上学时/线下学时/任课教师名单/课程组/上课学期/上课班级)→ 2 评价依据 → 3 评价标准(表1 课程目标评分等级)→ 4 过程报告(目标与毕业要求指标点对应、测点统计原始表、表2 中间计算过程,多班级时随机抽 1 个班展示)→ 5 结果报告(表3 达成情况评价表、达成度柱状图、各班级达成情况、表4 结果报告含分析与反思)→ 6 达成度分布与成绩统计(个体达成度分布、总成绩分布、个体散点图、各考核环节统计)→ 7 持续改进(上次问题/本次措施/改进效果/本次问题/整改建议)→ 核心评价人签名(至少 2 人手写签字)、课程负责人审核意见、开课系负责人审核意见 → 附录成绩明细表。达成标准按 65 分掌握,达成度同时给出小数与折算分。 - 课程总结:
python scripts/main.py report --results results.json --type summary --out "课程总结.docx"
结构:开课信息表 → 1 教学及考核设计 → 2 课程目标达成度分析(表1 各环节得分与各目标达成度 + 柱状图 + "由表1可以看出……")→ 3 教学效果分析(表2 总成绩分布、表3 各环节统计、样本个体散点图)→ 4 上次教学存在的问题及改进效果(问题/措施/效果)→ 5 本次教学存在问题及整改措施或建议 → 课程负责人签名、开课系负责人签名、日期。
生成后把 Word 文件交给教师并简要说明各部分内容;多课堂时提醒教师按各课堂实际情况分别补充分析。
同时交付图表数据 Excel:运行 report 命令时会在同目录自动生成同名 .xlsx 文件(如"课程目标达成情况评价报告.xlsx"),内容为图表背后的数据表与对应的原生 Excel 图表:各课程目标达成度(含红色虚线达成标准线)、个体达成度分布、总成绩分布、个体达成度散点图、各考核环节得分率、班级达成情况。也可以单独生成或换位置保存:python scripts/main.py charts --results results.json --out 图表数据.xlsx。把该 Excel 一并交给教师并说明:报告里的图是固定图片,如需微调(改数字、改颜色、改样式),在 Excel 中修改数据后图表自动更新,选中图表复制、到 Word 里粘贴即可替换。
第 9 步 联网检索(信息缺失时,可选)
运行 python scripts/main.py fetch --search "课程名 课程目标 达成度 权重 教学大纲" 获取参考信息;也可以用 --url 网址 直接读取某个网页正文。若检索失败(输出 ok 为 false),改用你自带的联网搜索能力,并把信息来源告诉教师。
这一步是可选的:不联网也能完成从算达成度到出报告的全部流程;联网只是用来查权重等参考值,查不到也不影响主流程。
八、断点续做与运行稳定性
- 每一步都有存档:成绩清洗结果落在
scores.json、计算结果落在results.json、配置落在mapping.json与objectives.json。任何一步报错或需要调整,改完从那一步重跑就行,前面已经做好的文件不会丢、不用从头再来。 - 不需要重试特技:命令都是一次性的本地处理,失败了看清提示、改掉原因、再跑一次即可;不存在"卡住要等"的状态。
- 主流程完全离线:从读成绩表到出报告,全程不访问网络,断网、网络不稳都不影响使用,也不会因为网络问题中断。
- 只有第 9 步可选联网:即便联网检索失败,也会自动改用 AI 自带的搜索能力继续,不会卡住流程。
- 出错不会闪退:所有脚本都被统一包装,出错时输出一段中文 JSON(error + hint + 怎么办),教师看到的是人话不是代码。
- 成绩数据不出本机:全部计算在教师自己的电脑上完成,不上传任何服务器。
九、请避免这样做(反模式清单)
下面这些做法会导致算错或返工,AI 助手遇到时要主动提醒教师:
| 不要这样做 | 会出什么问题 | 应该这样做 |
|---|---|---|
| 一边用 Excel 打开成绩表,一边让它算 | 文件被占用,读不到内容 | 先关闭 Excel / WPS,再让 AI 跑 |
| 把 .xls 老格式直接改名成 .xlsx | 打不开或读出来是乱码 | 用 Excel 或 WPS 另存为真正的 .xlsx 或 .csv |
| 同一目标下各环节权重加起来不等于 1 | 达成度整体偏大或偏小,报告数字失真 | 配完权重跑一次 check,让它逐条验算 |
| 权重里写"期末考试",成绩表列名叫"期末" | 对不上列,直接报错 | 环节名以成绩表的列名为准;拿不准先跑 preview 看识别结果 |
| 150 分制的期末按 100 分算 | 得分率被压低,达成度虚低 | 让工具从"单点满分"行或列名自动识别,必要时在 full_scores 里写明 |
| 等级制列(优/良/中)当作普通数字列 | 整列读不出来或按 0 分计 | 该列的满分填 grade,工具按学校口径换算 |
| 直接改 Word 里的数字,然后又重新生成报告 | 上一版的手改会被覆盖,白改一场 | 要改就改 results.json 里的分析文字再重新生成;纯数字微调直接在 Word 里定稿并另存 |
| 删掉或改名 scores.json、results.json | 后面的步骤读不到,要从头再跑 | 这几个文件留着,它们是断点续做的依据 |
| 跳过学期确认就出正式报告 | 报告学年学期写错,交上去要重做 | 看到 term_confirm 一定念给教师确认后再生成 |
| 把 AI 写的分析文字原样上交 | 可能出现与本校口径不符甚至有幻觉的表述 | 分析文字只当草稿,教师按本校习惯改写后再提交 |
| 把示例里的虚构数据当成真实结果引用 | 数据完全虚构,进了正式材料就是事故 | 示例仅供看格式;示例里的学校、学院、学号都不真实 |
| 手工删掉表头行、权重行、汇总行再给 AI | 多余,还可能删错行 | 直接给原始表,工具会自动识别并跳过这些行 |
| 一个班一份报告时混用别班的成绩表 | 张冠李戴 | 确认 preview 选中的工作表与班级列无误再往下走 |
| 为了让达成度"好看"去改权重 | 数据失真,认证时反而出问题 | 权重以教学大纲为准,改动要有依据并留存说明 |
十、交付前自查清单
把报告交给教师前,AI 助手逐项确认(前 6 项可以跑 check 命令核对):
- 学生人数与教务系统一致,没有重复学号、没有整列 0 分;
- 每个课程目标下各环节权重之和等于 1;
- 权重里写的环节名与成绩表完全对得上;
- 满分设定与学校一致(尤其 150 分制、10 分制的小环节);
- 缺考 / 缓考的口径与学校规定一致;
- 上课学年学期已经教师确认;
- 达成阈值与学校达标线一致;
- "上次问题 → 本次措施 → 改进效果"三者一一对应;
- 报告里的数字与 results.json 完全一致(报告数字直接取自计算结果,可自行复核);
- 分析、问题、措施三段已经教师审阅改写,不是 AI 原稿直接上交;
- 需要手写的签字栏(核心评价人至少 2 人)已留空待签;
- 图表数据 Excel 一并交付,并已说明"改数据图表自动更新、复制粘贴回 Word"的用法。
十一、沟通与容错约定
- 每个脚本的输出都是 JSON。ok 为 true 时向教师汇报业务结果;ok 为 false 时,读出 error、hint、detail 字段,用生活化中文解释问题与解决办法,绝不原样展示错误代码或堆栈。
- 教师问及常见问题时(什么是达成度、权重怎么定、成绩表怎么准备、等级制怎么算等),参考
faq.md用通俗中文作答。 - 报告中的分析与建议要用数据说话、具体可行,避免空话套话;"上次问题—本次措施—改进效果"必须前后对应,这是能否通过工程认证审核的关键。
- 全部计算在教师本机完成,成绩数据不会上传到任何服务器;可主动向教师说明这一点。
- 技能内置的评价依据、评分等级、示例文本均为通用占位内容。生成配置与报告时只写入教师本人提供的信息,不要引入任何真实院校名称、教师姓名、学号等隐私内容。
- 信息脱敏只适用于技能内置的示例(示例报告、示例成绩数据、模板样例中的学校/学院名称与学号)。教师提供了自己的真实数据时,生成的配置、计算结果与报告中必须原样沿用教师提供的信息,不得做任何脱敏或替换。
十二、常见错误处理(速查表)
出错时 AI 助手按下表对号入座,用中文转述给教师;排查由 AI 完成,教师只负责按提示做事。
| 现象 | 通常原因 | 一句话解决办法 |
|---|---|---|
| 找不到文件 | 路径写错、文件被移动、扩展名不对 | 确认文件就在工作目录,名字和扩展名(.xlsx)写对 |
| 文件正在被占用 | 成绩表正被 Excel / WPS 打开 | 关闭 Excel / WPS 后重跑 |
| 文件格式不正确 | 把 .xls 改名成 .xlsx | 用 Excel 或 WPS 另存为真正的 .xlsx 或 .csv |
| 找不到这些列标题 | 列名对不上、表头行判断错了 | 按提示里列出的实际列名改配置,或先跑 preview 看自动识别结果 |
| 没有读到任何学生成绩 | 表头行号不对 | 用 preview 确认表头在第几行,改 header_row 后重跑 |
| 遍历了全部工作表,没有找到有效数据 | 数据在说明页或模板占位表里 | 用 sheet 或 sheet_index 指定成绩所在工作表 |
| 有 N 处无法识别的成绩 | 出现"优秀""合格"等学校自定义等级 | 在 mapping.json 的 grade_words 里补上这套等级与分值 |
| 权重之和不等于 1 | 权重抄漏或抄错 | 跑 check 定位是哪个目标,补齐到 1 再重算 |
| 达成度明显偏高或偏低 | 满分制填错(150 分制按 100 算)、缺考按 0 计 | 核对 full_scores 与缺考口径 |
| 报告上的学期不对 | 未填 term,按当前日期推算 | 把确认后的学期写进 objectives.json 重跑 calc |
| 命令没反应 / 提示参数不对 | 命令敲漏了参数 | 按第六节的演示原样重敲;或只给 --file 让工具自动识别 |
| 依赖或环境问题 | 极少数电脑缺组件 | 跑 doctor 看自检结果;AI 助手会自动补装所需组件,教师只需同意权限请求 |
开发者已尽可能地将 Skill 所需依赖的工具内置在 Skill 中,在国内环境运行良好。如万一本Skill在运行中遇到问题时,WorkBuddy等AI工具会自动尝试帮助用户排除,会自动安装所需依赖的插件或工具,无需用户通过编写代码等方式干预。用户只需同意WorkBuddy的权限请求即可。
十三、文件清单
| 文件 | 作用 |
|---|---|
| scripts/main.py | 命令入口(doctor / preview / map / check / calc / report / charts / sample / fetch);report 用 --type 选择 attainment 或 summary,默认同时生成图表数据 Excel |
| scripts/parse_scores.py | 读取并清洗成绩表(多工作表遍历清洗、格式自适应) |
| scripts/check_data.py | 提交前核对成绩数据与权重(只读,不改任何文件) |
| scripts/calc_achievement.py | 计算各课程目标达成度与全部统计数据 |
| scripts/report_builder.py | 生成 Word 报告(达成情况评价报告 / 课程总结两种) |
| scripts/excel_charts.py | 生成图表数据 Excel(数据表 + 原生 Excel 柱状图 / 阈值折线 / 散点图,纯标准库) |
| scripts/chartgen.py | 纯标准库柱状图与散点图生成(PNG) |
| scripts/sample.py | 从内置 JSON 还原示例报告、示例成绩数据与 200 人虚拟案例 |
| scripts/fetch_missing.py | 联网检索参考信息(可选,不联网也能用) |
| scripts/xlsx_reader.py | xlsx 读取组件(纯标准库) |
| scripts/docxgen.py | Word 生成组件(纯标准库,支持表格与图片,正文与表格宋体、标题黑体) |
| scripts/error_helper.py | 统一的中文报错处理 |
| scripts/materials.py | 资料查看工具(--list 列出内置资料;<资料名> 显示内容;--out 另存为文件) |
| scripts/_materials.py | 内置资料读取组件(各脚本按名称取用 references 下的配置、模板与示例) |
| references/config.json | 计算规则与报告默认配置(区间、等级换算、及格线等) |
| references/footer.json | 随产物输出的「说明与使用提示」文字(Word 报告末尾与图表 Excel 说明页引用) |
| references/templates.json | mapping.json / objectives.json / 报告内容字段模板(用 python scripts/materials.py templates 查看) |
| references/sample_reports.json | 示例报告(运行 sample 命令还原为 docx) |
| references/sample_forms.json | 真实格式的成绩表与达成度计算表模板样例(运行 sample 命令还原为 xlsx;人名均为化名、班级为示例名) |
| references/sample_data.json | 示例成绩数据与配套配置(运行 sample 命令还原) |
| references/sample_case200.json | 200 人虚拟完整案例(成绩表、配置、分析文字与三份成品演示文件,运行 sample --case rl200 还原;数据完全虚构) |
| faq.md | 常见问题解答 |
references 目录下的资料统一由 scripts/materials.py 读取;需要查看其中某一项的完整文本时,运行 python scripts/materials.py <资料名>,不要直接打开该文件。
十四、常见问题解答(FAQ)
一、什么是课程目标达成度?
课程目标达成度是衡量学生"学得怎么样"的一个 0 到 1 之间的数值。比如某目标达成度 0.78,表示学生在这项目标上的整体表现达到了满分的 78%。学校通常会定一个达标线(阈值),常见是 0.65 或 0.7,达到线就算"达成",低于线就要分析原因、提出改进。
二、我需要准备哪些材料?
1. 成绩表(必需):Excel 的 .xlsx 或 .csv 文件,里面有学号、姓名和各考核环节的成绩(比如平时成绩、期中考试、期末考试各一列)。
2. 教学大纲(必需):里面有课程目标(目标 1、目标 2……)、各考核环节的权重(比如平时 30%、期末 70%),以及每个课程目标支撑的毕业要求指标点。
3. 人才培养方案(建议提供):用来核对课程目标与毕业要求指标点的对应关系。
4. 课程名称、代码、学分学时、班级、学期、教师姓名等信息:会写进报告封面和基本信息,更完整。
三、我们学校的成绩表格式和别人不一样,能用吗?
能。工具内置了多种自适应能力:表头不在第一行(模板标题行)、列名带括号百分号、等级制成绩(优/良/中/及格)、期末 150 分制、一份表里有多个班级、表尾有平均分汇总行、多个工作表等情况都能自动处理,一般不需要您修改成绩表。少数特殊情况,AI 助手会在确认环节和您核对。并且像"期末考试(150分制)""实验报告(等级)"这类列名,工具会自动去掉括号里的说明,报告里的环节名就是干净的"期末考试""实验报告"。
四、等级制成绩(优、良、中)怎么计算?
自动按 优=95、良好=85、中等=75、及格=65、不及格=50 换算成百分制。如果学校有规定的对照分值(比如"合格=80"),告诉 AI 助手,它会在配置里调整后重新计算。
五、学生缺考、缓考怎么处理?
缺考、旷考、免修、作弊等默认按 0 分计入,并在报告里单独统计人数。缓考等特殊政策如需剔除,请提前与 AI 助手说明,报告的问题分析部分也会专门说明缺考情况。
六、我的成绩表只有"总评"一个成绩,能用吗?
能用。把总评作为唯一的考核环节,每个课程目标的权重都写成 1 即可。但要提醒:这样算出的各目标达成度会相同,报告的分析价值有限,建议尽量提供分项成绩。
七、"权重"是什么?怎么确定?
权重就是每个考核环节在某项目标里占的比例。比如课程目标 1 主要靠期末考试考查、平时作业辅助,那么可以定为期末 0.7、平时 0.3。注意:同一个目标下各环节权重加起来必须等于 1。权重一般来自教学大纲;大纲里没写就和教研室商量,或让 AI 助手联网查同类课程的做法作参考。
八、报告里都有什么内容?能达到教务处的要求吗?能生成哪几种报告?
可以生成两种报告(告诉 AI 助手要哪一种,或两种都要):
1)课程目标达成情况评价报告(默认):封面、课程基本信息、评价依据、评价标准(课程目标评分等级表)、过程报告(课程目标与毕业要求指标点对应、测点统计、中间计算过程,多班级时随机抽一个班展示)、结果报告(课程目标达成情况评价表、达成度柱状图、各班级达成情况、分析与反思)、达成度分布与成绩统计(个体达成度分布、总成绩分布、个体散点图、各环节统计)、持续改进(上次问题—本次措施—改进效果—本次问题—整改建议)、核心评价人签名(至少 2 人手写签字)、课程负责人与开课系负责人审核意见栏、附录学生成绩明细表。
2)课程总结:开课信息表、教学及考核设计、课程目标达成度分析(含柱状图与"由表可以看出……"分析)、教学效果分析(总成绩分布、各环节统计、样本个体散点图)、上次教学存在的问题及改进效果、本次教学存在问题及整改措施或建议、课程负责人与开课系负责人签名及日期。
其中"分析、问题、措施"三部分由 AI 助手结合数据与您讨论后撰写,请务必审阅修改,确保符合本校表述习惯。达成标准默认按 65 分掌握,可在配置中改成学校规定值。
九、多个班级怎么办?
如果成绩表里有一列班级信息,工具会自动分班统计,报告含分班达成情况对比;也可以每个班一份成绩表分别生成报告。
十、报告生成后可以修改吗?
可以。生成的是标准 Word 文档(.docx),您可以直接修改任何内容、添加学校要求的落款或盖章页。注意:如果您又重新生成了一次报告,上一次在 Word 里的手改会被覆盖,所以定稿后请另存一份。
十一、运行时报错了怎么办?
直接把 AI 助手给您的提示告诉它,它会用通俗语言解释问题并给出解决办法。常见情况就几种:文件路径不对、文件正被 Excel 打开、列名对不上、用了 .xls 老格式(请用 Excel 或 WPS 另存为 .xlsx)。按提示处理后重新运行即可。
十二、成绩数据安全吗?
所有计算都在您自己的电脑上完成,成绩数据不会上传到任何服务器。只有当您主动要求联网查参考信息时,才会访问互联网,且不会发送您的成绩数据。
十三、可以用在其他 AI 工具里吗?
可以。本技能只依赖电脑上已安装的 Python(3.8 及以上),不依赖任何第三方库。在支持执行 Python 脚本的 AI 工具(如 WorkBuddy)中都能使用,按 SKILL.md 的流程操作即可。
十四、我想先看看报告长什么样,可以吗?
可以。技能内置了示例报告(课程目标达成情况评价报告、课程总结各一份)和示例成绩数据。让 AI 助手运行 sample 命令即可把示例还原成 Word 文件和成绩表文件查看;示例中不出现学校名称与学院名称,学生姓名均为化名、学号统一以 26**** 脱敏显示,仅供参考格式。另外技能还内置了一套完全虚构的 200 人完整案例(含成绩表、配置和用它生成的报告、课程总结与图表数据 Excel),教师提供的信息不足时,可以让 AI 助手运行 sample --case rl200 还原演示。
十五、报告里的字体和排版符合要求吗?
符合常规中文公文排版:正文和表格为宋体(表格为五号字,正文为小四号),标题为黑体加粗,1.5 倍行距,A4 页面。如学校有特殊要求(如固定行距、页边距、页码),生成后直接在 Word 里调整即可。
十六、我的 Excel 有好几个工作表(Sheet),都能处理吗?
能。工具会遍历工作簿里的每一张工作表,自动区分哪些是有效的成绩数据、哪些是空白表、模板占位表或说明页,无用的表自动跳过,不会误读。识别结果会先念给您确认,也可以在配置里指定用哪一张表。
十七、听说有现成的成绩表和达成度计算表样例可以看?
有。技能内置了两份真实格式的 Excel 样例:一份是带权重行和单点满分行的多班级成绩登记表,一份是多工作表的达成度计算表。让 AI 助手运行 sample 命令即可还原查看;样例中的学生姓名都是化名、班级均为示例名称,请替换成真实数据后使用。
十八、报告上的学年和学期是怎么确定的?
如果配置里填了上课学期,就按填的来。如果没填,工具会按当前日期自动推算:当年 9 月至次年 2 月算"当年-次年学年度"第 1 学期(如 2026 年 9 月至 2027 年 2 月都是 2026-2027 学年第 1 学期);当年 3 月至 8 月算"前一年-当年学年度"第 2 学期(如 2026 年 3 月至 8 月都是 2025-2026 学年第 2 学期)。考虑到不少老师是下一学期开学后才补写报告,工具会把推算结果和备选学期一并列出,请务必确认后选用,以免报告学期写错。
十九、报告里的图表可以自己调整吗?
可以。每次生成报告时,会同时生成一个同名的"图表数据"Excel 文件(也可以让 AI 助手单独生成)。里面有各课程目标达成度、达成度分布、总成绩分布、个体达成度散点、各考核环节得分率、班级达成情况等数据表,每张表右侧都有原生 Excel 图表。您在 Excel 里修改数据后图表会自动更新;选中图表复制,再到 Word 里粘贴,就能替换报告中的图。改完后记得 Word 正文里对应的数字也要同步修改。
二十、我不会用命令行,是不是用不了?
完全用得上。所有命令都由 AI 助手代跑,您只需要把成绩表和大纲交给它、用大白话说明要什么。您自己不需要打开任何"黑窗口",也不需要记任何命令。
二十一、断网或者网络很差的时候能用吗?
能。从读成绩表到出报告,全程都在您自己的电脑上完成,不访问网络,断网也不影响。只有"查同类课程的权重参考"这一步需要联网,而且完全可以跳过。
二十二、中途出错或者想改点东西,要从头再来吗?
不用。每一步的结果都存成了文件(成绩是 scores.json、计算结果是 results.json),哪一步要改就从哪一步重跑,前面做好的都还在。比如只是分析文字要改,改完直接重新生成报告就行,成绩不用重算。
二十三、怎么知道算出来的数有没有算错?
让 AI 助手运行一次 check 命令,它会把学生人数、缺考人次、成绩有没有超过满分、每个目标的权重之和是不是等于 1、环节名对不对得上、学期填没填,逐条列出来给您看;有问题的会写明"怎么办"。报告里的数字直接取自计算结果,也可以用 results.json 自行复核。
二十四、有哪些做法是容易踩坑、要避免的?
最常踩的几个:一边开着 Excel 一边让它算(会读不到文件);把 .xls 直接改名成 .xlsx(打不开);同一目标下权重加起来不等于 1(达成度整体失真);150 分制按 100 分算(达成度虚低);跳过学期确认就出正式报告(学期写错要重做);把 AI 写的分析原样上交(可能有不符合本校口径的表述)。完整的避坑清单见第九节。