---
name: 课评检查
description: 检查指定课次的学生课评完成情况、班级总结完成情况、学生画像完整性。支持API出勤记录与本地课评交叉核对，自动发现时间/课程编号/学生不一致问题。
type: skill
agent_created: true
---

# 课评检查技能

## 功能说明
自动检查指定课次的课评完成情况，生成完整的检查报告。

支持两种模式：
- **课次模式**：按课次检查（如"检查第11课"）
- **日期模式**：按日期范围检查，自动调用API出勤记录与本地课评交叉核对（如"检查5月15日到5月17日"）

## 使用方式

### 模式一：按课次检查
```
检查第X课
```

### 模式二：按日期范围检查（自动API核对）
```
检查 2026-05-15 到 2026-05-17
检查 5月15日到5月17日
```

---

## 检查流程

### 模式一：按课次检查

#### 1. 读取班级学生名单
从 `CLAUDE.md` 中读取所有班级和学生名单，作为检查基准。

#### 2. 检查学生课评文件
遍历每个班级的每个学生，检查其 `feedback/` 目录下是否有对应课次的文件：

**有效文件类型**：
| 文件名特征 | 状态判定 |
|---|---|
| `YYYYMMDD_课程编号-X.md` | 正常课评 |
| `YYYYMMDD_课程编号-X(请假).md` | 请假记录 |
| `YYYYMMDD_课程编号-X(补课-去XX班).md` | 补课/调课记录 |
| `YYYYMMDD_课程编号-X(补课).md` | 补课记录 |
| 无任何匹配文件 | 缺失 |

**注意事项**：
- 文件名中的课次编号必须与查询的课次一致（如查第10课，匹配 `-10.md`）
- 日期格式应为8位数字（`YYYYMMDD`），如发现 `202605010` 等异常格式，标注

#### 3. 检查班级总结
检查每个班级的 `summaries/` 目录下是否有对应课次的班级反馈文件：
- 匹配文件名包含课次编号的文件（如 `*X_班级反馈.md` 或 `*X*`）
- 无匹配文件则标注 缺失

#### 4. 检查学生画像
检查每个学生目录下是否有 `profile.md`：
- 有则
- 无则

#### 5. 特殊情况处理
检查过程中需关注以下情况并标注：
- **停课学生**：已停课的学生不计入应完成总数
- **进度慢的学生**（如一对一）：不看课次编号，而是看其**最新课评的日期**是否与其他学生**被检查课次的日期在同一周**。如果在同一周，视为正常上课（进度慢），不报告缺失
- **新增/删除学生**：以 `CLAUDE.md` 最新名单为准

**进度慢学生判断示例**：
```
李梓宁最新课评：20260509_AICODE03-07.md（日期 05-09）
其他学生第10课日期：20260509 ~ 20260510
判断：05-09 与 05-10 在同一周 → 正常，不缺失
```

---

### 模式二：按日期范围检查（含API出勤核对）

当用户提供日期范围时，自动执行以下增强流程：

#### 步骤1：调用API获取出勤记录
调用公司API获取指定日期范围内橙子老师的所有课程和学生出勤记录：
```bash
node scripts/check-api-vs-local.js <开始日期> <结束日期>
```

**API数据源**：
- 接口：`GET /reports/teaching-schedule`
- 参数：`teacher_name=橙子（程城）`, `teaching_date=YYYY-MM-DD`
- 返回：每节课的日期、时间、班级名称、学生名单、出勤汇总

#### 步骤2：API数据解析
从API返回中提取以下关键信息：

| API字段 | 说明 | 示例 |
|---------|------|------|
| `teaching_date` | 授课日期 | `2026-05-16` |
| `teaching_time_period` | 授课时间段 | `08:30-10:30` |
| `class_name` | 班级名称 | `AICODE03AI编程创新课03` |
| `student_names` | 学生名单 | `["李梓宁", "王子墨"]` |
| `student_count` | 应到人数 | `5` |
| `attendance` | 出勤汇总 | `{attended:4, on_leave:1}` |

**课程编号提取**：从 `class_name` 中提取前缀，如 `AICODE03AI编程创新课03` → `AICODE03`

**本地目录映射**：根据API数据推断本地班级目录名称：
```
API class_name: AICODE03AI编程创新课03
API teaching_date: 2026-05-16 (周六)
API teaching_time_period: 19:00-20:30 → 时间码: 1900
本地匹配目录: AICODE03橙子周六1900
```

**大小写兼容**：API可能返回 `KITTEN04`，本地目录为 `Kitten04`，匹配时不区分大小写。

