feat: 第17课课评完成 + 学生档案更新 + 课评网页模板 + 暑假绩效考核
This commit is contained in:
223
.workbuddy/skills/课评检查/SKILL.md
Normal file
223
.workbuddy/skills/课评检查/SKILL.md
Normal file
@@ -0,0 +1,223 @@
|
||||
---
|
||||
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核对发现的学生异动(新增/转班)
|
||||
Reference in New Issue
Block a user