为CSP班级课评集成OJ数据自动查询功能:

- 批量模式新增Python脚本调用指令和参数映射表
- 单条模式新增--get-student-oj命令说明
- 新增OJ数据板块格式模板和思考模式联动规则
- 新增含OJ数据的CSP03课评示例
This commit is contained in:
chengzi
2026-05-06 15:50:17 +08:00
parent 72cce87b6f
commit 52f21814e8

View File

@@ -86,14 +86,53 @@ type: skill
### 2. 解析与处理流程 ### 2. 解析与处理流程
1. **读取课程记录文档**:解析出周次、日期范围、各班级、学生名单及表现 1. **读取课程记录文档**:解析出周次、日期范围、各班级、学生名单及表现
2. **过滤状态**:只处理 **状态为「✅ 出勤」** 的学生,跳过请假/缺勤学生 2. **过滤状态**:只处理 **状态为「✅ 出勤」** 的学生,跳过请假/缺勤学生
3. **按学生循环处理** 3. **OJ数据自动获取仅CSP班级**如果是CSP班级调用Python脚本拉取所有出勤学生的OJ做题数据。**此步骤必须执行,不可跳过。**
**步骤3.1:确定参数**
- 课程代码:`CSP03-<课次编号>`(从课次提取,如"第7课"→`CSP03-07`,注意补零到两位数)
- 班级目录名(`--class-name` 参数),映射关系:
| 课程记录中的班级名 | --class-name 参数 |
|---|---|
| 周六早上0830CSP03班 | 橙子周六0830CSP03 |
| 周六下午1400CSP03班 | 橙子周六1400CSP03 |
| 周日早上1030CSP03班 | 橙子周日1030CSP03 |
- 日期:`YYYYMMDD` 格式(从课程记录中提取)
- 学生名单:所有出勤学生姓名,逗号分隔
**步骤3.2:执行脚本(一次性拉取所有出勤学生数据)**
```bash
python scripts/update_feedback_with_oj.py \
--course CSP03-<课次编号> \
--title "<课程名称>" \
--class-name "<班级目录名>" \
--date <YYYYMMDD> \
--students "学生1,学生2,学生3"
```
脚本会:
- 登录OJ系统凭据从 `.env` 读取)
- 从 `config/hw_dict.json` 查找对应课次的作业ID
- 抓取所有出勤学生的提交记录A=课堂练习, B=课后作业, C=拓展练习)
- 控制台输出每个学生的完成率、思考模式、错误分布
- 分析结果自动保存到 `.claude/memory/oj/analysis/CSP03-XX_student_analysis.json`
**步骤3.3:读取分析结果**
分析JSON中包含每个学生的
- `completion`:完成率(如 "2/3"
- `total_attempts`:总提交次数
- `problems`:每题详情(状态、提交次数、思考模式、错误类型)
- `total_errors`错误分布WA/CE/RE/TLE 各几次)
4. **按学生循环处理**
- 读取该学生的用户画像(`.claude/memory/class/[班级]/[姓名]/profile.md` - 读取该学生的用户画像(`.claude/memory/class/[班级]/[姓名]/profile.md`
- 读取过往课评(`.claude/memory/class/[班级]/[姓名]/feedback/课评汇总-2026春季.md` - 读取过往课评(`.claude/memory/class/[班级]/[姓名]/feedback/课评汇总-2026春季.md`
- **读取本节课上课目标(必须!):到 `.claude/lesson/` 目录下查找对应班级、对应课次的教案文件,获取本节课的教学目标和知识点,作为课评中本节课内容的唯一依据,禁止编造课程内容 - **读取本节课上课目标(必须!):到 `.claude/lesson/` 目录下查找对应班级、对应课次的教案文件,获取本节课的教学目标和知识点,作为课评中本节课内容的唯一依据,禁止编造课程内容
- 读取班级风格指南(`.claude/rules/[课程].md` - 读取班级风格指南(`.claude/rules/CPP.md`CSP03班使用"家长信格式·要求型"风格
- 结合课程记录中的「表现」字段,生成个性化课评 - **对于CSP班级**从步骤3的分析JSON中提取该学生的OJ做题数据生成【OJ做题数据】板块见下方OJ板块格式整合到课评的"建议/期望"部分之前
4. **保存课评**:将新课评按课次顺序追加到个人汇总文件 **末尾**(详见下方保存规则) - 结合课程记录中的「表现」字段和OJ做题数据生成个性化课评
5. **更新出勤登记**:为出勤学生添加出勤记录 5. **保存课评**:将新课评按课次顺序追加到个人汇总文件 **末尾**详见下方保存规则CSP班级的课评会自动包含OJ数据部分
6. **更新出勤登记**:为出勤学生添加出勤记录
### 3. 保存课评(按课次顺序追加) ### 3. 保存课评(按课次顺序追加)
@@ -250,7 +289,7 @@ type: skill
### 使用流程 ### 使用流程
``` ```
1. 确认学生/课程/课次 → 2. 读取相关资料 → 3. 收集本次表现 → 4. 生成课评 5. 保存到学生文件夹(按课次顺序追加) 1. 确认学生/课程/课次 → 2. 自动获取OJ数据仅CSP班级运行Python脚本→ 3. 读取相关资料 → 4. 收集本次表现 → 5. 生成课评CSP班级自动整合OJ数据6. 保存到学生文件夹(按课次顺序追加)
``` ```
### 1. 确认基本信息 ### 1. 确认基本信息
@@ -264,7 +303,24 @@ type: skill
- CSP03班 → 家长信格式·要求型 - CSP03班 → 家长信格式·要求型
- 体验课 → 家长信格式·转化导向型 - 体验课 → 家长信格式·转化导向型
### 2. 读取参考资料 ### 2. OJ数据获取仅CSP班级必须执行
如果课程类型为CPP且班级为CSP03班运行以下命令获取该学生的OJ做题数据
```bash
python scripts/update_feedback_with_oj.py \
--course CSP03-<课次编号> \
--get-student-oj "<学生姓名>"
```
**参数说明**
- `--course`CSP03-课次如第7课→`CSP03-07`(课次必须补零到两位数)
- `--get-student-oj`学生姓名脚本会输出该学生的OJ数据Markdown板块
- 脚本自动从 `.env` 读取OJ登录凭据从 `config/hw_dict.json` 查找作业ID
脚本输出的Markdown内容包含完成情况、每题状态表含思考模式和错误类型、分析和错误分布。将此内容直接作为【OJ做题数据】板块嵌入课评。
### 3. 读取参考资料
- **风格指南**`.claude/rules/[课程].md` - **风格指南**`.claude/rules/[课程].md`
- CPP.mdC++课程评语 - CPP.mdC++课程评语
- AIGC.mdAIGC课程评语 - AIGC.mdAIGC课程评语
@@ -279,7 +335,7 @@ type: skill
- 体验课根据实际体验内容从对应lesson文件读取 - 体验课根据实际体验内容从对应lesson文件读取
- **过往课评**:读取该学生的 `课评汇总-2026春季.md` 和最近课评,避免重复用词 - **过往课评**:读取该学生的 `课评汇总-2026春季.md` 和最近课评,避免重复用词
### 3. 收集本次表现 ### 4. 收集本次表现
``` ```
掌握程度:□优秀 □良好 □一般 □待提高 掌握程度:□优秀 □良好 □一般 □待提高
课堂互动:□积极 □一般 □被动 □缺席 课堂互动:□积极 □一般 □被动 □缺席
@@ -290,15 +346,16 @@ type: skill
- 进步_________________________ - 进步_________________________
``` ```
### 4. 生成课评约200字 ### 5. 生成课评约200字
根据选择的风格组合内容: 根据选择的风格组合内容:
- 开场白30字+ 优点60字+ 建议60字+ 结束语50字 - 开场白30字+ 优点60字+ 建议60字+ 结束语50字
- **CSP班级专属**自动整合OJ做题数据包括完成情况、错误分布、思考模式分析放在课评的单独板块
- 姓名称呼规则:如果学生姓名是三字姓名,正文中默认去掉姓氏,只保留后两个字称呼,例如"陈圆振"写作"圆振""王晨语"写作"晨语",让语气更亲切。 - 姓名称呼规则:如果学生姓名是三字姓名,正文中默认去掉姓氏,只保留后两个字称呼,例如"陈圆振"写作"圆振""王晨语"写作"晨语",让语气更亲切。
### 5. 保存课评(按课次顺序追加) ### 6. 保存课评(按课次顺序追加)
保存规则与「模式一」第3节相同将新课评按课次顺序追加到个人汇总文件末尾原有条目编号保持不变。 保存规则与「模式一」第3节相同将新课评按课次顺序追加到个人汇总文件末尾原有条目编号保持不变。
### 6. 更新出勤登记(自动) ### 7. 更新出勤登记(自动)
保存课评后,自动在出勤登记文件中记录本次出勤: 保存课评后,自动在出勤登记文件中记录本次出勤:
**出勤登记文件路径** **出勤登记文件路径**
@@ -347,6 +404,40 @@ type: skill
- 期望要求:"希望多思考"、"理解为什么这么写,不只是抄完就好~" - 期望要求:"希望多思考"、"理解为什么这么写,不只是抄完就好~"
- 鼓励结尾:"加油呀!💪✨" - 鼓励结尾:"加油呀!💪✨"
#### CSP03班 OJ数据板块格式必须包含
课评正文后、鼓励结尾前插入以下格式的OJ做题数据板块
```markdown
## 【OJ做题数据】
**完成情况**: 2/3 (共5次提交)
| 题目 | 状态 | 提交次数 | 思考模式 | 错误类型 |
|------|------|----------|----------|----------|
| CSP03-XXA | ✅ 通过 | 1 | 一气呵成 | — |
| CSP03-XXB | ✅ 通过 | 2 | 调试改进 | WA×1 |
| CSP03-XXC | ❌ 未通过 | 2 | 遇到困难 | CE×1, WA×1 |
**📊 分析**: 完成2题C题有尝试但尚未通过建议课后继续完成。
**错误分布**: 答案错误1次编译错误1次。
```
OJ数据板块中各字段直接从步骤3保存的分析JSON中提取
- `completion` → "完成情况"
- `total_attempts` → "共X次提交"
- 每题 `solved` → 状态(✅通过 / ❌未通过 / ⬜未提交)
- 每题 `attempts` → 提交次数
- 每题 `pattern` → 思考模式
- 每题 `errors` → 错误类型(如 WA×2, CE×1
- `total_errors` → 错误分布总结
**思考模式描述联动**
- 如果学生有题目是"一气呵成",在课堂表现中提到"思路清晰,代码一次通过"
- 如果"调试改进",提到"能够自己发现并修正问题,调试能力不错"
- 如果"遇到困难",在期望部分温和提出"希望课后多练习XX类型题目"
- 如果有未提交题目,建议"课后抽时间完成未提交的练习"
### 体验课 - 家长信格式·转化导向型 ### 体验课 - 家长信格式·转化导向型
- 固定开头:"家长好,今天体验的是《...》课程" + 课程价值介绍 - 固定开头:"家长好,今天体验的是《...》课程" + 课程价值介绍
- 突出"第一次":强调新体验,降低焦虑,突出潜力 - 突出"第一次":强调新体验,降低焦虑,突出潜力
@@ -358,12 +449,13 @@ type: skill
### 批量生成模式 ### 批量生成模式
- 读取课程记录文档2分钟 - 读取课程记录文档2分钟
- **CSP班级OJ数据拉取**3分钟运行Python脚本
- 按学生读取资料可并行10分钟 - 按学生读取资料可并行10分钟
- 逐一生成课评20分钟 - 逐一生成课评20分钟
- 保存到个人汇总3分钟 - 保存到个人汇总3分钟
- 生成 output 周汇总文件3分钟 - 生成 output 周汇总文件3分钟
- 更新出勤登记2分钟 - 更新出勤登记2分钟
- **总计约40分钟** - **总计约40-45分钟**
### 单条生成模式 ### 单条生成模式
- 准备阶段5分钟 - 准备阶段5分钟
@@ -377,3 +469,28 @@ type: skill
**AIGC课程 - 鼓励型** **AIGC课程 - 鼓励型**
> 李明今天虽然是第一次接触AI绘画但我看到了你眼里的好奇这就是最好的开始。你的描述很有画面感"想要一个会眨眼的可爱猫咪"这就是好的Prompt。虽然操作还有点生疏但老师注意到你一直在尝试这份坚持比做对题目更珍贵。下次可以把想法先写在便签纸上分点列出跟AI沟通会更顺畅。记住编程最大的门槛不是英文或数学是敢于尝试的勇气你已经有了。继续和你的"AI搭档"对话吧,它会越来越懂你的。 > 李明今天虽然是第一次接触AI绘画但我看到了你眼里的好奇这就是最好的开始。你的描述很有画面感"想要一个会眨眼的可爱猫咪"这就是好的Prompt。虽然操作还有点生疏但老师注意到你一直在尝试这份坚持比做对题目更珍贵。下次可以把想法先写在便签纸上分点列出跟AI沟通会更顺畅。记住编程最大的门槛不是英文或数学是敢于尝试的勇气你已经有了。继续和你的"AI搭档"对话吧,它会越来越懂你的。
**CSP03班 - 家长信格式·要求型含OJ数据**
> 家长好,本周学习的内容是《字符串处理》:
> 1. string 类型的声明与使用
> 2. 字符串的输入输出cin / getline
> 3. 字符串的拼接与比较操作
> 4. 常用字符串函数size / substr / find
> 5. 培养独立调试与耐心排查错误的能力
>
> 子煜状态在线,课堂互动积极,能够跟上老师的节奏。对于字符串的基本操作掌握得不错,在讲解 substr 和 find 函数时能迅速理解并动手尝试。
>
> ## 【OJ做题数据】
>
> **完成情况**: 2/3 (共5次提交)
>
> | 题目 | 状态 | 提交次数 | 思考模式 | 错误类型 |
> |------|------|----------|----------|----------|
> | CSP03-07A | ✅ 通过 | 1 | 一气呵成 | — |
> | CSP03-07B | ✅ 通过 | 2 | 调试改进 | WA×1 |
> | CSP03-07C | ❌ 未通过 | 2 | 遇到困难 | CE×1, WA×1 |
>
> **📊 分析**: 完成2题C题有尝试但尚未通过建议课后继续完成。
> **错误分布**: 答案错误2次编译错误1次。
>
> A题一次通过说明课堂知识吸收得不错。B题虽然出了点小错但能自己调试改正调试能力在进步。不过C题上卡住了希望课后能抽时间继续思考C题理解为什么编译出错、结果不对而不是放着不管加油呀💪✨