#### 步骤3：扫描本地课评文件
在匹配的本地班级目录下扫描：
1. **主目录学生**：`.claude/memory/class/[班级]/[学生]/feedback/`
2. **补课目录学生**：`.claude/memory/class/[班级]/补课/[学生]/feedback/`

匹配该日期（`YYYYMMDD`）和课程编号（如 `AICODE03`）的 `.md` 文件。

#### 步骤4：交叉比对规则

逐项比对API记录与本地课评，发现问题：

| 核对项 | 比对规则 | 问题等级 |
|--------|----------|----------|
| **本地目录存在性** | API有课 → 本地应有对应班级目录 | ❌ 严重 |
| **学生人数一致性** | API `student_count` vs 本地学生目录数（含补课） | ⚠️ 警告 |
| **学生名单一致性** | API名单中的学生，本地应有目录 | ⚠️ 警告 |
| **课评文件完整性** | API显示出勤/补课的学生，本地应有课评文件 | ⚠️ 警告 |
| **文件日期正确性** | 本地文件名日期（前8位）必须等于API `teaching_date` | ⚠️ 警告 |
| **课程编号正确性** | 本地文件名必须包含正确的课程编号 | ⚠️ 警告 |
| **本地多余课评** | 本地有课评但API名单中无该学生 | ⚠️ 警告 |

**特殊情况说明**：
- **体验课**：API中可能显示为 `AICODE01` 等，但本地使用 `体验课/` 目录单独管理，无匹配目录属正常
- **补课学生**：在其他班级补课的学生，课评保存在 `补课/` 目录下，脚本会自动扫描
- **新增/转班学生**：API名单中有但本地无目录的学生，标注为"可能新增/转班"
- **已转走学生**：本地有目录但API名单中无此人的学生，标注为"可能已转班/停课"

#### 步骤5：执行本地课评检查
在完成API核对后，继续执行模式一的本地检查流程（课评文件检查、班级总结检查、学生画像检查）。

---

## 输出报告格式

### 模式一报告（课次检查）

```
## 课评完成情况检查报告 — 第X课

### 一、个人课评

| 班级 | 学生 | 状态 | 说明 |
|---|---|---|---|
| AICODE03周六1900 | 陈嘉博 |  | 正常课评 |
| AICODE03周六1900 | 王子墨 |  | 缺失 |
| ... | ... | ... | ... |

**统计**：共X人，完成X人，缺失X人

### 二、班级总结

| 班级 | 状态 | 说明 |
|---|---|---|
| AICODE03周六1900 |  | 无第X课班级反馈 |
| ... | ... | ... |

### 三、学生画像

| 班级 | 学生 | 状态 |
|---|---|---|
| ... | ... | ... |

**统计**：共X人，有画像X人，缺失X人

### 四、异常/需关注
- ⚠️ 黄俊博：文件名日期格式错误（`202605010` 应为 `20260510`）
- ...
```

### 模式二报告（日期范围 + API核对）

```
## API出勤记录 vs 本地课评核对报告 — 2026-05-15 至 2026-05-17

### 一、核对汇总

| 日期 | 时间 | 课程 | 本地目录 | API人数 | 本地课评数 | 状态 |
|------|------|------|----------|---------|------------|------|
| 2026-05-16 | 08:30-10:30 | CSP03信息学奥赛03 | CSP03橙子周六0830 | 6 | 6 |  |
| 2026-05-16 | 14:00-16:00 | CSP03信息学奥赛03 | CSP03橙子周六1400 | 5 | 4 | ⚠️ |
| ... | ... | ... | ... | ... | ... | ... |

**统计**：总X节课，核对通过X节，存在问题X节，无本地目录X节

### 二、API核对问题详情

#### 2026-05-16 14:00-16:00 - CSP03信息学奥赛03
- 本地目录: CSP03橙子周六1400
- API学生: 廖梓琪, 张雨禾, 苏俊宇, 郑子煜, 魏铭轩
- 本地学生: 张雨禾, 苏俊宇, 郑子煜, 魏铭轩
- ⚠️ 学生人数不一致: API5人 vs 本地4人
- ⚠️ API名单学生本地无目录(可能新增/转班): 廖梓琪

### 三、本地课评检查
（接续模式一的报告格式）
```

---

## 检查完成后
根据检查结果，询问用户是否需要：
1. 补全缺失的课评/请假记录
2. 生成缺失的班级总结
3. 修正异常文件名
4. 处理API核对发现的学生异动（新增/转班）
