From 52f21814e8fc14dd7b2ca1b8385703ed01422a32 Mon Sep 17 00:00:00 2001 From: chengzi Date: Wed, 6 May 2026 15:50:17 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=BACSP=E7=8F=AD=E7=BA=A7=E8=AF=BE?= =?UTF-8?q?=E8=AF=84=E9=9B=86=E6=88=90OJ=E6=95=B0=E6=8D=AE=E8=87=AA?= =?UTF-8?q?=E5=8A=A8=E6=9F=A5=E8=AF=A2=E5=8A=9F=E8=83=BD=EF=BC=9A=20-=20?= =?UTF-8?q?=E6=89=B9=E9=87=8F=E6=A8=A1=E5=BC=8F=E6=96=B0=E5=A2=9EPython?= =?UTF-8?q?=E8=84=9A=E6=9C=AC=E8=B0=83=E7=94=A8=E6=8C=87=E4=BB=A4=E5=92=8C?= =?UTF-8?q?=E5=8F=82=E6=95=B0=E6=98=A0=E5=B0=84=E8=A1=A8=20-=20=E5=8D=95?= =?UTF-8?q?=E6=9D=A1=E6=A8=A1=E5=BC=8F=E6=96=B0=E5=A2=9E--get-student-oj?= =?UTF-8?q?=E5=91=BD=E4=BB=A4=E8=AF=B4=E6=98=8E=20-=20=E6=96=B0=E5=A2=9EOJ?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E6=9D=BF=E5=9D=97=E6=A0=BC=E5=BC=8F=E6=A8=A1?= =?UTF-8?q?=E6=9D=BF=E5=92=8C=E6=80=9D=E8=80=83=E6=A8=A1=E5=BC=8F=E8=81=94?= =?UTF-8?q?=E5=8A=A8=E8=A7=84=E5=88=99=20-=20=E6=96=B0=E5=A2=9E=E5=90=ABOJ?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E7=9A=84CSP03=E8=AF=BE=E8=AF=84=E7=A4=BA?= =?UTF-8?q?=E4=BE=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .claude/skills/课评生成/skill.md | 141 ++++++++++++++++++++++++++++--- 1 file changed, 129 insertions(+), 12 deletions(-) diff --git a/.claude/skills/课评生成/skill.md b/.claude/skills/课评生成/skill.md index 42d9966..c3d2446 100644 --- a/.claude/skills/课评生成/skill.md +++ b/.claude/skills/课评生成/skill.md @@ -86,14 +86,53 @@ type: skill ### 2. 解析与处理流程 1. **读取课程记录文档**:解析出周次、日期范围、各班级、学生名单及表现 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 \ + --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/[班级]/[姓名]/feedback/课评汇总-2026春季.md`) - **读取本节课上课目标(必须!):到 `.claude/lesson/` 目录下查找对应班级、对应课次的教案文件,获取本节课的教学目标和知识点,作为课评中本节课内容的唯一依据,禁止编造课程内容 - - 读取班级风格指南(`.claude/rules/[课程].md`) - - 结合课程记录中的「表现」字段,生成个性化课评 -4. **保存课评**:将新课评按课次顺序追加到个人汇总文件 **末尾**(详见下方保存规则) -5. **更新出勤登记**:为出勤学生添加出勤记录 + - 读取班级风格指南(`.claude/rules/CPP.md`,CSP03班使用"家长信格式·要求型"风格) + - **对于CSP班级**:从步骤3的分析JSON中提取该学生的OJ做题数据,生成【OJ做题数据】板块(见下方OJ板块格式),整合到课评的"建议/期望"部分之前 + - 结合课程记录中的「表现」字段和OJ做题数据,生成个性化课评 +5. **保存课评**:将新课评按课次顺序追加到个人汇总文件 **末尾**(详见下方保存规则),CSP班级的课评会自动包含OJ数据部分 +6. **更新出勤登记**:为出勤学生添加出勤记录 ### 3. 保存课评(按课次顺序追加) @@ -250,7 +289,7 @@ type: skill ### 使用流程 ``` -1. 确认学生/课程/课次 → 2. 读取相关资料 → 3. 收集本次表现 → 4. 生成课评 → 5. 保存到学生文件夹(按课次顺序追加) +1. 确认学生/课程/课次 → 2. 自动获取OJ数据(仅CSP班级,运行Python脚本)→ 3. 读取相关资料 → 4. 收集本次表现 → 5. 生成课评(CSP班级自动整合OJ数据)→ 6. 保存到学生文件夹(按课次顺序追加) ``` ### 1. 确认基本信息 @@ -264,7 +303,24 @@ type: skill - 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` - CPP.md:C++课程评语 - AIGC.md:AIGC课程评语 @@ -279,7 +335,7 @@ type: skill - 体验课:根据实际体验内容从对应lesson文件读取 - **过往课评**:读取该学生的 `课评汇总-2026春季.md` 和最近课评,避免重复用词 -### 3. 收集本次表现 +### 4. 收集本次表现 ``` 掌握程度:□优秀 □良好 □一般 □待提高 课堂互动:□积极 □一般 □被动 □缺席 @@ -290,15 +346,16 @@ type: skill - 进步:_________________________ ``` -### 4. 生成课评(约200字) +### 5. 生成课评(约200字) 根据选择的风格组合内容: - 开场白(30字)+ 优点(60字)+ 建议(60字)+ 结束语(50字) +- **CSP班级专属**:自动整合OJ做题数据,包括完成情况、错误分布、思考模式分析,放在课评的单独板块 - 姓名称呼规则:如果学生姓名是三字姓名,正文中默认去掉姓氏,只保留后两个字称呼,例如"陈圆振"写作"圆振","王晨语"写作"晨语",让语气更亲切。 -### 5. 保存课评(按课次顺序追加) +### 6. 保存课评(按课次顺序追加) 保存规则与「模式一」第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分钟 +- **CSP班级OJ数据拉取**:3分钟(运行Python脚本) - 按学生读取资料(可并行):10分钟 - 逐一生成课评:20分钟 - 保存到个人汇总:3分钟 - 生成 output 周汇总文件:3分钟 - 更新出勤登记:2分钟 -- **总计:约40分钟** +- **总计:约40-45分钟** ### 单条生成模式 - 准备阶段:5分钟 @@ -377,3 +469,28 @@ type: skill **AIGC课程 - 鼓励型** > 李明今天虽然是第一次接触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题,理解为什么编译出错、结果不对,而不是放着不管~加油呀!💪✨