--- name: 课评生成 description: 快速生成个性化课评,你只需提供学生本节课的表现,自动匹配班级风格生成高质量课评 type: skill --- # 🎯 课评生成器技能包 ## 🌟 功能说明 本技能专为穹狼科创编程课程设计,**使用超简单:你只需要告诉我学生的基本信息和本节课表现,我就能自动生成符合班级风格的个性化课评**。 ✅ 支持四大课程:C++/AICODE/Kitten/体验课 ✅ 自动匹配班级专属风格:AICODE03温暖鼓励型/K4温和鼓励型/CSP03要求型/体验课转化型 ✅ **CSP班级必须查询OJ做题数据**(自动调用API获取A包答题情况) ## 💡 使用方式 ### 方式一:交互式问答(推荐) 输入 `/课评生成`,我会使用**选择题**的方式问你所有问题: ``` 📝 问题1:课堂录音文件路径是什么?(.docx格式) - [ ] 稍后提供 - [ ] 还没有录音 📝 问题2:这是哪个班级的课? - [ ] AICODE03橙子周六1900(需要作品文件夹) - [ ] AICODE03橙子周日0845 - [ ] AICODE03橙子周日1400 - [ ] CSP03橙子周六0830(需要OJ数据) - [ ] CSP03橙子周六1400 - [ ] CSP03橙子周日1030 - [ ] K4橙子周五1900 - [ ] K4橙子周日1900 📝 问题3:这是第几课?题目是什么? - [ ] 稍后提供 - [ ] 还不确定 📝 问题4:作品文件夹路径?(仅AICODE班需要) - [ ] 稍后提供 - [ ] 不需要(CSP/K4班) ``` 你选择或填写完所有问题,我就会自动完成整个课评生成流程! ### 方式二:直接提供信息 如果你已经知道所有信息,可以直接告诉我: ``` 课堂录音文件:第11课录音转写.docx 班级:AICODE03橙子周六1900 课次:第11课 题目:《AI训练师》 出勤:来了陈嘉博、王子墨,请假谭俊研 作品文件夹:D:\作品\第11课 ``` --- ## 🔄 自动完成的工作 你提供信息后,我会自动完成: ### 第1阶段:课评准备 1. 获取API出勤数据 2. 使用python-docx读取录音转写文件 3. AI分析录音文本,识别"发言人1,2,3"对应的学生 4. **AICODE班**:查看作品文件夹,分析每个学生作品的创意和亮点 5. 读取课程计划,获取5个知识点 6. 读取每个学生的画像 7. **CSP班**:调用OJ API查询A包做题数据 ### 第2阶段:课评生成 1. 读取班级风格指南 2. 为每个学生生成个性化课评(约200字) - 引用录音中的具体例子 - **AICODE班**:描述作品创意和亮点 - **CSP班**:包含OJ做题数据 3. 生成班级总结 4. 展示给你确认 ### 第3阶段:课评收尾 1. 课评质检(CSP班调用证据审计员) 2. 丰富度评分(告诉你每个学生的分数) 3. 保存归档(个人课评 + 周汇总 + 班级总结) 4. 更新学生画像 5. 输出完成报告 --- ## 📂 从课堂录音批量生成课评(推荐工作流) 橙子提供课堂录音转写文件(`.docx`格式),文件路径会直接告诉我,我会自动完成以下流程: ### 🤖 交互式问答流程 当橙子输入 `/课评生成` 时,使用 **AskUserQuestion** 工具一次性问完所有问题: **第1轮:收集基本信息** - 问题1:录音文件路径(文本输入) - 问题2:班级(单选:AICODE03/CSP03/K4的各个时间段) - 问题3:课次和题目(文本输入) - 问题4:出勤情况(单选:全部到齐/有人请假) **第2轮:根据班级类型追问** - 如果是AICODE班:追问作品文件夹路径 - 如果是CSP班:无需追问(OJ数据自动获取) - 如果是K4班:无需追问 **收集完成后**,自动调用三个阶段的agent完成课评生成。 ### 🔄 智能体流水线模式 课评生成已拆分为3个独立智能体,按流水线方式协作完成: ``` ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ │ 课评准备阶段 │ ──→ │ 课评生成阶段 │ ──→ │ 课评收尾阶段 │ │ (Agent 1) │ │ (Agent 2) │ │ (Agent 3) │ └─────────────────┘ └─────────────────┘ └─────────────────┘ │ │ │ ▼ ▼ ▼ 收集所有数据 生成课评内容 质检+保存+归档 • API授课数据 • 读取风格指南 • 课评质检 • 录音解析(AI分析) • 读取课评模板 • 保存课评 • 课程计划匹配 • 生成个人课评 • 保存班级总结 • 学生画像读取 • 生成班级总结 • 更新学生画像 • OJ数据获取 • 质量自检 • 更新学生画像 ``` **优势**: - 每个阶段职责清晰,便于调试和优化 - 可以单独重跑某个阶段(如只重跑质检) - 阶段间数据传递标准化,减少错误 --- ### 输入文件格式 橙子提供的课堂录音转写文件为 `.docx` 格式,包含整节课的完整录音转写文本。 **录音转写文件特点**: - 自由文本格式,包含老师和学生的对话 - 只有"发言人1"、"发言人2"、"发言人3"这样的标识,没有具体姓名 - 可能包含时间戳(如"[00:05:30]") - 内容为整节课的完整记录,需要AI分析识别发言人 **示例内容**: ``` [00:00:15] 发言人1:好,同学们,今天我们来学习循环嵌套... [00:02:30] 发言人2:老师,我有个问题... [00:05:45] 发言人1:问得很好,大家注意看... [00:10:20] 发言人3:老师,我这个程序运行不出来... ``` **AI识别说明**: - 发言人1通常是老师(讲解知识、提问、点评) - 发言人2、3等通常是学生(回答问题、提问、讨论) - 需要根据对话内容判断每个发言人对应的学生 **Word文档格式**: - 同样包含表格,记录学生姓名、出勤状况和课评描述 - 使用 `python-docx` 库自动读取,无需手动转换 ### 工作流程 ``` 获取API授课数据 → 读取录音转写(docx) → AI分析识别发言人 → 获取课程知识点 → 读取学生画像 → 润色生成 → 确认修改 → 课评质检 → 保存 ``` ### 0. 获取API授课数据(必须第一步执行) **⚠️ 这是强制步骤,必须在读取笔记之前执行!** 在开始处理任何课评之前,**必须先调用公司API获取橙子老师近期的授课数据**,用于: 1. 确认橙子老师实际带了哪些班级 2. 获取每个班级的**真实授课日期**(`teaching_date`),用于课评文件名 **执行命令**(Python): ```python import urllib.request import json from datetime import datetime, timedelta API_BASE_URL = "https://api.qonnwolf.com/api/v1" AUTHORIZATION = "Bearer <从.env文件读取>" # 计算最近7天的日期范围 end_date = datetime.now() start_date = end_date - timedelta(days=7) # 查询橙子老师的出勤数据 dates_to_query = [] current = start_date while current <= end_date: dates_to_query.append(current.strftime('%Y-%m-%d')) current += timedelta(days=1) results = [] for date in dates_to_query: url = f"{API_BASE_URL}/reports/teaching-schedule?teaching_date={date}" req = urllib.request.Request(url) req.add_header('Authorization', AUTHORIZATION) try: with urllib.request.urlopen(req) as response: data = json.loads(response.read().decode('utf-8')) for item in data['data']['items']: teacher = item.get('teacher_name', '') if '橙子' in teacher or '程城' in teacher: results.append({ 'teaching_date': item['teaching_date'], # API返回的真实授课日期 'class_name': item['class_name'], 'time': item['teaching_time_period'], 'lesson': item['lesson_name'], 'student_count': item['student_count'], 'attendance': item['attendance'], 'students': item.get('student_names', []) }) except Exception as e: print(f"查询 {date} 失败: {e}") # 输出结果 for r in results: print(f"日期:{r['teaching_date']} 班级:{r['class_name']} 时间:{r['time']} 课程:{r['lesson']}") ``` **返回数据说明**: | 字段 | 说明 | 用途 | |------|------|------| | `teaching_date` | API返回的真实授课日期 | **必须用此日期作为课评文件名中的YYYYMMDD** | | `class_name` | 班级名称 | 用于确认班级目录名 | | `time` | 上课时间段 | 用于确认班级(如19:00-20:30对应晚上班) | | `lesson_name` | 课程名称 | 用于匹配课程计划 | | `student_count` | 学生数 | 用于确认班级人数 | | `attendance` | 出勤统计 | 到课/请假/缺课人数 | | `students` | 学生名单 | 用于确认学生 | **日期规则(重要)**: - ✅ **必须使用API返回的 `teaching_date`** 作为课评文件名中的日期 - ✅ 如果笔记中的日期与API返回的 `teaching_date` 不一致,**以API为准** - ✅ 文件名格式:`{API返回的teaching_date}_课程编号-课次.md` **班级匹配规则**: 根据API返回的 `class_name` 和 `time` 匹配笔记中的班级: | API返回的class_name | 对应班级目录 | 识别依据 | |---------------------|-------------|----------| | AICODE03... | AICODE03橙子周六1900 / AICODE03橙子周日0845 / AICODE03橙子周日1400 | class_name含"AICODE03" + time判断 | | CSP03... | CSP03橙子周六0830 / CSP03橙子周六1400 / CSP03橙子周日1030 | class_name含"CSP03" + time判断 | | KITTEN04... | K4橙子周五1900 / K4橙子周日1900 | class_name含"KITTEN04" + time判断 | ### 1. 读取课堂录音转写文件 解析用户提供的课堂录音转写文件(`.docx` 格式): **使用python-docx库读取**: ```python from docx import Document def read_recording_docx(file_path): """读取课堂录音转写的docx文件""" doc = Document(file_path) content = [] for para in doc.paragraphs: text = para.text.strip() if text: content.append(text) return '\n'.join(content) # 使用示例 file_path = r"课堂录音转写文件路径" # 例如:第15课录音转写.docx recording_text = read_recording_docx(file_path) ``` **录音文本特点**: - 整节课的完整录音转写,包含老师和学生的对话 - 可能包含时间戳(如"[00:05:30]") - 可能包含说话人标识(如"老师:"、"学生:") - 内容为自由文本,不是结构化的表格 **AI分析提取学生表现**: 由于录音是自由文本格式,需要使用AI分析提取每个学生的表现信息: ```python # 分析提示词 analysis_prompt = f""" 分析以下课堂录音转写文本,提取每个学生的表现信息。 班级学生名单:{student_list} 请为每个学生提供: 1. 出勤状况:正常上课 / 请假 / 未到 2. 课堂表现摘要(100-200字): - 参与度如何 - 哪些知识点掌握得好 - 遇到什么问题 - 有什么亮点表现 录音文本: {recording_text} 请以JSON格式输出。 """ ``` > **日期规则**:批量流程中,所有日期(文件名 `YYYYMMDD`、授课日期)**统一以API返回的teaching_date为准**,不使用录音文件中的日期。 ### 2. 匹配课程计划 根据班级标题中的关键词匹配对应课程计划: | 班级标题关键词 | 课程计划路径 | 课程编号 | |---|---|---| | AICODE03 | `.claude/lesson/AICODE/课程计划.md` | AICODE03 | | CSP03 | `.claude/lesson/CSP03/课程计划.md` | CSP03 | | Kitten04 / K4 | `.claude/lesson/Kitten04/课程计划.md` | Kitten04 | 从课程计划中提取对应课次的: - **课程名称**(如《进制转换》) - **教学目标 5个知识点** > **重要**:教案中的"教学目标"5条直接作为课评的5个知识点,不得修改或编造。 ### 3. 读取学生画像 对每个学生,读取其个人画像档案: **路径**:`.claude/memory/class/[班级]/[姓名]/profile.md` ### 4. 润色生成课评 对录音中提取的**每一个学生**,根据出勤状况处理,确保每个人都有对应记录: | 出勤状况 | 处理方式 | 保存位置 | |---|---|---| | 正常上课 | 读取画像 + 润色表现摘要 → 生成完整课评 | 本班学生feedback目录 | | 请假 | 生成请假记录 | 本班学生feedback目录 | | 未上课 | 生成未到课记录 | 本班学生feedback目录 | | 补课-来自XX班 | 读取画像 + 润色表现摘要 → 生成完整课评 | **补课班级**的`补课/[姓名]/feedback/`目录 | **润色规则**(对正常上课和补课学生): - 保留录音中提取的所有事实(不能遗漏任何信息) - 根据学生画像调整语气和侧重(如内向学生多鼓励,活泼学生提专注) - 套用对应班级的固定开头(5个知识点)和结尾风格 - 将100-200字的表现摘要扩展为约200字的完整家长信格式课评 - **绝不编造**录音中没有提到的内容 **⚠️ CSP班级专属(必须执行)**: 对每个CSP学生,**在生成课评之前**必须先查询OJ做题数据: ```bash python scripts/get_student_oj.py \ --homework-id <作业ID> \ --student "<学生姓名>" ``` 将返回的OJ数据Markdown拼接到课评内容中。**没有OJ数据的CSP课评是不完整的!** **输出示例**: ```markdown 家长好,本周学习的内容是《魔幻俄罗斯方块(下)》: 1. 理解"自动化测试"的概念 2. 理解"测试覆盖":每条规则都应有对应测试 3. 功能扩展的增量思维 4. 增量需求文档的编写方法 5. 测试脚本生成与结果解读 嘉博今天表现特别棒~对增量需求文档的理解很到位,能够自己写出清晰的测试用例~ 和AI协作完成俄罗斯方块的调试,遇到困难没有放弃,特别有韧性~ 要是可以在写需求文档的时候再仔细检查一下边界条件就更好啦~ 老师会继续关注嘉博的表现,期待看到更多精彩!🌟💡 ``` ### 6. 生成班级总结(所有班级) 录音中提取的**每一个班级**都会生成本节课的班级总结,不局限于特定班级: **内容来源**: - 课程名称 + 5个知识点(来自课程计划) - 该班级所有学生的整体表现(基于录音中提取的表现摘要汇总) - 亮点学生、共性问题、课堂趣事 **保存路径**:`.claude/memory/class/[班级]/summaries/YYYYMMDD_课程编号-课次_班级反馈.md` **格式**:使用对应班级自己的模板(`.claude/memory/class/[班级]/summaries/群发文案模板.md`或`班级反馈模板.md`) ### 7. 确认流程(橙子检查) 所有课评和班级总结生成后,**先展示给橙子看,不保存**: - 按班级分组展示:个人课评 + 班级总结 - 等待橙子确认或提出修改意见 - 如有修改,即时调整后再次展示,直到橙子满意 ### 8. 课评质检(橙子确认修改后执行) **橙子确认课评内容无误后**,自动调用课评质检系统进行最终质检: **触发条件**:橙子说"可以了"、"没问题"、"确认"等表示确认的语句 **质检流程**: 1. 调用「课评质检调度器」Agent 2. 输入:橙子确认后的班级总结 + 所有学生的个人课评 3. 调度器自动协调9个质检Agent(证据审计员、质量评审员、5位家长、终稿编辑) 4. 输出:质检报告 + 修订稿(如有问题) **三档放行规则**: - **直接发送**(≥85分且无硬伤):保持原稿,附质检报告供参考,进入保存流程 - **修订后发送**(70-84分或有改进点):展示质检报告和修订稿给橙子,橙子确认后进入保存流程 - **必须重写**(<70分或触发硬伤):展示质检报告给橙子,橙子决定如何修改 **质检报告格式**: ``` 📋 课评质检报告 【总分】XX / 100 【结论】直接发送 / 修订后发送 / 必须重写 【一、证据审计】 - 已核实:... - 存疑/风险:... 【二、硬伤检查】 - 触发:无 / 第X项(说明) 【三、主要问题】(按严重程度排) 1. ... 【四、修订稿】 (若结论为"修订后发送"或"必须重写",给出完整修订后的课评) 【五、修改说明】 - 改了什么、为什么改 ``` **质检报告位置**:质检报告附在课评后面,供橙子参考,但不发给家长。 **质检后流程**: - 如果质检通过(直接发送):自动执行保存操作 - 如果质检发现问题:展示给橙子,橙子确认后再保存 **⚠️ CSP课评质检优先使用 Agents 系统**: CSP课评必须使用 `.claude/agents/` 目录下的质检Agent系统进行质检,该系统包含: | Agent | 路径 | 功能 | |-------|------|------| | **课评质检调度器** | `.claude/agents/课评质检调度器/agent.md` | 协调9个质检Agent的工作流程 | | **课评证据审计员** | `.claude/agents/课评证据审计员/agent.md` | 事实核对(OJ数据、知识点等) | | **课评质量评审员** | `.claude/agents/课评质量评审员/agent.md` | 100分制评分 + 硬伤检查 | | **课评终稿编辑** | `.claude/agents/课评终稿编辑/agent.md` | 根据反馈生成修订稿 | | **家长-忙碌实用型** | `.claude/agents/家长-忙碌实用型/agent.md` | 快速扫读体验 | | **家长-结果导向型** | `.claude/agents/家长-结果导向型/agent.md` | 信息缺口检查 | | **家长-细节核对型** | `.claude/agents/家长-细节核对型/agent.md` | 文内一致性检查 | | **家长-焦虑保护型** | `.claude/agents/家长-焦虑保护型/agent.md` | 情绪风险检查 | | **家长-成长陪伴型** | `.claude/agents/家长-成长陪伴型/agent.md` | 成长性反馈 | **CSP质检执行方式**: ``` 调用 课评质检调度器 → 调度器自动协调9个Agent → 输出质检报告 + 修订稿 ``` **核心原则**(来自Agents系统): 1. **事实以证据审计员为准**:家长视角的数字意见一律忽略 2. **不做学生横向比较**:揪出"最高/最快/分水岭/紧随XX"等比较词 3. **术语家长能懂**:OLE/CE/WA/SJF/AC这类缩写要解释或换成白话 4. **结合学生性格**:完美主义型先肯定韧性再谈方法;佛系型正向收尾不施压 5. **老师是最终决策者**:给建议和修订稿,老师决定用不用 ### 9. 保存归档 橙子最终确认后,执行以下保存操作: 1. 保存到学生个人单次课评文件 2. **保存到统一周课评汇总**(`E:/cc/4work_project/ClassFeedback/output/课评汇总/`),**后写的课评放在最前面** 3. 保存班级总结 4. 更新学生画像 ### 10. 更新学生画像(自动) 保存课评的同时,根据本节课表现**适当更新**学生画像 `profile.md`: **更新原则**: - 只记录**新发现**或**明显变化**,不重复已有信息 - 更新位置:在 profile.md 的"近期表现"或"课堂观察"部分追加 **触发更新的典型情况**: - 展现出新的兴趣点(如"首次表现出对XX的浓厚兴趣") - 能力有明显进步(如"打字速度比上学期快了很多") - 性格/态度变化(如"从内向变得愿意主动提问") - 需要持续关注的问题(如"近两次课专注力有所下降") - 特殊事件(如"第一次独立完成完整作品") **不更新的情况**: - 表现和画像中已有描述一致 - 只是常规课堂表现,无特殊变化 - 一次性的小问题(如"今天迟到") 更新格式示例: ```markdown **2026-05-14 第11课观察**: - 对增量需求文档的理解力有提升,能自己写出测试用例 - 遇到困难时不再马上求助,会先尝试独立调试 ``` --- ## 📊 课评质量评分标准(生成时必须遵循) > 总分 100 分 = 规范性(50 分) + 丰富度(50 分) > **生成课评时必须按照此标准自检,确保每条课评都达到高质量要求!** ### 一、规范性(自动检测,合计 50 分) | 评分项目 | 分值 | 满分判定规则 | 扣分规则 | |----------|------|--------------|----------| | **字数合规** | 10 | 正文字数区间:180–350 字 | 超出 / 低于区间按梯度扣分 | | **禁用词检查** | 10 | 全文无禁用词汇 | 每出现 1 个禁用词扣 2 分,扣完本项为止 | | **结构完整性** | 10 | 评语必须包含三要素:知识点总结 + 学情反馈 + 教师签名 | 缺任一要素酌情扣分 | | **Emoji 使用** | 10 | 全篇使用数量 3–5 个 | 过少 / 过多酌情扣分 | | **称呼规范** | 10 | 使用学生小名、或去掉姓氏直呼名字 | 称呼格式不规范扣分 | **禁用词清单**(生成时必须避免): - 笼统空泛词:表现不错、继续努力、很好、很棒(无具体细节时) - 敷衍词:还可以、一般、还行 - 批评词:太差、不认真、不用心、态度有问题 **自检要点**: - ✅ 字数:课评正文(不含知识点和OJ数据)在 180–350 字之间 - ✅ 禁用词:不使用上述禁用词,用具体描述代替笼统评价 - ✅ 结构:必须有知识点总结(固定开头)+ 学情反馈(主体)+ 教师签名(结尾) - ✅ Emoji:全篇 3–5 个,分布在夸奖、建议、结尾等位置 - ✅ 称呼:三字姓名去掉姓氏(如"陈圆振"→"圆振"),两字姓名直呼名字 ### 二、丰富度(AI 语义分析,合计 50 分) | 评分项目 | 分值 | 高分评判标准 | |----------|------|--------------| | **具体化程度** | 15 | 评语包含具体行为细节,描述有画面感,不笼统空泛 | | **课后建议质量** | 15 | 给出可落地、可执行的个性化课后练习 / 提升方案,不是套话建议 | | **个性化纵向对比** | 10 | 结合学生过往学情画像,对比本次表现,体现进步 / 退步追踪 | | **专业知识点体现** | 10 | 紧扣课程核心知识点点评,体现授课专业度,不泛泛闲聊 | **丰富度提升技巧**: **具体化程度(15分)**: - ❌ "嘉博今天表现不错"(笼统,0分) - ✅ "嘉博今天自己一字一字打字,和AI聊了一节课,特别专注"(具体行为,15分) - ✅ "嘉博今天主动问老师'内层循环每执行完一次,外层循环的变量会变吗?',说明在认真思考"(引用原话,15分) - 技巧:引用学生在录音中的原话,或描述具体行为,让家长看到孩子真实的课堂表现 **课后建议质量(15分)**: - ❌ "继续加油"、"多练习"(套话,0分) - ✅ "课后可以试着用AI生成一个故事,然后自己改编结尾,锻炼创意表达"(可执行,15分) - 技巧:给出"做什么"、"怎么做"、"达到什么效果" **个性化纵向对比(10分)**: - ❌ 不提过往表现(0分) - ✅ "比上节课专注力明显提升,能完整听完讲解再动手"(有对比,10分) - 技巧:读取学生画像,对比上次表现,指出进步/需要保持的地方 **专业知识点体现(10分)**: - ❌ "今天学了新知识"(泛泛,0分) - ✅ "对角色设置+限制条件+输出格式的系统提示词优化,有一定了解"(专业,10分) - 技巧:紧扣本节课教案中的知识点,用专业术语点评 --- ## ⚙️ 核心生成逻辑(自动完成,你不需要操作) ``` 1. 读取参考资料 → 2. AICODE班分析作品/CSP班拉取OJ数据 → 3. 生成个性化课评 → 4. 橙子确认修改 → 5. 自动质检 → 6. 自动保存 ``` ### 1. 自动读取参考资料 我会自动找到以下资料用于生成课评: - **学生画像**:`.claude/memory/class/[班级]/[姓名]/profile.md`(了解学生性格特点和适用风格) - **班级风格指南**:根据课程类型读取对应规则(`.claude/rules/[课程].md`) - **课评格式模板**:根据课程类型选择对应模板(`.claude/templates/[课程].md`),包含标准版和极简版 - **本节课教案**:到 `.claude/lesson/` 目录下查找对应班级、对应课次的教案,确保课评内容与实际教学一致,不编造内容 - **过往课评**:读取该学生的历史课评,避免重复用词 - **课堂录音转写**:`.docx`格式,使用python-docx库读取,AI分析提取学生表现 - **AICODE班作品**:查看作品文件夹,分析每个学生作品的创意和亮点 > 💡 **模板库路径**:`../../templates/` > - `AICODE.md`:AICODE创意编程课评模板(标准版 + 极简版) > - `CSP.md`:C++/CSP课程课评模板 > - `KITTEN.md`:Kitten课程课评模板 > - `课评汇总网页.html`:家长版课评汇总HTML网页模板(翻页浏览、温暖画册风格) ### 2. AICODE班级专属:查看作品文件夹(必须执行) **⚠️ 这是强制步骤,AICODE课评必须包含作品创意描述!** **执行时机**:在生成每个AICODE学生的课评**之前**,先查看该学生的作品文件夹。 **执行流程**: 1. 识别出AICODE班级的学生 2. 查看作品文件夹(橙子提供的本地路径) 3. 分析每个学生作品的: - 创意点:有什么独特的想法 - 技术点:用了什么技术实现 - 亮点:有什么特别出彩的地方 4. 将作品分析**用中文写进课评**中 **示例**(生成陈嘉博的AICODE课评): ``` 嘉博今天表现特别棒~主动问老师关于循环嵌套的问题,说明在认真思考~ 自己完成了课堂练习,特别专注!作品是一个猜数字游戏,用了独特的渐变色背景, 还添加了音效和暂停功能,创意很棒! 老师会继续关注嘉博的表现,期待看到更多精彩!🌟💡 ``` ### 3. CSP班级专属:自动获取OJ做题数据(必须执行) **⚠️ 这是强制步骤,CSP课评必须包含OJ数据!** **执行时机**:在生成每个CSP学生的课评**之前**,先查询该学生的OJ数据。 **查询命令**(对每个CSP学生执行): ```bash python scripts/get_student_oj.py \ --homework-id <作业ID> \ --student "<学生姓名>" ``` **执行流程**: 1. 识别出CSP班级的学生 2. 对每个CSP学生,运行上述命令获取OJ数据 3. 命令会输出该学生的OJ数据Markdown(包含A包每道题的完成情况) 4. 将返回的OJ数据Markdown**直接拼接**到该学生的课评内容中 **示例**(生成杨林轩的CSP课评): ```bash # 第1步:获取OJ数据 python scripts/get_student_oj.py \ --homework-id 6a2bbd65aeff4da880b8f01d \ --student "杨林轩" # 第2步:把返回的OJ数据整合到课评中 ``` **返回格式示例**: ```markdown ## 【OJ做题数据】 **完成情况**: 4/5 (共8次提交) | 题目 | 状态 | 提交次数 | 错误类型 | |------|------|----------|----------| | CSP0309A1 银行叫号模拟 | ✅ 通过 | 1 | — | | CSP0309A2 模拟发牌 | ✅ 通过 | 2 | WA×1 | ... **📊 分析**: 完成4题,第5题有尝试但尚未通过... ``` **注意事项**: - 作业ID需要从OJ系统获取(如 `6a2bbd65aeff4da880b8f01d`) - 如果学生姓名在OJ系统中不匹配,会返回空数据 - 返回的Markdown直接拼接到课评正文后面,不要修改格式 **docx文件处理注意事项**: - 确保已安装python-docx库:`pip install python-docx` - docx文件中的表格会自动转换为Markdown表格格式 - 文件编码问题已解决,无需担心乱码 ### 3. 自动生成课评(统一格式,所有课程通用) **固定格式(必须严格遵守)**: ```markdown 【学生姓名】家长好,我们本周上课的课程是《XXX》 课程目标: 1. 【知识点1】 2. 【知识点2】 3. 【知识点3】 课评反馈: 【具体课评内容,约200字,包含优点、建议、期望】 老师签名:橙子 ``` 生成规则: - 课程目标从本节课教案中提取真实知识点,禁止编造 - 课评反馈包含:优点表扬 + 温和建议 + 鼓励期望 - **表情包丰富原则**:课评正文中适当穿插表情符号,让文字更生动有温度,每个课评至少使用3-5个表情,分布在夸奖、建议、结尾等位置 - **CSP班级专属要求**:必须查询OJ系统的**A包作业完成情况**,进行详细分析(包含完成率、思考模式、错误分布、改进建议),【OJ做题数据】板块放在课评反馈的最后部分 - 称呼规则:三字姓名默认去掉姓氏,直呼后两个字(如"陈圆振"→"圆振"),更亲切 - 内容完全基于从录音中提取的表现信息和教案知识点,不编造内容 - **⚠️ 质量自检(必须执行)**:每条课评生成后,按照「课评质量评分标准」自检: - 字数:正文 180–350 字 ✓ - 禁用词:无笼统空泛词 ✓ - 结构:知识点总结 + 学情反馈 + 教师签名 ✓ - Emoji:3–5 个 ✓ - 称呼:去掉姓氏直呼名字 ✓ - 具体化:有具体行为细节 ✓ - 建议质量:可落地执行的个性化建议 ✓ - 纵向对比:结合画像对比过往表现 ✓ - 专业点评:紧扣课程知识点 ✓ --- ### 📋 生成后确认流程(必须遵守) 1. 一批课评全部生成后,我会先把所有课评展示给你,不保存 2. 等待你确认没问题后,再执行保存操作 3. 如果你需要修改,我会根据你的要求修改后再次给你确认,直到你满意再保存 --- ## 🎨 各班级风格规范(自动匹配) ### AICODE03班 - 家长信格式·温暖鼓励型 - 固定开头:"家长好,本周学习的内容是《...》" + 5个知识点(与 CSP03 一致) - 课程目标后空一行,再写"课评反馈:"正文 - 多用"很棒"、"特别棒"、"超棒"和波浪号"~" - 描述具体行为:"一字一字打字"、"和AI聊了一节课" - 温和建议用"要是...就更好啦~" - **必须描述作品创意和亮点**:用中文描述学生作品的创意、技术点、亮点 - **表情包使用**:课评正文中适当穿插表情,让文字更生动温暖 - 夸奖时:🌟✨🎉👍 - 鼓励时:💪🔥🚀 - 温和建议时:😊💡🌸 - 结尾固定:"老师会继续关注【姓名】的表现,期待看到更多精彩!🌟💡" **⚠️ AICODE03班强制要求**: - **必须查看作品文件夹**,了解每个学生作品的创意和亮点 - **必须用中文描述作品**,写进课评中 - 描述技巧: - ❌ "嘉博的作品做得不错"(笼统) - ✅ "嘉博的作品是一个猜数字游戏,用了独特的渐变色背景,还添加了音效和暂停功能,创意很棒!"(具体描述) #### AICODE03班作品描述示例 ```markdown 嘉博今天表现特别棒~对循环嵌套的理解很到位,能快速理解并动手尝试~ 自己完成了课堂练习,特别专注!作品是一个猜数字游戏,用了独特的渐变色背景, 还添加了音效和暂停功能,创意很棒! 要是可以在代码注释上再详细一点就更好啦~ 老师会继续关注嘉博的表现,期待看到更多精彩!🌟💡 ``` ### K4班 - 家长信格式·温和鼓励型 - 固定开头:"家长好,本周学习的内容是《...》" + 5个知识点 - 肯定创意:"能够有自己的创意" - 温和指出:"不过老师发现...专注力有些下降" - **表情包使用**:K4班学生年龄小,多用可爱活泼的表情增加亲和力 - 表扬创意时:🎨🌈✨🌟 - 鼓励坚持时:💪🐱🚀 - 提醒专注时:👀💡😊 - 结尾可用:"继续加油哦!🌟"、"相信你会把程序做得更完整!🚀" ### CSP03班 - 家长信格式·要求型 - 固定开头:"家长好,本周学习的内容是《...》" + 5个知识点 - 表扬积极:"状态在线"、"早早到校等候超积极" - 期望要求:"希望多思考"、"理解为什么这么写,不只是抄完就好~" - **表情包使用**:CSP班学生偏大,表情偏励志和认可风格 - 表扬状态时:💪✨🎯🔥 - 肯定进步时:📈👏🌟 - 提出期望时:💡📝😊 - 结尾固定:"加油呀!💪✨" **⚠️ CSP03班强制要求**: - **必须查询OJ做题数据**,没有OJ数据的CSP课评是不完整的 - 执行命令:`python scripts/get_student_oj.py --homework-id <作业ID> --student "<姓名>"` - OJ数据板块放在课评正文后面,格式见下方模板 #### CSP03班 OJ数据板块格式(自动生成) **OJ作业包定位说明**: - A包 = 课堂练习(**包含5道具体题目,必须全部列出**) - B包 = 必须完成的课后家庭作业(未完成会明确提醒家长督促) - C包 = 拓展训练(学有余力的同学可挑战) ```markdown ## 【OJ做题数据】 **A包(课堂练习)完成情况**: 4/5 (共8次提交) | 题目 | 类型 | 状态 | 提交次数 | 思考模式 | 错误类型 | |------|------|------|----------|----------|----------| | CSP03-XXA1 | 基础题 | ✅ 通过 | 1 | 一气呵成 | — | | CSP03-XXA2 | 基础题 | ✅ 通过 | 1 | 一气呵成 | — | | CSP03-XXA3 | 基础题 | ✅ 通过 | 2 | 调试改进 | WA×1 | | CSP03-XXA4 | 提高题 | ✅ 通过 | 2 | 调试改进 | WA×1 | | CSP03-XXA5 | 提高题 | ❌ 未通过 | 2 | 遇到困难 | CE×1, WA×1 | --- | CSP03-XXB | 课后作业(必做) | ✅ 已完成 | 3 | 反复调试 | WA×2 | | CSP03-XXC | 拓展训练(选做) | ⬜ 未提交 | 0 | — | — | **📊 分析**: A包5道题完成了4道,基础题全部掌握,提高题第5道考察的是边界条件处理,还需要加强;B包必做课后作业已完成,知识点巩固得不错;C包拓展题未提交,学有余力可以尝试挑战。 **错误分布**: 编译错误1次,答案错误4次,主要是边界条件考虑不周全,建议课后多练类似题目。 ``` **自动判断规则**: - ✅ A包所有5道题必须全部列出,不管是否完成,不能只显示1个A包 - ✅ 如果B包未完成/未通过:明确标注"【重要提醒】B包是必须完成的课后家庭作业,麻烦家长督促孩子在本周内完成提交" - ✅ 如果B包已完成:表扬"课后作业完成及时,知识点巩固得不错" - ✅ 如果C包完成了:重点表扬"主动完成拓展训练,探索精神值得鼓励" - ✅ 如果C包未完成:不做硬性要求,只提"学有余力可以尝试挑战" - ✅ 对A包中未完成的题目,给出具体的知识点建议,帮助孩子针对性提高 ### 体验课 - 家长信格式·转化导向型 - 固定开头:"家长好,今天体验的是《...》课程" + 课程价值介绍 - 突出"第一次":强调新体验,降低焦虑,突出潜力 - 建立愿景:描述继续学习后孩子能达到的水平 - 自然引导报课:用期待和相信引导,不硬推销 - **表情包使用**:体验课要展示活力和吸引力,表情丰富但不过度 - 欢迎首次体验时:🎉👋✨🌟 - 展示潜力时:💡🚀🎯💪 - 建立愿景时:📈🌈🔮 - 结尾固定:"期待在正式课堂上再次见到【姓名】!💻✨" --- ## 💾 保存规则(你确认后自动执行) 你确认课评没问题后,我会自动保存到多个位置,严格遵守课评规范V1.0要求: ### 📌 命名规范(必须严格遵守) - **课程编号规则**:C++竞赛班统一用`CSP`,AI编程班统一用`AICODE`,不得使用`AI`、`C++`等缩写 - **文件名规则**:`YYYYMMDD_课程编号-课次.md`(如`20260418_CSP05-07.md`、`20260330_AICODE03-02.md`) - **日期要求**:文件名中的`YYYYMMDD`必须与校宝`teaching_date`完全一致,不得使用编写/提交日期 - **特殊状态文件**: - 请假:`YYYYMMDD_课程编号-课次(请假).md` - 未上课:`YYYYMMDD_课程编号-课次(未到).md` - 补课:正常文件名 `YYYYMMDD_课程编号-课次.md`,放在补课班级下的 `补课/` 目录中 ### 1. 保存到学生个人单次课评文件(必须,用于自动化统计) 为每位学生生成单独的单次课评文件,这是课评完成率统计的依据: **路径**:`.claude/memory/class/[班级]/[姓名]/feedback/YYYYMMDD_课程编号-课次.md` **格式**: ```markdown # 课程名称:[课程名称] **授课日期**: [YYYY-MM-DD] **课评内容**: [生成的课评正文] --- **老师签名:橙子** ``` ### 2. 保存到统一周课评汇总(后写的放上面) 同时保存到统一的课评汇总目录,同一周的课评放在同一个文件里,新生成的放在最顶部: **根目录**:`E:/cc/4work_project/ClassFeedback/output/课评汇总/` **文件名规则**:`202X年第X周课评汇总.md`(比如「2026年第18周课评汇总.md」) **排序规则**:最新生成的课评放在文件的最前面,旧的课评在后面,倒序排列 **班级分组**:同一个班级的课评放在一起,按班级分组展示 ### 4. 补课学生处理 > 核心原则:学生来哪个班补课,课评就保存在**那个班的 `补课/` 目录下**。 - **保存路径**:`.claude/memory/class/[补课班级]/补课/[学生姓名]/feedback/` - **文件名**:`YYYYMMDD_课程编号-课次.md` - 这里的**课程编号**使用补课班级本身的编号(如去CSP03班补课,就用 `CSP03`) - 文件内容正常写课评,无需特殊标记 ### 5. 班级总结保存 为每个班级保存本节课的班级总结: **路径**:`.claude/memory/class/[班级]/summaries/YYYYMMDD_课程编号-课次_班级反馈.md` **格式**:使用课评规范V1.0中的班级群发文案模板 ### 6. 未到课记录生成 学生请假或未上课(人没到且无请假),都要生成记录文件: **请假**: - **路径**:`.claude/memory/class/[班级]/[姓名]/feedback/YYYYMMDD_课程编号-课次(请假).md` - **格式**:使用课评规范V1.0中的请假记录模板 **未上课**: - **路径**:`.claude/memory/class/[班级]/[姓名]/feedback/YYYYMMDD_课程编号-课次(未到).md` - **格式**:简要记录本次未到课,无课评内容 --- ### 7. 生成课评汇总网页(新增) 为每个班级生成本节课的**家长版课评汇总HTML网页**,方便橙子直接发给家长浏览。 **执行时机**:在所有课评保存完成后执行(无论是否已有Markdown汇总)。 **判断逻辑**: 1. 计算本节课所属的教学周次(第X周) 2. 构造文件名:`第{X}周{星期时间}{课程编号}课评.html` - 星期时间从API数据中提取(如"周日下午"、"周六早上") - 课程编号如 `AICODE03`、`CSP03`、`K4` - 示例:`第14周周日下午AICODE03课评.html` 3. 检查 `output/课评汇总/` 目录下是否已存在该文件 4. 如果**已存在**,**跳过不覆盖**(避免误删橙子手动修改过的网页) 5. 如果**不存在**,基于模板生成新的HTML文件 **模板路径**:`.claude/templates/课评汇总网页.html` **生成规则**(基于模板,替换以下动态内容): | 模板位置 | 替换内容 | 数据来源 | |---------|---------|---------| | `