feat: 第16课课评完成(31人)+ 补全AICODE03周五1700班级总结 + 补课学生课评 + OJ数据
This commit is contained in:
@@ -13,50 +13,166 @@ type: skill
|
||||
✅ 自动匹配班级专属风格:AICODE03温暖鼓励型/K4温和鼓励型/CSP03要求型/体验课转化型
|
||||
✅ **CSP班级必须查询OJ做题数据**(自动调用API获取A包答题情况)
|
||||
|
||||
## 💡 使用方式(超简单)
|
||||
你只需要提供以下信息:
|
||||
## 💡 使用方式
|
||||
|
||||
### 方式一:交互式问答(推荐)
|
||||
|
||||
输入 `/课评生成`,我会使用**选择题**的方式问你所有问题:
|
||||
|
||||
```
|
||||
学生姓名:_______
|
||||
班级:_______
|
||||
课程名称:_______
|
||||
课次:第_______课
|
||||
日期:YYYY-MM-DD
|
||||
表现描述:_______(越具体越好,比如"掌握了循环嵌套,主动调试bug,专注力比上节课好")
|
||||
📝 问题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班)
|
||||
```
|
||||
|
||||
我会自动完成剩下的所有工作:
|
||||
1. 读取学生画像、班级风格指南、本节课教案
|
||||
2. **CSP班级:必须先调用OJ API查询该学生的A包做题数据**
|
||||
3. 生成约200字的个性化课评(CSP课评必须包含OJ数据板块)
|
||||
你选择或填写完所有问题,我就会自动完成整个课评生成流程!
|
||||
|
||||
### 方式二:直接提供信息
|
||||
|
||||
如果你已经知道所有信息,可以直接告诉我:
|
||||
```
|
||||
课堂录音文件:第11课录音转写.docx
|
||||
班级:AICODE03橙子周六1900
|
||||
课次:第11课
|
||||
题目:《AI训练师》
|
||||
出勤:来了陈嘉博、王子墨,请假谭俊研
|
||||
作品文件夹:D:\作品\第11课
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 📂 从笔记文件批量生成课评(推荐工作流)
|
||||
## 🔄 自动完成的工作
|
||||
|
||||
橙子平时在 `E:\cc\3笔记\第N课.md` 中记录学生出勤和简短课评,写完后提供文件路径给我,我会自动完成以下流程:
|
||||
你提供信息后,我会自动完成:
|
||||
|
||||
### 第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数据获取 • 质量自检 • 更新学生画像
|
||||
```
|
||||
|
||||
**优势**:
|
||||
- 每个阶段职责清晰,便于调试和优化
|
||||
- 可以单独重跑某个阶段(如只重跑质检)
|
||||
- 阶段间数据传递标准化,减少错误
|
||||
|
||||
---
|
||||
|
||||
### 输入文件格式
|
||||
橙子提供的笔记文件格式如下(示例):
|
||||
```markdown
|
||||
# 课评记录表 — 2026年05月14日(周三)
|
||||
橙子提供的课堂录音转写文件为 `.docx` 格式,包含整节课的完整录音转写文本。
|
||||
|
||||
### AICODE03橙子周六1900
|
||||
| 姓名 | 出勤状况 | 课评 |
|
||||
|------|----------|------|
|
||||
| 陈嘉博 | 正常上课 | 表现积极,掌握了循环嵌套 |
|
||||
| 王子墨 | 请假 | |
|
||||
**录音转写文件特点**:
|
||||
- 自由文本格式,包含老师和学生的对话
|
||||
- 只有"发言人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出勤数据 → 读取笔记 → 匹配课程计划 → 读取学生画像 → 润色生成 → 确认修改 → 课评质检 → 保存
|
||||
获取API授课数据 → 读取录音转写(docx) → AI分析识别发言人 → 获取课程知识点 → 读取学生画像 → 润色生成 → 确认修改 → 课评质检 → 保存
|
||||
```
|
||||
|
||||
### 0. 获取API出勤数据(必须第一步执行)
|
||||
### 0. 获取API授课数据(必须第一步执行)
|
||||
|
||||
**⚠️ 这是强制步骤,必须在读取笔记之前执行!**
|
||||
|
||||
在开始处理任何课评之前,**必须先调用公司API获取橙子老师近期的出勤数据**,用于:
|
||||
在开始处理任何课评之前,**必须先调用公司API获取橙子老师近期的授课数据**,用于:
|
||||
1. 确认橙子老师实际带了哪些班级
|
||||
2. 获取每个班级的**真实授课日期**(`teaching_date`),用于课评文件名
|
||||
|
||||
@@ -132,14 +248,60 @@ for r in results:
|
||||
| CSP03... | CSP03橙子周六0830 / CSP03橙子周六1400 / CSP03橙子周日1030 | class_name含"CSP03" + time判断 |
|
||||
| KITTEN04... | K4橙子周五1900 / K4橙子周日1900 | class_name含"KITTEN04" + time判断 |
|
||||
|
||||
### 1. 读取笔记文件
|
||||
解析 `E:\cc\3笔记\第N课.md`:
|
||||
- 从文件名提取**课次**(如"第11课")
|
||||
- 从**API获取的teaching_date**确定日期(不使用笔记文件头的日期)
|
||||
- 按班级区块解析,提取每个学生:
|
||||
- 姓名、出勤状况、课评描述(用户写的简短描述)
|
||||
### 1. 读取课堂录音转写文件
|
||||
解析用户提供的课堂录音转写文件(`.docx` 格式):
|
||||
|
||||
> **日期规则**:笔记批量流程中,所有日期(文件名 `YYYYMMDD`、授课日期)**统一以API返回的teaching_date为准**,不使用笔记文件头中的日期。
|
||||
**使用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. 匹配课程计划
|
||||
根据班级标题中的关键词匹配对应课程计划:
|
||||
@@ -161,28 +323,28 @@ for r in results:
|
||||
**路径**:`.claude/memory/class/[班级]/[姓名]/profile.md`
|
||||
|
||||
### 4. 润色生成课评
|
||||
对笔记中列出的**每一个学生**,根据出勤状况处理,确保每个人都有对应记录:
|
||||
对录音中提取的**每一个学生**,根据出勤状况处理,确保每个人都有对应记录:
|
||||
|
||||
| 出勤状况 | 处理方式 | 保存位置 |
|
||||
|---|---|---|
|
||||
| 正常上课 | 读取画像 + 润色课评描述 → 生成完整课评 | 本班学生feedback目录 |
|
||||
| 正常上课 | 读取画像 + 润色表现摘要 → 生成完整课评 | 本班学生feedback目录 |
|
||||
| 请假 | 生成请假记录 | 本班学生feedback目录 |
|
||||
| 未上课 | 生成未到课记录 | 本班学生feedback目录 |
|
||||
| 补课-来自XX班 | 读取画像 + 润色课评描述 → 生成完整课评 | **补课班级**的`补课/[姓名]/feedback/`目录 |
|
||||
| 补课-来自XX班 | 读取画像 + 润色表现摘要 → 生成完整课评 | **补课班级**的`补课/[姓名]/feedback/`目录 |
|
||||
|
||||
**润色规则**(对正常上课和补课学生):
|
||||
- 保留用户描述中的所有事实(不能遗漏任何信息)
|
||||
- 保留录音中提取的所有事实(不能遗漏任何信息)
|
||||
- 根据学生画像调整语气和侧重(如内向学生多鼓励,活泼学生提专注)
|
||||
- 套用对应班级的固定开头(5个知识点)和结尾风格
|
||||
- 将简短描述扩展为约200字的完整家长信格式课评
|
||||
- **绝不编造**用户没有提到的内容
|
||||
- 将100-200字的表现摘要扩展为约200字的完整家长信格式课评
|
||||
- **绝不编造**录音中没有提到的内容
|
||||
|
||||
**⚠️ CSP班级专属(必须执行)**:
|
||||
对每个CSP学生,**在生成课评之前**必须先查询OJ做题数据:
|
||||
```bash
|
||||
python scripts/update_feedback_with_oj.py \
|
||||
--course CSP03-<课次编号> \
|
||||
--get-student-oj "<学生姓名>"
|
||||
python scripts/get_student_oj.py \
|
||||
--homework-id <作业ID> \
|
||||
--student "<学生姓名>"
|
||||
```
|
||||
将返回的OJ数据Markdown拼接到课评内容中。**没有OJ数据的CSP课评是不完整的!**
|
||||
|
||||
@@ -202,11 +364,11 @@ python scripts/update_feedback_with_oj.py \
|
||||
```
|
||||
|
||||
### 6. 生成班级总结(所有班级)
|
||||
笔记中列出的**每一个班级**都会生成本节课的班级总结,不局限于特定班级:
|
||||
录音中提取的**每一个班级**都会生成本节课的班级总结,不局限于特定班级:
|
||||
|
||||
**内容来源**:
|
||||
- 课程名称 + 5个知识点(来自课程计划)
|
||||
- 该班级所有学生的整体表现(基于笔记中课评描述汇总)
|
||||
- 该班级所有学生的整体表现(基于录音中提取的表现摘要汇总)
|
||||
- 亮点学生、共性问题、课堂趣事
|
||||
|
||||
**保存路径**:`.claude/memory/class/[班级]/summaries/YYYYMMDD_课程编号-课次_班级反馈.md`
|
||||
@@ -267,6 +429,34 @@ python scripts/update_feedback_with_oj.py \
|
||||
- 如果质检通过(直接发送):自动执行保存操作
|
||||
- 如果质检发现问题:展示给橙子,橙子确认后再保存
|
||||
|
||||
**⚠️ 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. 保存归档
|
||||
|
||||
橙子最终确认后,执行以下保存操作:
|
||||
@@ -303,9 +493,70 @@ python scripts/update_feedback_with_oj.py \
|
||||
|
||||
---
|
||||
|
||||
## 📊 课评质量评分标准(生成时必须遵循)
|
||||
|
||||
> 总分 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. CSP班级自动拉取OJ数据 → 3. 生成个性化课评 → 4. 橙子确认修改 → 5. 自动质检 → 6. 自动保存
|
||||
1. 读取参考资料 → 2. AICODE班分析作品/CSP班拉取OJ数据 → 3. 生成个性化课评 → 4. 橙子确认修改 → 5. 自动质检 → 6. 自动保存
|
||||
```
|
||||
|
||||
### 1. 自动读取参考资料
|
||||
@@ -315,15 +566,41 @@ python scripts/update_feedback_with_oj.py \
|
||||
- **课评格式模板**:根据课程类型选择对应模板(`.claude/templates/[课程].md`),包含标准版和极简版
|
||||
- **本节课教案**:到 `.claude/lesson/` 目录下查找对应班级、对应课次的教案,确保课评内容与实际教学一致,不编造内容
|
||||
- **过往课评**:读取该学生的历史课评,避免重复用词
|
||||
- **课堂录音转写**:`.docx`格式,使用python-docx库读取,AI分析提取学生表现
|
||||
- **AICODE班作品**:查看作品文件夹,分析每个学生作品的创意和亮点
|
||||
|
||||
> 💡 **模板库路径**:`../../templates/`
|
||||
> - `AICODE.md`:AICODE创意编程课评模板(标准版 + 极简版)
|
||||
> - `CSP.md`:C++/CSP课程课评模板
|
||||
> - `KITTEN.md`:Kitten课程课评模板
|
||||
> - `出勤登记-2026春季.md`:出勤登记表模板
|
||||
> - `课评汇总网页.html`:家长版课评汇总HTML网页模板(翻页浏览、温暖画册风格)
|
||||
|
||||
### 2. CSP班级专属:自动获取OJ做题数据(必须执行)
|
||||
### 2. AICODE班级专属:查看作品文件夹(必须执行)
|
||||
|
||||
**⚠️ 这是强制步骤,AICODE课评必须包含作品创意描述!**
|
||||
|
||||
**执行时机**:在生成每个AICODE学生的课评**之前**,先查看该学生的作品文件夹。
|
||||
|
||||
**执行流程**:
|
||||
1. 识别出AICODE班级的学生
|
||||
2. 查看作品文件夹(橙子提供的本地路径)
|
||||
3. 分析每个学生作品的:
|
||||
- 创意点:有什么独特的想法
|
||||
- 技术点:用了什么技术实现
|
||||
- 亮点:有什么特别出彩的地方
|
||||
4. 将作品分析**用中文写进课评**中
|
||||
|
||||
**示例**(生成陈嘉博的AICODE课评):
|
||||
```
|
||||
嘉博今天表现特别棒~主动问老师关于循环嵌套的问题,说明在认真思考~
|
||||
|
||||
自己完成了课堂练习,特别专注!作品是一个猜数字游戏,用了独特的渐变色背景,
|
||||
还添加了音效和暂停功能,创意很棒!
|
||||
|
||||
老师会继续关注嘉博的表现,期待看到更多精彩!🌟💡
|
||||
```
|
||||
|
||||
### 3. CSP班级专属:自动获取OJ做题数据(必须执行)
|
||||
|
||||
**⚠️ 这是强制步骤,CSP课评必须包含OJ数据!**
|
||||
|
||||
@@ -331,9 +608,9 @@ python scripts/update_feedback_with_oj.py \
|
||||
|
||||
**查询命令**(对每个CSP学生执行):
|
||||
```bash
|
||||
python scripts/update_feedback_with_oj.py \
|
||||
--course CSP03-<课次编号> \
|
||||
--get-student-oj "<学生姓名>"
|
||||
python scripts/get_student_oj.py \
|
||||
--homework-id <作业ID> \
|
||||
--student "<学生姓名>"
|
||||
```
|
||||
|
||||
**执行流程**:
|
||||
@@ -345,9 +622,9 @@ python scripts/update_feedback_with_oj.py \
|
||||
**示例**(生成杨林轩的CSP课评):
|
||||
```bash
|
||||
# 第1步:获取OJ数据
|
||||
python scripts/update_feedback_with_oj.py \
|
||||
--course CSP03-09 \
|
||||
--get-student-oj "杨林轩"
|
||||
python scripts/get_student_oj.py \
|
||||
--homework-id 6a2bbd65aeff4da880b8f01d \
|
||||
--student "杨林轩"
|
||||
|
||||
# 第2步:把返回的OJ数据整合到课评中
|
||||
```
|
||||
@@ -358,20 +635,25 @@ python scripts/update_feedback_with_oj.py \
|
||||
|
||||
**完成情况**: 4/5 (共8次提交)
|
||||
|
||||
| 题目 | 状态 | 提交次数 | 思考模式 | 错误类型 |
|
||||
|------|------|----------|----------|----------|
|
||||
| CSP0309A1 银行叫号模拟 | ✅ 通过 | 1 | 一气呵成 | — |
|
||||
| CSP0309A2 模拟发牌 | ✅ 通过 | 2 | 调试改进 | WA×1 |
|
||||
| 题目 | 状态 | 提交次数 | 错误类型 |
|
||||
|------|------|----------|----------|
|
||||
| CSP0309A1 银行叫号模拟 | ✅ 通过 | 1 | — |
|
||||
| CSP0309A2 模拟发牌 | ✅ 通过 | 2 | WA×1 |
|
||||
...
|
||||
|
||||
**📊 分析**: 完成4题,第5题有尝试但尚未通过...
|
||||
```
|
||||
|
||||
**注意事项**:
|
||||
- 必须先在 `config/hw_dict.json` 中配置好课程的作业ID
|
||||
- 作业ID需要从OJ系统获取(如 `6a2bbd65aeff4da880b8f01d`)
|
||||
- 如果学生姓名在OJ系统中不匹配,会返回空数据
|
||||
- 返回的Markdown直接拼接到课评正文后面,不要修改格式
|
||||
|
||||
**docx文件处理注意事项**:
|
||||
- 确保已安装python-docx库:`pip install python-docx`
|
||||
- docx文件中的表格会自动转换为Markdown表格格式
|
||||
- 文件编码问题已解决,无需担心乱码
|
||||
|
||||
### 3. 自动生成课评(统一格式,所有课程通用)
|
||||
**固定格式(必须严格遵守)**:
|
||||
```markdown
|
||||
@@ -384,6 +666,8 @@ python scripts/update_feedback_with_oj.py \
|
||||
|
||||
课评反馈:
|
||||
【具体课评内容,约200字,包含优点、建议、期望】
|
||||
|
||||
老师签名:橙子
|
||||
```
|
||||
|
||||
生成规则:
|
||||
@@ -392,7 +676,17 @@ python scripts/update_feedback_with_oj.py \
|
||||
- **表情包丰富原则**:课评正文中适当穿插表情符号,让文字更生动有温度,每个课评至少使用3-5个表情,分布在夸奖、建议、结尾等位置
|
||||
- **CSP班级专属要求**:必须查询OJ系统的**A包作业完成情况**,进行详细分析(包含完成率、思考模式、错误分布、改进建议),【OJ做题数据】板块放在课评反馈的最后部分
|
||||
- 称呼规则:三字姓名默认去掉姓氏,直呼后两个字(如"陈圆振"→"圆振"),更亲切
|
||||
- 内容完全基于你提供的表现描述和教案知识点,不编造内容
|
||||
- 内容完全基于从录音中提取的表现信息和教案知识点,不编造内容
|
||||
- **⚠️ 质量自检(必须执行)**:每条课评生成后,按照「课评质量评分标准」自检:
|
||||
- 字数:正文 180–350 字 ✓
|
||||
- 禁用词:无笼统空泛词 ✓
|
||||
- 结构:知识点总结 + 学情反馈 + 教师签名 ✓
|
||||
- Emoji:3–5 个 ✓
|
||||
- 称呼:去掉姓氏直呼名字 ✓
|
||||
- 具体化:有具体行为细节 ✓
|
||||
- 建议质量:可落地执行的个性化建议 ✓
|
||||
- 纵向对比:结合画像对比过往表现 ✓
|
||||
- 专业点评:紧扣课程知识点 ✓
|
||||
|
||||
---
|
||||
### 📋 生成后确认流程(必须遵守)
|
||||
@@ -409,12 +703,32 @@ python scripts/update_feedback_with_oj.py \
|
||||
- 多用"很棒"、"特别棒"、"超棒"和波浪号"~"
|
||||
- 描述具体行为:"一字一字打字"、"和AI聊了一节课"
|
||||
- 温和建议用"要是...就更好啦~"
|
||||
- **必须描述作品创意和亮点**:用中文描述学生作品的创意、技术点、亮点
|
||||
- **表情包使用**:课评正文中适当穿插表情,让文字更生动温暖
|
||||
- 夸奖时:🌟✨🎉👍
|
||||
- 鼓励时:💪🔥🚀
|
||||
- 温和建议时:😊💡🌸
|
||||
- 结尾固定:"老师会继续关注【姓名】的表现,期待看到更多精彩!🌟💡"
|
||||
|
||||
**⚠️ AICODE03班强制要求**:
|
||||
- **必须查看作品文件夹**,了解每个学生作品的创意和亮点
|
||||
- **必须用中文描述作品**,写进课评中
|
||||
- 描述技巧:
|
||||
- ❌ "嘉博的作品做得不错"(笼统)
|
||||
- ✅ "嘉博的作品是一个猜数字游戏,用了独特的渐变色背景,还添加了音效和暂停功能,创意很棒!"(具体描述)
|
||||
|
||||
#### AICODE03班作品描述示例
|
||||
```markdown
|
||||
嘉博今天表现特别棒~对循环嵌套的理解很到位,能快速理解并动手尝试~
|
||||
|
||||
自己完成了课堂练习,特别专注!作品是一个猜数字游戏,用了独特的渐变色背景,
|
||||
还添加了音效和暂停功能,创意很棒!
|
||||
|
||||
要是可以在代码注释上再详细一点就更好啦~
|
||||
|
||||
老师会继续关注嘉博的表现,期待看到更多精彩!🌟💡
|
||||
```
|
||||
|
||||
### K4班 - 家长信格式·温和鼓励型
|
||||
- 固定开头:"家长好,本周学习的内容是《...》" + 5个知识点
|
||||
- 肯定创意:"能够有自己的创意"
|
||||
@@ -437,7 +751,7 @@ python scripts/update_feedback_with_oj.py \
|
||||
|
||||
**⚠️ CSP03班强制要求**:
|
||||
- **必须查询OJ做题数据**,没有OJ数据的CSP课评是不完整的
|
||||
- 执行命令:`python scripts/update_feedback_with_oj.py --course CSP03-<课次> --get-student-oj "<姓名>"`
|
||||
- 执行命令:`python scripts/get_student_oj.py --homework-id <作业ID> --student "<姓名>"`
|
||||
- OJ数据板块放在课评正文后面,格式见下方模板
|
||||
|
||||
#### CSP03班 OJ数据板块格式(自动生成)
|
||||
@@ -623,6 +937,15 @@ output/课评汇总/第{X}周{星期时间}{课程编号}课评.html
|
||||
|
||||
## 📝 示例课评(参考)
|
||||
|
||||
**从课堂录音转写生成课评示例**:
|
||||
```
|
||||
用户提供:第15课录音转写.docx(任意路径)
|
||||
↓
|
||||
系统自动:检测到docx格式 → 使用python-docx读取录音文本 → AI分析提取学生表现
|
||||
↓
|
||||
后续流程:匹配课程计划 → 读取学生画像 → 生成课评
|
||||
```
|
||||
|
||||
**AICODE课程 - 鼓励型**
|
||||
> 李明今天虽然是第一次接触AI绘画,但我看到了你眼里的好奇,这就是最好的开始。你的描述很有画面感,"想要一个会眨眼的可爱猫咪",这就是好的Prompt。虽然操作还有点生疏,但老师注意到你一直在尝试,这份坚持比做对题目更珍贵。下次可以把想法先写在便签纸上,分点列出,跟AI沟通会更顺畅。记住,编程最大的门槛不是英文或数学,是敢于尝试的勇气,你已经有了。继续和你的"AI搭档"对话吧,它会越来越懂你的。
|
||||
|
||||
|
||||
Reference in New Issue
Block a user