# CSP学生OJ数据集成功能说明

## 功能概述

本项目现在已经集成了OJ数据获取和分析功能，可以自动从Hydro OJ系统获取学生的作业提交数据，结合学生画像和课堂表现，生成个性化的课评反馈。

## 文件结构说明

```
.claude/
├── rules/
│   └── oj_data.md          # OJ数据获取和分析规则
├── skills/
│   ├── claude_skill.md              # 技能总览
│   ├── generate_feedback_skill.md   # 课评生成技能（集成OJ数据）
│   ├── student_profile_collector_skill.md  # 学生画像采集技能
│   └── periodic_summary_skill.md    # 周期性总结生成技能
└── config/
    └── hw_dict.json        # OJ作业ID映射表（包含CSP01-CSP07所有课次的作业ID）

scripts/
├── update_feedback_with_oj.py  # OJ数据获取和分析脚本
└── analyze_course_student.py   # 课程学生数据分析脚本

.env.example              # OJ配置示例文件
```

## 配置步骤

1. 复制.env.example为.env，并填写你的OJ账号信息：
   ```
   OJ_BASE_URL=https://oj.qonnwolf.com
   OJ_USERNAME=你的OJ用户名
   OJ_PASSWORD=你的OJ密码
   
   # 默认学生账号密码（CSP03学生统一使用）
   DEFAULT_OJ_PASSWORD=codemao888
   ```

2. 学生账号配置：
   - CSP03学生：账号为学生姓名（中文名/全拼），密码统一为`codemao888`
   - 其他班级：可在`.claude/config/oj_accounts.json`中配置对应班级的账号规则和默认密码

3. 确保hw_dict.json中的作业ID与实际OJ中的作业ID一致，如果有不一致的情况，可以手动修改。

## 使用方法

### 1. 生成课后反馈
使用触发词："写 [班级] [课程代码] 的课后反馈"
例如："写 周六上午CSP03班 CSP03-05 的课后反馈"

系统会自动：
- 获取该课次的OJ作业提交数据
- 分析每个学生的完成情况、错误类型、提交次数
- 结合学生画像和课堂表现生成个性化课评
- 生成班级整体反馈和微信群版本

### 2. 生成周期性总结
使用触发词："给我 [学生姓名] 的月度总结" 或 "给我 [班级名] 的季度总结"
系统会自动分析该时间段内的所有OJ数据和课评记录，生成成长总结。

### 3. 手动运行脚本获取OJ数据
```bash
python scripts/update_feedback_with_oj.py \
  --course CSP03-05 \
  --title "递归算法应用" \
  --class-name "周六上午CSP03班" \
  --date 20260506 \
  --students "张三,李四,王五"
```

## 支持的CSP课程
目前已支持CSP01到CSP07所有课次的作业ID映射，覆盖：
- CSP01（入门级）
- CSP02（基础级）
- CSP03（进阶级）
- CSP04（提高级）
- CSP05（竞赛级入门）
- CSP06（竞赛级提高）
- CSP07（竞赛级冲刺）

## OJ数据分析维度
系统会自动分析每个学生的：
- 作业完成率（AC题数/总题数）
- 提交次数和调试效率
- 错误类型分布（WA/RE/CE/TLE等）
- 知识点掌握情况
- 学习趋势和进步情况

## 注意事项
1. OJ课次编号可能与课程大纲编号不一致，系统会自动按标题匹配
2. 如果作业ID映射不准确，可以手动修改.claude/config/hw_dict.json
3. OJ数据是客观参考，最终课评会结合老师的课堂观察进行调整
