清理旧文件并升级课评系统至笔记批量工作流

- 删除 lesson 下已迁移到独立仓库的课程大纲和 demo 文件
- 删除旧的「出勤登记」目录(已整合到 .claude/memory/class 下)
- 删除临时调试文件(all_students.txt、has_profile.txt、oj_hw_a_debug.html)
- 课评生成 skill 全面升级:支持从笔记文件批量生成课评
- AIGC.md 增加家长信固定开头格式,与 CSP03 统一
- 新增「课评写入和查找规则 V1.0.md」
- 更新 CLAUDE.md 班级学生数(33 人)
This commit is contained in:
chengzi
2026-05-15 16:17:19 +08:00
parent 640c275ba5
commit e28fb9921a
76 changed files with 381 additions and 16921 deletions

View File

@@ -0,0 +1,194 @@
# 课评写入决策规则
## 场景总览
| 场景 | 说明 | 写入位置 |
|------|------|---------|
| 正常上课 | 固定班级固定时间,学生正常到课 | 本班学生 feedback/ |
| 正常请假 | 固定班级固定时间,学生请假 | 本班学生 feedback/(请假) |
| 外班来补课 | 其他班的学生来本班上课 | 本班 补课/学生名/feedback/ |
| 本班临时调时间 | 固定班级但本次课改了时间 | 本班学生 feedback/,课评中注明实际时间 |
| 临时凑班 | 不属于任何固定班级的一次性排课 | 建临时班级目录或按补课处理 |
## 场景1本班正常到课
- 位置:`班级目录/学生名/feedback/YYYYMMDD_课程编号-课次.md`
- 操作:在学生 feedback 目录下新增课评文件
- 学生目录已存在 → 直接写
- 学生目录不存在 → 先创建学生目录和 feedback 子目录
## 场景2本班请假
- 位置:`班级目录/学生名/feedback/YYYYMMDD_课程编号-课次(请假).md`
- 操作:在学生 feedback 目录下新增请假记录文件
- 请假记录也要写,保证每位学生每次课都有对应文件
## 场景3外班来补课
- 位置:`班级目录/补课/学生名/feedback/YYYYMMDD_课程编号-课次.md`
- 操作:
1. 检查 `班级目录/补课/学生名/` 是否已存在
2. 已存在 → 直接在 feedback 下新增课评文件
3. 不存在 → 创建 `补课/学生名/feedback/` 目录,再写课评
- 补课学生不需要 profile.md
## 场景4本班临时调时间
**核心原则:写回原班级,不新建目录。** 班级目录名中的时间是常规标签,不是精确到每次课的约束。
### 老师操作流程
1. 确认是哪个固定班级的课(比如 CSP01六六周六1045
2. 正常在该班级目录下为每个学生写课评
3. 课评文件中**加一行注明实际时间**
```markdown
# 课程名称CSP01-10 变量与运算
**授课日期**: 2026-05-10
**实际时间**: 16:00-18:00临时调整原定 10:45-12:45
**课评内容**
...
```
### 三种学生的处理
| 学生状态 | 操作 |
|---------|------|
| 到课 | 和场景1一样在学生 feedback/ 下写课评,注明实际时间 |
| 请假 | 和场景2一样写请假记录 |
| 外班来补课 | 和场景3一样在补课/ 下写课评 |
### 为什么不新建临时目录
1. 目录会越积越多,长期仓库很乱
2. 学生课评会被拆到两个目录,历史不连续
3. 老师不需要纠结写哪个目录,班级目录就那几个
4. 课评文件名已有日期精确标识,目录名只是标签
## 场景5临时凑班
不属于任何固定班级的一次性排课(如集训、体验课等):
- 如果有对应的固定班级 → 按场景4处理写回固定班级
- 如果完全无对应 → 建临时班级目录(如 `CSP01六六集训0510`按场景1/2/3处理
- 临时班级目录用完后不删除,保留历史记录
## 查找课评的反向逻辑
统计课评完成度时只在排课老师T的仓库中查找谁上课谁写课评从最精确到最模糊逐级查找每一级找到即停
```
校宝记录学生S 在日期D 到课排课老师T课程编号B上课时间TIME
第1级精确匹配课程编号B + 时间TIME + 老师T
1a. 在T仓库找 目录名含B 且 含TIME 的班级目录
→ 在该目录的 S/feedback/ 中找日期D的课评
→ 找到 → 结束
1b. 未找到 → 在该目录的 补课/S/feedback/ 中找日期D的课评
→ 找到 → 结束
→ 未找到 → 进入第2级
第2级放宽时间课程编号B + 老师T时间不限
2a. 在T仓库找 目录名含B 的所有其他班级目录排除第1级已查的
→ 排除非常规班(目录名含"集训"、"体验"、"临时"等)
→ 在这些目录的 S/feedback/ 中找日期D的课评
→ 找到 → 结束
2b. 未找到 → 在这些目录的 补课/S/feedback/ 中找日期D的课评
→ 找到 → 结束
→ 未找到 → 标记缺失
```
**核心原则:谁上课谁写课评,只查排课老师的仓库。** 不需要跨老师查找,别的老师上的课不会出现在自己仓库里。
**覆盖的4种情况**
| 查找 | 含义 |
|------|------|
| 1a. 精确班级学生目录 | 固定班固定时间,本班学生写的课评 |
| 1b. 精确班级补课目录 | 固定班固定时间,补课学生写的课评 |
| 2a. 同阶段不同时间学生目录 | 临时调了时间,写在了另一个同编号班级目录下 |
| 2b. 同阶段不同时间补课目录 | 临时调了时间,补课学生的课评在另一个同编号班级的补课目录 |
**关键过滤规则**
- **全程限定课程编号B**缺B补B不跨课程编号
- 第2级排除"集训/体验/临时"等非常规班目录名
- 每一步找到就停,不重复计数
## 关键原则
1. **以学生为中心**:查找时先找学生名,再检查日期
2. **课程编号是全程硬约束**只在课程编号B范围内查找缺B补B
3. **谁上课谁写课评**只查排课老师T的仓库不跨老师
4. **每位学生每次课必须有文件**:到课写课评,请假写请假记录,不能遗漏
5. **补课学生按实际补课班级归类**:去哪个班补课,课评就写在那个班的补课目录下
6. **补课目录可复用**:同一个补课学生多次来同一个班补课,目录已存在就不再创建
7. **临时调时间写回原班级**:不新建目录,课评内容中注明实际时间即可
## 两种查找模式
老师仓库是独立的,不同场景需要不同的查找范围:
| 目的 | 查找范围 | 约束 |
|------|---------|------|
| 课评完成度统计 | 只查排课老师T的仓库 | 限定课程编号B逐级查找 |
| 写阶段总结 | 遍历所有老师仓库15个 | 不限课程编号,按学生名收集全部课评,按时间排序 |
**阶段总结查找逻辑**
```
目标为学生S 生成阶段总结
1. 遍历所有老师仓库的 .claude/memory/class/ 下所有班级目录
2. 在每个班级目录中查找 S/feedback/ 和 补课/S/feedback/
3. 收集所有 YYYYMMDD_*.md 文件
4. 按日期排序,汇总输出
```
学生可能换班换老师如CSP01升CSP02换了老师课评分散在多个仓库只能全扫。
## 学生索引机制
### 目的
教学督导可读所有仓库每周定时扫描15个老师仓库生成统一的学生索引文件避免后续查询反复全扫。
### 索引结构
```
.claude/memory/student_index/
├── 刘毅潇.md
├── 张祺琪.md
└── ...
```
每个索引文件:
```markdown
# 刘毅潇
## 当前班级
- CSP05克力周六1600
## 课评记录
| 日期 | 老师 | 班级 | 路径 |
|------|------|------|------|
| 2026-05-10 | 克力 | CSP05克力周六1600 | keli_ClassFeedback/.../feedback/20260510_CSP05-10.md |
| 2026-05-03 | 克力 | CSP05克力周六1600 | keli_ClassFeedback/.../feedback/20260503_CSP05-09.md |
| 2026-04-19 | 六六 | CSP01六六周六1400 | liuliu_ClassFeedback/.../feedback/20260419_CSP01-08.md |
```
### 更新方式
- **定时扫描**:每周执行课评整理时自动扫描所有仓库,更新索引
- **增量更新**:只追加新发现的课评,不删除历史记录
- **升班/换老师**:索引中追加新班级记录,"当前班级"取最新一条
### 索引的好处
1. **老师仓库不动**:写入逻辑完全不变
2. **课评完成度统计**读索引即可不用全扫15个仓库
3. **阶段总结**:直接读索引文件,按日期排序就完事
4. **升班/换老师**:索引里追加记录,学生历史自然连续
5. **统一视图**:教学督导和所有协作者都能看到学生完整课评轨迹