# 工作流程规则：输入格式、批量生成、存储与特殊处理

> 合并文件：快捷输入格式 + 批量课评生成 + 新学生/补课处理 + 速记符号 + 快速入门
> 版本：v4.5（表单直连提交）| 更新日期：2026-05-20
> 
> **v4.5 变更**：
> - **表单直连提交**：网页表单填写完成后直接 POST 到本地服务器，数据自动保存为 JSON。AI 检测到信号文件后自动读取并生成课评，彻底取消「复制→粘贴回聊天」步骤
> - 新增 `src/form_server.py` 本地表单服务器，支持动态注入班级/学生/课程数据
> - 表单输出文件：`.claude/.tmp/evaluation_input_{班级}.json`
> - 信号文件：`.claude/.tmp/EVALUATION_READY.txt`（AI 检测此文件触发课评生成）
> 
> **v4.4 变更**：
> - 课程进度自动推演：选择班级后根据**当周日期自动匹配课程主题**（基于学期周数映射表），无需参考上节课进度
> - Form-First 模式：选择班级后默认自动创建网页表单，替代聊天文本输入框
> - 表单直连提交：网页表单直接提交数据，无需复制粘贴回聊天
> - 新增 `.claude/memory/project_memory.md` 项目记忆文件
> 
> **v4.3 变更**：
> - 新增 `/周几` 快速索引指令（`/周六`、`/周日`、`/周四` 等）
> - 重写第14节交互式流程：B模式分开展示学生 + 独立输入区 + 快捷标记按钮
> - 新增学生快捷标记操作（请假/体验/补课/出勤）
> 
> **v4.0 变更**：
> - 新增第10节「课评规范V1.0对照规则」：课程编号、目录结构、文件命名、日期匹配、完成率统计、三级查找
> - 重写第5节「存储规则」：以 `.claude/memory/class/` 标准目录结构为准
> - 更新第7节「自动双轨保存机制」：改为单次文件保存 + 班级总结
> - 更新第3节「学生类型标记」：保存位置指向新路径
> - 新增补课双向记录规则
> 
> **v3.2 变更**：

---

## 一、快速入门（30秒上手）

### 1.1 三步完成课评

```
第1步：指定班级（一次即可）
/课评 班级：发现世界-周四19点

第2步：输入学生表现
乔乔：观望5分钟→主动搭3层→自己调整，开心，比上周进步
昊昊：慢热，搭3层，反复调整，稳定

第3步：AI自动生成并保存
AI生成 → 自动双轨保存 → 完成！
```

**完成！课评已自动保存到班级汇总和个人档案，无需确认。**

### 1.2 核心理念

- **有姓名** → AI知道是谁
- **有行为** → AI知道做了什么
- **其他随意** → AI自动补充

支持：口语化、碎片化、无序化、语音转文字。

---

## 二、输入格式

### 2.1 自然语言输入（推荐）

**方式1：极简一句话**

```
乔乔本节课开始不敢碰，后来主动搭了三层，球卡住自己调高度，挺稳定的，比上周主动多了
```

**方式2：关键词速记**

```
乔乔：gj5→zd3→zt ↑++
昊昊：慢热→zd3→反复调 →
```

### 2.2 批量输入格式

**标准列表式（推荐）**

```
课程：DISC-007
班级：发现世界-周四19点
日期：4月16日

1. 乔乔：gj5→zd3→zt ↑++
2. 昊昊：慢热→zd3→反复调 →
3. 张小明[体验]：搭了3层，开心
4. 李小红[补课]：专注完成，稳定
```

**简化表格式**

```
学生      核心表现              情绪   对比
─────────────────────────────────────────
乔乔      gj5→zd3→zt            ↑      ++
昊昊      慢热→zd3→反复调        →      渐入佳境
小明[体验] 搭3层参与             ↑      积极
```

### 2.3 语音输入优化

AI自动匹配班级学生名单，实时纠正谐音：
- "良心桥" → "梁昕乔"
- "中云浩" → "钟昀昊"

> **速记符号完整定义**：参见 `21-shorthand.md`

---

## 三、学生类型标记

### 3.1 标记说明

| 标记 | 含义 | 处理方式 | 保存位置 |
|------|------|----------|---------|
| 无标记 | 正式学生 | 双轨保存 | 个人课评文件+班级汇总 |
| `[补课]` | 补课学生 | 自动检测档案位置，跨班级自动双轨保存 | 个人课评文件（原班级侧追踪文件）+班级汇总 |
| `[体验]` | 体验课学生 | 仅班级汇总 | 个人课评文件（补课目录）+班级汇总 |
| `[缺课]` | 今天缺席 | 记录缺席 | 仅班级汇总 |
| `[new]` | 新学生首次 | 创建档案 | 个人课评文件+班级汇总+学生画像 |

### 3.2 标记使用示例

```
批量输入示例：

周四19点 DISC-007

乔乔：gj5→zd3→zt ↑++
昊昊：慢热→zd3→反复调 →
张小明[体验]：搭了3层，开心
李小红[补课]：专注完成，稳定
```

**AI自动处理**：
- 乔乔、昊昊：双轨保存
- 张小明[体验]：仅保存到班级汇总，不询问
- 李小红[补课]：检查档案 → 当前班级存在 → 双轨保存；其他班级存在 → **自动跨班级双轨保存**

> **补课/新学生/转正详细规则**：参见 `22-student-mgmt.md`

---

## 四、批量生成流程

### 4.1 标准流程

```
教师极简输入 → AI并行解析每个学生 → 预加载课程/档案 →
并行生成个性化课评 → 质量检查 → 【自动双轨保存】→ 【🗑️ 自动删除临时表单】→ 完成
```

**预加载说明**：
- **课程预加载**：系统根据日期自动计算学期周数，匹配课程主题和知识点（详见 [`15-semester-weeks.md`](15-semester-weeks.md)）
- **档案预加载**：调取学生画像（性格气质、学习特点、历史表现）实现千人千面生成（详见 [`30-student.md`](30-student.md)）

### 4.2 批量输出界面

```
━━━━━━━━━━━━━━━━━━━━━━━
📊 批量生成完成（5份）｜发现世界-周四19点｜DISC-007
━━━━━━━━━━━━━━━━━━━━━━━

✅ 乔乔      198字  正常
✅ 昊昊      205字  正常
⚠️  小强      165字  偏短
✅ 张小明[体验] 192字  体验学生
✅ 李小红[补课] 201字  补课学生

【批量操作】
[全部发送] [逐个查看] [标记修改] [取消]
━━━━━━━━━━━━━━━━━━━━━━━
```

### 4.3 自动通过条件（同时满足）

- ✅ 学生有完整档案
- ✅ 字数在弹性范围内（180-350字）
- ✅ 无敏感词/异常表述
- ✅ 情绪描述合理

### 4.4 需教师关注条件（任一满足）

- ⚠️ 体验/补课学生（无档案）
- ⚠️ 字数偏差>20字
- ⚠️ 检测到负面情绪词
- ⚠️ 与上周表现差异过大
- ⚠️ 内容重复度高

---

## 五、存储规则（课评规范标准结构）

> ⚠️ **课评规范V1.0强制要求**：课评必须按次按学生**单独文件**保存，不可用汇总文件代替单次课评。目录结构必须遵循 `.claude/memory/class/` 标准，否则课评完成率自动化统计无法识别。

### 5.1 标准目录结构

```
.claude/memory/class/
├── {班级名称}/                    # 命名：{课程编号}{老师}{星期时间}（如 AICODE03小Q周五1900）
│   ├── summaries/                 # 班级总结/群发文案
│   │   ├── YYYYMMDD_课程编号-课次_班级反馈.md
│   │   └── YYYYMMDD_课程编号-课次_微信群.txt
│   ├── {学生姓名}/                # 学生个人目录
│   │   ├── feedback/              # 【个人课评目录 - 核心】
│   │   │   ├── YYYYMMDD_课程编号-课次.md              # 正常课评
│   │   │   ├── YYYYMMDD_课程编号-课次(请假).md        # 请假记录
│   │   │   └── YYYYMMDD_课程编号-课次(补课-去班级名).md # 补课追踪
│   │   └── profile.md             # 学生画像
│   └── 补课/                      # 补课学生专用目录
│       └── {学生姓名}/
│           └── feedback/
│               └── YYYYMMDD_课程编号.md
├── {班级名称2}/
└── ...
```

### 5.2 文件命名规范

#### 课程编号规则

**必须与校宝排课系统中的 `class_name` 完全一致**：

| 校宝 class_name | 标准编号 | 说明 |
|----------------|---------|------|
| CSP01信息学奥赛01 | **CSP01** | C++ 信息学奥赛班 |
| AICODE03AI编程创新课03 | **AICODE03** | AI 编程创新班 |

**强制规则**：
- C++ 班统一用 `CSP`，不得用 `C++`、`信奥` 等
- AI 编程班统一用 `AICODE`，不得用 `AI`、`AI03` 等缩写

#### 文件命名格式

| 类型 | 格式 | 示例 |
|------|------|------|
| 单次课评 | `YYYYMMDD_课程编号-课次.md` | `20260418_CSP05-07.md` |
| 请假记录 | `YYYYMMDD_课程编号-课次(请假).md` | `20260505_CSP05-10(请假).md` |
| 补课追踪 | `YYYYMMDD_课程编号-课次(补课-去班级名).md` | `20260505_CSP05-10(补课-去AICODE03茄子周六1600).md` |
| 班级反馈 | `YYYYMMDD_课程编号-课次_班级反馈.md` | `20260418_CSP05-07_班级反馈.md` |
| 群发文案 | `YYYYMMDD_课程编号-课次_微信群.txt` | `20260418_CSP05-07_微信群.txt` |
| 月度总结 | `YYYY-MM_月度总结.md` | `2026-04_月度总结.md` |
| 学生画像 | `profile.md`（固定名） | `profile.md` |

#### 日期规则（关键）

**文件名中的 `YYYYMMDD` 必须与校宝 `teaching_date` 完全一致。**

| 校宝 teaching_date | 正确文件名 | 错误文件名 | 原因 |
|-------------------|-----------|-----------|------|
| 2026-05-10（周六） | `20260510_CSP01-10.md` | `20260511_CSP01-10.md` | 05-11是周日，非上课日 |
| 2026-05-09（周五） | `20260509_AICODE04-09.md` | `20260510_AICODE04-09.md` | 应取校宝日期而非提交日期 |

### 5.3 考勤状态文件检测

AI及自动化系统扫描 `feedback/` 目录时，通过文件名后缀判断状态：

| 文件名匹配 | 判定 |
|-----------|------|
| `YYYYMMDD_课程编号-课次.md` | 正常课评，计为到课 |
| `YYYYMMDD_课程编号-课次(请假).md` | 请假，不要求课评 |
| `YYYYMMDD_课程编号-课次(补课-去班级名).md` | 补课追踪，课评在补课班级 |

### 5.4 双轨保存机制（新规范）

| 存储位置 | 标准路径 | 用途 | 保存时机 |
|---------|---------|------|:--------:|
| **个人课评文件** | `feedback/YYYYMMDD_课程编号-课次.md` | 单次个人课评 | 生成后自动保存 |
| **班级总结** | `summaries/YYYYMMDD_课程编号-课次_班级反馈.md` | 班级群发文案 | 课后编写 |
| **学生画像** | `profile.md`（固定名） | 学生基础信息 | 建档时创建 |

#### 班级总结文件完整模板

班级总结文件（`summaries/YYYYMMDD_课程编号-课次_班级反馈.md`）使用以下统一模板框架，所有班级总结一致：

##### 模板结构总览

```
┌─ YAML Frontmatter（元数据）─────────────────────────┐
│  class, week, course, theme, date                   │
│  status: total/present/make_up/absent               │
│  students: name + status 列表                       │
├─ 标题 ────────────────────────────────────────────────┤
│  # {班级} 第{X}周汇总                                 │
├─ Quote行（课程信息）─────────────────────────────────┤
│  > 课程代码 / 上课日期 / 课程主题 / 班级人数          │
├─ 本周课评状态表 ──────────────────────────────────────┤
│  | 学生 | 状态 | 类型 | 档案位置 | 操作 |             │
├─ 学生课评列表 ────────────────────────────────────────┤
│  ## 学生课评列表                                      │
│                                                       │
│  ### {学生名} - {类型} ✅/🔄                        │
│  **基本信息**（表现标签 + 情绪状态）                  │
│  **课评内容**（代码块 ``` 包裹正文）                  │
│  **教师备注**（生成时间 + 确认状态）                  │
│  **教师备注**（状态 + 个人档案 + 亮点）              │
│  ---                                                 │
│                                                       │
│  ### {请假学生} - ❌ 请假                            │
│  **状态**：请假，未生成课评                          │
├─ 本周班级整体情况 ────────────────────────────────────┤
│  ## 本周班级整体情况                                  │
│  ### 本周表现分布（表格）                             │
│  ### 共性观察（整体表现/主题掌握/亮点/挑战）          │
│  ### 需关注学生                                       │
│  ### 下周重点                                         │
├─ 页脚 ────────────────────────────────────────────────┤
│  *生成时间：{YYYY-MM-DD}*                             │
└────────────────────────────────────────────────────────┘
```

##### 完整模板源码

```markdown
---
class: {班级目录名}
week: {周数}
course: {课程编号}
theme: {课程主题}
date: {YYYY-MM-DD}
status:
  total: {总人数}
  present: {出勤人数}
  make_up: {补课人数}
  absent: {请假人数}
students:
  - name: {学生名}
    status: present/absent/make_up
  - name: ...
---

# {班级名称} 第{周数}周汇总

> 课程代码：{课程编号}
> 上课日期：{YYYY-MM-DD}
> 课程主题：{主题（知识点）}
> 班级人数：{N}人（出勤{M}人，请假{K}人）

---

## 本周课评状态

| 学生 | 状态 | 类型 | 档案位置 | 操作 |
|:-----|:----:|:----:|:---------|:----:|
| {学生名} | ✅ 已保存 | 常规学生 | 本班 | [查看] |
| {补课学生} | ✅ 已保存 | 补课学生 | 补课 | [查看] |
| {请假学生} | ❌ 请假 | 常规学生 | 本班 | - |

---

## 学生课评列表

### {学生名} - 常规学生 ✅ / 补课学生 🔄

**基本信息**
- 表现标签：{根据课评内容提炼标签，逗号分隔}
- 情绪状态：{稳定/开心/积极/波动等}

**课评内容**

```
{课评正文，使用代码块包裹}
```

**教师备注**
- 生成时间：{YYYY-MM-DD HH:MM}
- 确认状态：☑️ 已确认

---

**教师备注**：
- 状态：已保存
- 个人档案：已同步
- 亮点：{提炼亮点}

---

### {请假学生} - ❌ 请假

**状态**：请假（或停课），未生成课评

---

## 本周班级整体情况

### 本周表现分布

| 维度 | 优秀 | 良好 | 合格 | 需关注 |
|:------|:---:|:---:|:---:|:----:|
| 参与度 | {人数} | {人数} | {人数} | {人数} |
| 知识点掌握 | {人数} | {人数} | {人数} | {人数} |
| 情绪状态 | {人数} | {人数} | {人数} | {人数} |

### 共性观察
1. **整体表现**：{总结}
2. **主题掌握**：{总结}
3. **亮点**：{总结}
4. **挑战**：{总结}

### 需关注学生
- {名单及原因}

### 下周重点
1. 预告下周课程：{课程编号} {主题}
2. 重点：{核心知识点}

---

*生成时间：{YYYY-MM-DD}*
```

##### 各情况处理细则

| 情况 | 状态列 | 类型列 | 课评内容 |
|:-----|:------:|:------:|:---------|
| **常规出勤** | ✅ 已保存 | 常规学生 | 完整课评正文（代码块） |
| **补课学生** | ✅ 已保存 | 补课学生 | 完整课评正文（代码块），基本信息如实填写 |
| **请假** | ❌ 请假 | 常规学生 | `**状态**：请假，未生成课评` |
| **停课** | 🚫 停课 | 停课学生 | `**状态**：已停课，不生成课评` |
| **全部请假** | — | — | 仅保留课评状态表，学生课评列表写状态即可，共性观察处说明"本周全部请假/停课" |

##### 基本信息字段填写规则

表现标签：根据课评内容提炼3-5个关键词标签，如"积极搭建"、"圆周运动理解"、"创意改造"、"编程巩固"、"主动互动"等，体现学生本节课的核心表现亮点。

情绪状态：综合判断本节课的情绪基调，如"稳定"、"开心/稳定"、"积极/稳定"、"波动"等。

##### 代码块规范

每位有课评正文的学生，其课评文字必须用**代码块 ` ``` ` 包裹**（而非引用块 `>` 或纯文本），以便在 VS Code 预览时右上角显示**复制按钮**，方便一键复制。

请假/体验等无课评正文的学生，用 `**状态**：` 描述即可，无需代码块。

### 5.5 存储优先级

1. **第一优先级**：个人课评文件 `feedback/*.md`（必须存在，关系到完成率统计）
2. **第二优先级**：班级总结 `summaries/*.md`（课后必写，但不影响个人完成率）

### 5.6 失败处理

- 个人课评文件保存失败 → 记录到待补存队列，下次生成前自动补存
- 教师可输入`补存`或`同步`手动触发

---

## 六、推荐工作流程

### 6.1 课后5分钟快速流程

```
Step 1（1分钟）: 指定班级
/课评 班级：发现世界-周四19点

Step 2（2分钟）: 速记输入
乔乔：gj5→zd3→zt ↑++
昊昊：慢热→zd3→反复调 →
小明[体验]：zd3 ↑
小红[补课]：专注完成 →

Step 3（2分钟）: 查看并保存
AI生成 → 查看质量报告 → 课评保存完成 → 🗑️ 自动清理表单 → 完成

完成！课评已自动双轨保存，无需确认。
```

### 6.2 不同场景推荐

| 场景 | 推荐方式 | 预计时间 |
|------|---------|----------|
| 常规课后（8人） | 速记批量输入 | 3-5分钟 |
| 重点关注学生 | 自然语言详细描述 | 2-3分钟/人 |
| 边走边记 | 语音转文字 | 实时 |
| 周汇总整理 | 查看班级周汇总文件 | 1分钟 |

---

## 七、自动双轨保存机制（核心功能）

> 课评生成后立即自动保存为个人课评文件 + 班级总结，无需教师确认

### 7.1 机制概述

```
生成阶段                    保存阶段                           完成阶段
─────────                  ─────────                         ─────────
AI生成课评              →  【自动保存】                   →  课评持久化保存
     ↓                         ↓                                 ↓
质量检查通过            →  feedback/YYYYMMDD_课程编号.md       →  🗑️ 自动删除临时表单
                            + summaries/YYYYMMDD_课程编号_班级反馈.md  →  完成（无需确认）
```

**核心原则**：
- ✅ **生成即保存**：课评生成后立即自动保存为单次课评文件到 `feedback/`
- ✅ **无需确认**：教师无需点击"确认"，课评直接生效
- ✅ **全程可修改**：生成后教师可随时修改文件内容
- ✅ **文件名即考勤**：有课评文件即视为出勤

### 7.2 保存流程

#### 标准流程

```
教师输入表现 → AI生成课评 → 质量检查 → 【自动保存到 feedback/】→ 完成
```

#### 详细步骤

```python
def on_evaluation_generated(student, evaluation, class_info):
    """课评生成后自动触发"""
    
    # 1. 质量检查
    if not quality_check(evaluation):
        return regenerate(student)
    
    # 2. 构建文件名和路径
    date = class_info['teaching_date']  # 取校宝排课日期，非编写日期
    course_code = class_info['course_code']  # 如 CSP05-07 或 AICODE03-05
    filename = f"{date}_{course_code}.md"
    filepath = f".claude/memory/class/{class_info['class_dir']}/{student}/feedback/{filename}"
    
    # 3. 自动保存个人课评文件
    try:
        save_to_file(filepath, format_evaluation(evaluation))
        log_success(f"{student} 课评已保存：{filepath}")
    except SaveError as e:
        log_error(f"个人课评文件保存失败：{e}")
        return retry_or_alert()
    
    # 4. 展示给教师（已保存状态）
    return show_to_teacher(student, evaluation, filename=filename, status="已保存")
```

### 7.3 学生类型与文件路径对照

| 类型 | 档案状态 | 课评文件保存路径 |
|:-----|:---------|:----------------|
| **正式学生** | 有档案 | `.claude/memory/class/{班级}/{学生}/feedback/YYYYMMDD_课程编号-课次.md` |
| **本班补课** | 有档案（本班） | `.claude/memory/class/{班级}/{学生}/feedback/YYYYMMDD_课程编号-课次.md` |
| **跨班级补课** | 有档案（他班） | `.claude/memory/class/{补课班级}/补课/{学生}/feedback/YYYYMMDD_课程编号-课次.md` |
| **其他老师班级补课** | 有档案（其他老师） | `.claude/memory/class/{班级}/补课/{学生}/feedback/YYYYMMDD_课程编号-课次.md` |
| **体验/临时学生** | 无档案 | `.claude/memory/class/{班级}/补课/{学生}/feedback/YYYYMMDD_课程编号-课次.md` |
| **缺课学生** | 有档案 | ❌ 不生成课评 |

> **⚠️ 重要**：跨班级补课学生必须放在 `补课/` 目录下，否则自动化统计系统的三级查找可能无法识别。

### 7.4 自动触发条件

| 场景 | 触发动作 | 自动保存 |
|:-----|:---------|:--------:|
| 单学生课评生成完成 | 立即触发 | 班级汇总 + 个人档案（双轨）|
| 批量课评全部生成完成 | 全部生成后批量触发 | 班级汇总 + 个人档案（双轨，批量）|
| 课评修改完成 | 立即触发 | 班级汇总 + 个人档案（双轨，更新）|

**自动保存优先级**：
```
优先级1（必须成功）：个人课评文件 feedback/*.md
   ↓ 成功
优先级2（允许失败）：班级总结 summaries/*.md
   ↓ 失败
加入待补存队列，下次触发时重试
```

### 7.5 教师交互指令

#### 查看类指令

| 指令 | 功能 | 返回内容 |
|:-----|:-----|:---------|
| `查看{学生}` | 查看指定学生课评详情 | 完整课评内容 + 状态 + 操作按钮 |
| `查看全部` | 查看所有已生成课评 | 列表视图，含快速操作 |
| `查看本周` | 查看本周班级汇总 | 打开本周班级汇总文件 |

#### 修改类指令

| 指令 | 功能 | 触发动作 |
|:-----|:-----|:---------|
| `修改{学生}：{内容}` | 修改指定学生课评 | 直接编辑，更新班级汇总和个人档案 |
| `重生成{学生}` | 完全重新生成 | 删除原课评，重新生成，自动双轨保存 |
| `删除{学生}` | 删除该学生课评 | 从班级汇总和个人档案中删除（保留记录）|

### 7.6 修改规则

#### 支持修改的范围

| 修改类型 | 示例 | 处理方式 | 字数限制 |
|:---------|:-----|:---------|:--------:|
| 词语替换 | "搭建"→"拼搭" | 直接替换 | 不影响 |
| 称呼修改 | "乔乔"→"昕乔" | 全文替换 | 不影响 |
| 内容补充 | 在"完成了"后添加"还帮助了同伴" | 插入文本 | 单条≤50字 |
| 内容删除 | 删除"这个调整值得注意" | 删除文本 | 单条≤50字 |
| 情绪调整 | "开心"→"兴奋" | 替换关键词 | 不影响 |

#### 不支持修改的场景（需重生成）

- 改变课评结构（如从3段改为4段）
- 改变评价基调（从负面改为正面）
- 补充大量内容（>100字）
- 改变课程主题理解

#### 修改流程

```
教师：修改乔乔：把"搭建"改为"拼搭"
      ↓
AI定位班级汇总中乔乔的课评
      ↓
执行替换 → 字数检查 → 质量检查
      ↓
更新班级汇总文件
      ↓
同步更新个人档案（如有）
      ↓
提示修改完成
```

### 7.7 个人课评文件内容格式

#### 标准课评模板（单次文件）

个人课评文件 `feedback/YYYYMMDD_课程编号-课次.md` 内容格式：

```markdown
# 课程名称：CSP05-07 初等数论2

**授课日期**: 2026-04-18

**课评内容**：
学生本节课课堂非常认真，三类作业全部完成。但课堂练习调试12次（2次运行错误、3次答案错误、2次编译错误），说明边界条件和代码规范性还需加强。建议每道题重新手写框架，减少复用旧代码，这样基础更扎实。

课后整理埃氏筛法模板，记录今天的坑点。

---
**老师签名：XXX**
```

#### 请假记录模板

```markdown
# 请假记录

**日期**: 2026-05-05
**课程**: CSP05-10
**学生**: 刘毅潇
**状态**: 请假
**原因**: （如有）
```

#### 补课追踪模板（补课班级侧）

文件开头可以注明补课来源（仅作元信息，正文不提及补课）：

```markdown
（补课，来自 AICODE06洋芋周日1400）

{正常课评内容，完全不提补课}
```

### 7.8 失败处理机制

| 失败类型 | 处理方式 | 教师感知 | 补偿机制 |
|:---------|:---------|:---------|:---------|
| 班级汇总写入失败 | 立即重试3次，仍失败则报错 | 显示错误提示 | 手动重试按钮 |
| 个人档案写入失败 | 标记FAILED，加入待补存队列 | 静默处理，下次提示 | 自动补存 |
| 并发冲突（班级） | 自动合并（追加模式） | 无感知 | 自动解决 |
| 并发冲突（个人） | 队列化处理，串行重试 | 延迟1-2秒 | 自动重试 |
| 磁盘满/权限不足 | 加入待补存队列，提醒教师 | 显示警告 | 手动触发补存 |

#### 待补存队列处理

```
检测到待补存课评（2条）：

1. 乔乔 - 第7周发现世界
   状态：班级汇总已保存，个人档案保存失败
   原因：磁盘临时满
   [立即补存] [忽略]

2. 昊昊 - 第7周发现世界
   状态：班级汇总已保存，个人档案保存失败
   原因：权限被拒绝
   [立即补存] [忽略]

[全部补存]
```

### 7.9 批量生成界面

#### 生成完成展示

```
━━━━━━━━━━━━━━━━━━━━━━━
📊 课评生成完成（5份）｜发现世界-周四19点｜DISC-007
━━━━━━━━━━━━━━━━━━━━━━━

✅ 已保存

✅ 乔乔      198字  已保存
✅ 昊昊      205字  已保存
✅ 张小明    192字  体验学生（仅班级汇总）
✅ 李小红    201字  补课学生（跨班级自动保存）
⚠️  小强      165字  字数偏短（建议检查）

【操作选项】
[查看全部] [修改] [重生成]
━━━━━━━━━━━━━━━━━━━━━━━
```

#### 逐个查看模式

```
━━━━━━━━━━━━━━━━━━━━━━━
📋 课评详情 1/5 ｜乔乔
━━━━━━━━━━━━━━━━━━━━━━━

【课评内容】
乔乔本节课学习了"旋转飞机"...
（完整课评内容）

【状态】✅ 已双轨保存
【字数】198字 ✅ 符合标准
【质量】✅ 无敏感词 ✅ 情绪合理 ✅ 学生档案完整

【操作】
[查看下一份] [修改] [重生成]
━━━━━━━━━━━━━━━━━━━━━━━
```

### 7.10 状态管理面板

在班级汇总文件顶部自动维护状态面板：

```markdown
---
class: 发现世界-周四19点
week: 7
course: DISC-007
generated_at: 2026-04-17T16:00:00
status:
  total: 5
  saved: 5
  failed: 0
students:
  - name: 乔乔
    status: saved
    saved_at: 2026-04-17T16:05:00
  - name: 昊昊
    status: saved
    saved_at: 2026-04-17T16:06:00
  - name: 张小明
    status: saved
    saved_at: 2026-04-17T16:07:00
    note: 体验学生，仅班级汇总
---

## 本周课评状态

| 学生 | 状态 | 操作 |
|:-----|:----:|:----:|
| 乔乔 | ✅ 已保存 | [查看] [修改] |
| 昊昊 | ✅ 已保存 | [查看] [修改] |
| 张小明 | ✅ 已保存 | [查看] [修改] |
| 李小红 | ✅ 已保存 | [查看] [修改] |
| 小强 | ⚠️ 保存失败 | [重试] [查看] |
```

### 7.11 快捷指令速查

| 场景 | 指令 | 效果 |
|:-----|:-----|:-----|
| 查看全部 | `查看全部` | 查看本周所有已保存课评 |
| 查看单个 | `查看乔乔` | 查看乔乔的课评详情 |
| 修改课评 | `修改乔乔：把"搭建"改为"拼搭"` | 修改指定课评内容 |
| 重生成 | `重生成乔乔` | 重新生成乔乔的课评 |
| 手动补存 | `补存` / `同步` | 手动触发待补存队列处理 |

### 7.12 临时文件自动清理规则

> 每次课评生成的输入数据文件（`.claude/.tmp/evaluation_input_*.json` 和 `EVALUATION_READY.txt` 信号文件）在课评保存完成后自动删除，避免临时数据堆积。

**清理时机**：课评全部保存完成后立即执行，无需用户确认

**清理流程**：
```
课评保存完成 → AI 删除 .claude/.tmp/ 下对应的 JSON 文件和信号文件 → 提示「🗑️ 已清理临时数据文件」
```

**核心原则**：
- ✅ **用完即删**：课评持久化到 `feedback/*.md` 后，临时 JSON 不再需要
- ✅ **不丢失数据**：课评内容已保存在班级目录中，删除 JSON 不影响任何数据
- ✅ **自动执行**：无需用户手动删除，AI 在完成阶段自动处理
- ✅ **安全删除**：仅删除本次会话产生的临时 JSON 和信号文件

**例外情况**：
- 表单 HTML 模板文件（`form_template.html`）不会被删除（是可复用的通用模板）
- 服务器脚本（`form_server.py`）不会被删除
- 仅删除 `.claude/.tmp/` 目录下的本次输入数据文件

---

## 八、出勤统计（嵌入班级汇总）

> 出勤信息直接记录在班级周汇总文件中，无需独立的出勤统计文件

### 8.1 出勤判定规则

| 状态 | 图标 | 判定方式 |
|:-----|:----:|:---------|
| **出勤** | ✅ | 有档案 + 已生成课评 |
| **补课** | 🔄 | 档案在其他班级 + 来本班上课（课评状态表标注） |
| **体验/临时** | 📝 | 无档案 + 已生成课评（课评状态表标注） |
| **缺课** | ❌ | 有档案 + 未生成课评（头部人数自动体现） |

### 8.2 出勤信息位置

出勤数据直接体现在班级周汇总文件中：

**头部信息**（一行搞定）：
```markdown
> 班级人数：{N}人（出勤{M}人，缺勤{K}人）
```

**课评状态表**（已有，兼做出勤记录）：
```markdown
| 学生 | 状态 | 类型 | 操作 |
|:-----|:----:|:----:|:----:|
| 乔乔 | ✅ 已保存 | 常规 | [查看] |
| 小红 | ✅ 已保存 | 补课 | [查看] |
| 小明 | ✅ 已保存 | 体验 | [查看] |
```

### 8.3 查看出勤

| 指令 | 功能 | 返回内容 |
|:-----|:-----|:---------|
| `查看出勤` | 查看本周各班级出勤 | 读取各班级汇总头部信息汇总 |
| `查看{班级}出勤` | 查看指定班级 | 返回该班级汇总的头部+状态表 |
| `标记缺课 {学生}` | 手动标记缺课 | 在班级汇总中添加缺课记录 |

---

## 九、快速编辑功能

支持小修改直接编辑，无需重新生成：

```
修改乔乔：把"搭建"改为"拼搭"
修改昊昊：称呼改为"昊昊小朋友"
修改小明：在"完成了"后添加"还帮助了同伴"
```

**限制**：单次修改不超过50字，单篇累计不超过100字。超出限制建议重新生成。

---

## 十、课评规范V1.0对照规则（强制）

> 以下规则来自上级统一发布的「课评管理规范V1.0」，**所有老师必须遵守**，否则课评完成率自动化统计无法正确识别。

### 10.1 课程编号规范

**班级文件夹中的课程编号必须与校宝排课系统的 `class_name` 一致**：

| 校宝 class_name | 标准编号 | 文件名示例 |
|----------------|---------|-----------|
| CSP01信息学奥赛01 | **CSP01** | `20260418_CSP01-07.md` |
| CSP02信息学奥赛02 | **CSP02** | `20260418_CSP02-07.md` |
| CSP05信息学奥赛05 | **CSP05** | `20260418_CSP05-07.md` |
| AICODE01代码编程入门课01 | **AICODE01** | `20260418_AICODE01-07.md` |
| AICODE02代码编程入门课02 | **AICODE02** | `20260418_AICODE02-07.md` |
| AICODE03AI编程创新课03 | **AICODE03** | `20260418_AICODE03-05.md` |
| AICODE04AI编程创新课04 | **AICODE04** | `20260418_AICODE04-07.md` |
| AICODE06AI编程创新课06 | **AICODE06** | `20260418_AICODE06-07.md` |

**强制规则**：
1. C++竞赛班统一用 `CSP`：不得使用 `C++`、`信奥`、`信息学` 等作为课程前缀
2. AI编程班统一用 `AICODE`：不得使用 `AI`、`AI03`、`AI01` 等缩写，必须是完整编号
3. **编号必须与校宝一致**：校宝叫 CSP01 就是 CSP01，叫 AICODE03 就是 AICODE03

### 10.2 目录结构标准

```
.claude/memory/class/
├── {课程编号}{老师}{星期时间}/   # 如 AICODE03小Q周五1900
│   ├── summaries/
│   ├── {学生姓名}/
│   │   ├── feedback/
│   │   │   └── YYYYMMDD_课程编号-课次.md
│   │   └── profile.md
│   └── 补课/
│       └── {学生姓名}/
│           └── feedback/
│               └── YYYYMMDD_课程编号.md
└── ...
```

### 10.3 日期匹配规则

**文件名中的 YYYYMMDD 必须与校宝 teaching_date 完全一致。**

常见错误：
- ❌ 用课评编写/提交日期而非实际上课日期
- ❌ 周六上课但文件标周日日期
- ❌ 用课次所属周的周一/周日日期

**正确做法**：上完课当天就写完课评，文件名日期取校宝排课日期。

### 10.4 课评完成率统计规则

#### 数据来源
- **出勤基准**：校宝 API 排课数据（`teaching-schedule`），以校宝为准
- **统计范围**：仅统计 CSP 和 AICODE 班级
- **时间范围**：默认上周三到本周二

#### 出勤状态判定

| 校宝 attendance_status | 判定 | 课评要求 |
|----------------------|------|---------|
| 含 `到课`/`出勤`/`签到` | **到课** | 必须有课评文件 |
| 含 `请假` | **请假** | 当天不要求课评 |
| 其他 | **缺勤** | 不要求 |

- 补课学生（`student_identity = 补课`）按到课处理，必须有课评
- 试听学生（`student_identity = 试听`）按到课处理，必须有课评

#### 三级查找规则

对校宝中每个到课学生，系统按以下优先级查找课评文件：

```
校宝记录：学生S 在日期D 到课，排课老师为T，班级编号为B

第1级 → 去老师T的仓库，在班级B对应目录下查找
  路径：T仓库/.claude/memory/class/{含B的目录}/S/feedback/
  文件：YYYYMMDD(D)_*.md（排除汇总/登记/总结/班级反馈）
  找到 → 匹配成功 ✓
  未找到 → 进入第2级

第2级 → 去老师T的仓库，在其他所有班级的 补课/ 目录下查找
  路径：T仓库/.claude/memory/class/{其他班级}/补课/S/feedback/
  找到 → 匹配成功 ✓
  未找到 → 进入第3级

第3级 → 去其他所有老师的仓库，在所有班级的 补课/ 目录下查找
  路径：其他老师仓库/.claude/memory/class/{任意班级}/补课/S/feedback/
  找到 → 匹配成功 ✓
  未找到 → 标记为「缺失」✗
```

#### 完成率计算

```
应发总数 = 到课学生数（本班到课 + 补课到课 + 试听到课）
已完成   = 按三级查找规则匹配到的学生数
完成率   = 已完成 / 应发总数 × 100%
```

请假学生不纳入应发总数。请假学生后续在其他课堂补课（校宝中以补课身份出现），按到课学生处理。

#### 学生名匹配规则

- 去除空格后比较
- 支持包含匹配（如仓库 `梁铭轩` 可匹配校宝 `梁铭轩（大）`）
- 去除后缀标记如 `(am)`、`1` 等再尝试

### 10.5 补课双向记录规范

补课产生两条记录，分别在原班级和补课班级：

**场景**：洋芋老师的学生王五，到茄子老师的 AICODE03 班补课

**1) 原班级侧（洋芋老师）**：
- 文件：`feedback/20260510_AICODE06-03(补课-去AICODE03茄子周六1600).md`
- 内容：简要说明去哪补课

**2) 补课班级侧（茄子老师）**：
- 文件：`补课/王五/feedback/20260510_AICODE03-05.md`
- 内容开头注明：`（补课，来自 AICODE06洋芋周日1400）`，后续正常写课评

### 10.6 课后必做清单

- [ ] 为每位**到课**学生编写个人课评（保存到 `feedback/YYYYMMDD_课程编号-课次.md`）
- [ ] 日期取校宝排课日期，不是编写日期
- [ ] 补课学生必须有课评（放在补课班级的 `补课/学生名/feedback/` 下）
- [ ] 编写班级总结（保存到 `summaries/YYYYMMDD_课程编号-课次_班级反馈.md`）
- [ ] 课程编号使用标准格式（CSP/AICODE），不得使用缩写

---

## 十一、工作流程优化功能（v4.1 新增）

> **优化功能概述**：提升课评生成效率、数据安全性和规范一致性
> **触发方式**：自动启用，配合 `/优化` 或相关指令使用
> **配套技能**：keping-optimizer

### 11.1 三级备份机制（自动启用）

**功能**：防止数据丢失，提供完整恢复选项

**备份策略**：
```
第1级：直接保存到目标路径（主保存）
  └── 路径：.claude/memory/class/...

第2级：同时保存到 .backup/ 目录（时间戳备份）
  └── 路径：.claude/.backup/YYYYMMDD_HHMMSS_{学生}.md

第3级：写入前备份现有文件（防止覆盖）
  └── 路径：原文件路径 + .md.bak
```

**恢复功能**：
- 指令：`/恢复 {学生}` → 列出该学生的所有备份版本
- 指令：`/恢复备份` → 恢复最近一次备份
- 指令：`/清理备份` → 清理超过7天的旧备份

### 11.2 自动补全缺失信息（自动启用）

**功能**：教师只需输入核心表现，系统自动补全日期、课程编号、课次

**自动补全规则**：
| 信息项 | 补全规则 | 默认值 |
|--------|---------|--------|
| **日期** | 取当天日期，格式YYYYMMDD | 20260516 |
| **课程编号** | 根据班级名称自动匹配 | 如AICODE03-01 |
| **课次** | 根据学期周数自动计算 | 第11周 = 课次11 |
| **课程主题** | 根据课程代码+周数自动匹配 | 如"蜥蜴" |

**输入示例**：
```
极简输入：
/课评 班级：发现世界-周四19点
乔乔：gj5→zd3→zt ↑++

自动补全后：
日期：20260516
班级：发现世界-周四19点
课程编号：DISC-011
课次：第11课
课程主题：蜥蜴
```

### 11.3 路径自动创建（自动启用）

**功能**：自动创建不存在的目录结构，避免保存失败

**自动创建的目录结构**：
```
.claude/memory/class/
├── {班级名称}/
│   ├── summaries/ ← 自动创建
│   ├── {学生姓名}/
│   │   └── feedback/ ← 自动创建
│   └── 补课/
│       └── {学生姓名}/
│           └── feedback/ ← 自动创建
└── .backup/ ← 自动创建
```

### 11.4 速记符号自动补全（输入时提示）

**功能**：输入速记符号时实时提示含义，Tab键自动补全

**速记符号速查表**：
| 符号 | 含义 | 完整描述 |
|------|------|---------|
| `gj` | 观望 | gj5=观望5分钟 |
| `zd` | 主动搭 | zd3=主动搭3层 |
| `zt` | 自己调整 | 球卡住时自己调整高度 |
| `wb` | 完成 | 独立完成搭建 |
| `zx` | 专注 | zx15=专注15分钟 |
| `sb` | 失败后调整 | sb2=失败2次后成功 |
| `ts` | 探索 | ts5=探索5分钟 |
| `cz` | 创造 | cz3=3种创意方案 |
| `wt` | 提问 | wt3=提问3次 |
| `hz` | 合作 | 合作完成 |
| `fx` | 分享 | 分享想法/作品 |

**自动补全交互示例**：
```
教师输入：乔乔：gj
系统提示：
  ├─ gj3  → 观望3分钟
  ├─ gj5  → 观望5分钟
  └─ gj10 → 观望10分钟
教师按Tab键：→ gj5
```

### 11.5 实时校验提醒（保存前检查）

**功能**：保存前自动检查规范，提前发现问题

**校验清单**：
| 检查项 | 规范要求 |
|--------|---------|
| **课程编号** | CSP/AICODE前缀，不是C++/AI |
| **日期格式** | YYYYMMDD格式 |
| **目录结构** | 完整路径存在 |
| **文件命名** | 符合规范要求 |
| **课评正文** | 不提及"补课"等词 |
| **字数范围** | 180-350字 |

**校验指令**：
- `/检查` → 检查本周所有课评
- `/检查 {班级}` → 检查指定班级课评

### 11.6 智能班级预加载（开始工作时）

**功能**：根据输入的星期几快速预加载对应班级，并展示每个班级的学生名单

**快捷指令**：
| 指令 | 功能 |
|------|------|
| **`/周几`** | **按上课日快速索引（推荐）**，如 `/周六`、`/周日`、`/周四` |
| `/今天` | 自动判断当天星期几并加载对应班级 |
| `/本周` | 选择本周班级列表 |
| `/模板 {班级}` | 加载班级学生名单模板 |

**/周几 输出格式示例**（以 /周六 为例，其他上课日同理）：
```
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
📅 今天是 2026-05-16（周六）
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

班级 1：发现世界-周六09点（DISC）
├─ 学生名单：乔乔、昊昊、小明、小红
└─ [选择此班级]

班级 2：Wedo创造世界-周六1030（CREATE）
├─ 学生名单：小强、小芳、小华
└─ [选择此班级]

班级 3：AICODE03小Q周六1400（AICODE03）
├─ 学生名单：李明、王芳、张伟、刘洋
└─ [选择此班级]

班级 4：Wedo创造世界-周六16点（CREATE）
├─ 学生名单：赵磊、孙悦、周杰
└─ [选择此班级]

班级 5：发现世界-周六19点（DISC）
├─ 学生名单：陈静、杨帆、黄欣
└─ [选择此班级]
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

操作：点击 [选择此班级] 或直接输入班级名称
```

### 11.7 批量处理优化

**并行生成+逐份实时保存**：
```
教师输入5个学生 → 系统并行生成
→ 乔乔课评生成完成 → 立即保存 ✅
→ 昊昊课评生成完成 → 立即保存 ✅
→ 其他继续...
```

**批量修改工具**：
- `/批量修改 {查找}→{替换}` → 批量替换本周所有课评内容
- `/批量添加 {内容}` → 批量在课评结尾添加内容

### 11.8 待修复列表功能

**位置**：`.claude/.tasks/fix-list-YYYYMMDD.md`

**查看与修复**：
- 指令：`/修复` → 展示待修复列表，逐个处理或批量自动修复

---

## 十二、快捷指令完整列表

### 班级选择
| 指令 | 功能 |
|------|------|
| **`/周几`** | **按上课日快速索引（推荐）**，如 `/周六`、`/周日`、`/周四` |
| `/今天` | 自动判断当天星期几并加载对应班级 |
| `/本周` | 选择本周班级列表 |
| `/班级 {班级名}` | 手动选择指定班级 |

### 模式切换
| 指令 | 功能 |
|------|------|
| `/交互式` | 启用交互式课评生成模式（默认，Form-First 网页表单） |
| `/批量` | 启用批量输入模式 |

### 模板工具
| 指令 | 功能 |
|------|------|
| `/模板 {班级}` | 加载班级学生名单模板 |
| `/空模板` | 创建空模板 |

### 批量操作
| 指令 | 功能 |
|------|------|
| `/批量修改 {查找}→{替换}` | 批量替换课评内容 |
| `/批量添加 {内容}` | 批量在课评结尾添加内容 |

### 数据恢复
| 指令 | 功能 |
|------|------|
| `/恢复 {学生}` | 恢复该学生的备份 |
| `/恢复备份` | 恢复最近一次备份 |
| `/清理备份` | 清理过期备份文件 |

### 校验检查
| 指令 | 功能 |
|------|------|
| `/检查` | 检查本周课评是否符合规范 |
| `/检查 {班级}` | 检查指定班级课评 |

### 保存与补存
| 指令 | 功能 |
|------|------|
| `/补存` | 尝试重新保存失败的课评 |
| `/学生 {姓名}` | 查看学生档案和历史课评 |

### 修复工具
| 指令 | 功能 |
|------|------|
| `/修复` | 处理待修复列表中的项目 |

---

## 十三、高效课后完整工作流程示例

> 以下流程适用于所有上课日（周一~周日），以周六为例展示

### Step 1：智能预加载班级
```
教师：/周六（或 /今天）
→ 显示周六所有班级 + 学生名单 + 当周课程主题：

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
📅 今天是 2026-05-16（周六，第11周）
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

班级 1：发现世界-周六09点（DISC）
├─ 学生名单：乔乔、昊昊、小明、小红
├─ 当周课程：DISC-011 蜥蜴 ✅
└─ [选择此班级]

班级 2：Wedo创造世界-周六1030（CREATE）
├─ 学生名单：小强、小芳、小华
├─ 当周课程：CREATE-011 推磨机器人 ✅
└─ [选择此班级]

...
```

### Step 2：选择班级 → 自动匹配当周课程 + 启动表单服务器
```
教师：1（或 发现世界-周六09点）
→ 系统根据日期自动匹配当周课程主题 → 启动本地表单服务器

🖥️ 本地服务器已启动！
👉 请打开浏览器：http://localhost:8088/form?class=发现世界-周六09点&week=11&course=DISC-011&theme=鳄鱼&date=2026-05-16
   （表单已预填班级、周数、课程、学生名单）
   
   也可在聊天中直接输入（备选）：
   乔乔：gj5→zd3→zt ↑++
   昊昊：慢热→zd3→反复调 →
```

### Step 3：网页表单填写 + 直连提交
```
教师打开表单 →
  ├─ 乔乔：勾选「出勤」→ 输入 gj5→zd3→zt ↑++
  ├─ 昊昊：勾选「出勤」→ 输入 慢热→zd3→反复调 →
  ├─ 小明：勾选「请假」
  ├─ 🔄 补课学生：点「+添加临时学生」→ 输入姓名 → 勾选「补课」→ 输入表现
  └─ 点击「🚀 提交并保存」

→ 数据自动 POST 到本地服务器
→ 服务器保存为 .claude/.tmp/evaluation_input_发现世界-周六09点.json
→ 写入信号文件 .claude/.tmp/EVALUATION_READY.txt
→ 表单显示「✅ 已保存 — 可关闭此页面」
```

### Step 4：AI 自动检测 → 生成并双轨保存
```
→ AI 检测到 EVALUATION_READY.txt 信号文件
→ 读取 JSON 数据 → 解析学生/状态/表现
→ 生成乔乔课评 → 自动保存 ✅
→ 生成昊昊课评 → 自动保存 ✅
→ 小明标记为请假 → 记录到班级汇总
```

### Step 5：实时校验提醒
```
✅ 乔乔：全部通过
⚠️ 昊昊：课程编号不规范，建议改为DISC-011
→ 教师确认修改 → 自动修复后保存
```

### Step 6：检查待修复
```
教师：/修复
→ 查看待修复列表，处理剩余项目
```

### Step 7：完成！
```
━━━━━━━━━━━━━━━━━━━━━━━━
✅ 全部完成！
已保存学生：2人
已备份文件：4份（主文件+备份）
待修复项目：0项
🗑️ 已自动清理临时表单文件
━━━━━━━━━━━━━━━━━━━━━━━━
```

---

## 十四、交互式课评生成流程（v4.5 直连提交版）

> **核心理念**：通过 /周几 快速索引 → 启动本地表单服务器 → 浏览器填写直连提交 → AI 自动检测生成
> **适用场景**：课后按班级处理，交互友好，高效批量，无需粘贴
> **适用范围**：本流程适用于所有上课日（`/周一`~`/周日`），以下以 `/周六` 为例展示
> **v4.5 优化**：表单直连提交 — 数据 POST 到本地服务器，AI 通过信号文件自动触发，彻底取消复制粘贴

### 完整流程

```
Step 1: 启动 → 输入 /周几（如 /周六、/周四，按当天上课日快速索引）
   ↓
Step 2: 展示该时段班级列表（附带当周课程主题）
   ↓
Step 3: 选择班级 → 自动匹配当周课程 → 启动表单服务器
   ↓
Step 4: 打开浏览器表单 → 填写学生表现 → 点击「提交并保存」
   ↓  （数据 POST 到本地服务器，保存为 JSON + 写入信号文件）
Step 5: AI 检测信号文件 → 读取 JSON → 批量生成课评 → 双轨保存
   ↓
Step 6: 🗑️ 自动删除临时文件 → 完成
```

---

### Step 1: 启动 — 快速索引

**输入指令**（支持两种方式）：

| 指令 | 适用场景 | 示例 |
|:-----|:---------|:-----|
| **`/周几`** | 按上课日快速查找（**推荐**） | `/周六`、`/周日`、`/周四` |
| `/今天` | 自动判断当天是周几 | `/今天`（自动换算为当天对应周几） |

**工作日对照表**（系统自动根据班级目录匹配）：

| 指令 | 匹配班级示例 |
|:-----|:-------------|
| `/周一`~`/周三` | 按需显示 |
| `/周四` | 发现世界-周四19点 |
| `/周五` | AICODE03小Q周五1900 |
| `/周六` | 发现世界-周六09点、Wedo创造世界-周六1030、AICODE03小Q周六1400 等 |
| `/周日` | 发明世界-周日14点、SPIKE02-周日1030、发现世界-周日下午16点 等 |

**系统响应**（以教师输入 `/周六` 为例）：

```
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
📅 周六（2026-05-16）的课程
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

班级 1：发现世界-周六09点（DISC）
├─ 学生数：4人（乔乔、昊昊、小明、小红）
└─ [选择此班级]

班级 2：Wedo创造世界-周六1030（CREATE）
├─ 学生数：3人（小强、小芳、小华）
└─ [选择此班级]

班级 3：AICODE03小Q周六1400（AICODE03）
├─ 学生数：4人（李明、王芳、张伟、刘洋）
└─ [选择此班级]

班级 4：Wedo创造世界-周六16点（CREATE）
├─ 学生数：3人（赵磊、孙悦、周杰）
└─ [选择此班级]

班级 5：发现世界-周六19点（DISC）
├─ 学生数：3人（陈静、杨帆、黄欣）
└─ [选择此班级]
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

请回复班级序号或名称来选择班级（如：1 或 发现世界-周六09点）
```

---

### Step 2: 选择班级 → 自动匹配当周课程 + 启动服务器

> ⚠️ **重要**：以下流程适用于所有上课日。选择任何班级后，系统均自动根据**当周日期匹配课程主题** + 启动本地表单服务器。

**教师输入**（任选一种）：
```
1
```
或
```
发现世界-周六09点
```

**系统响应** — 自动加载课程信息 + 匹配当周课程 + 启动服务器：

```
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
✅ 已选择班级：发现世界-周六09点（DISC）
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

📚 课程信息：
├─ 课程编号：DISC-011
├─ 课程主题：鳄鱼（第11周自动匹配）
├─ 核心知识点：嘴巴开合、铰链结构、咬合功能
├─ 日期：20260516

👨‍👩‍👧‍👦 学生：乔乔、昊昊、小明、小红（共4人）

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
🖥️ 启动本地表单服务器...
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

👉 请打开浏览器填写表单：
   http://localhost:8088/form?class=发现世界-周六09点&week=11&course=DISC-011&theme=鳄鱼&date=2026-05-16

   （表单已自动填入班级信息、学生名单和课程主题）
   
   也可在聊天中直接输入文本（备选模式B）：
   乔乔：gj5→zd3→zt ↑++
   昊昊：慢热→zd3→反复调 →
   ...
```

**课程自动匹配逻辑**：
1. 根据当前日期计算学期周数（基于3月2日学期开始）
2. 根据周数直接匹配课程代码和主题（参见 `15-semester-weeks.md` 映射表）
3. **不参考上节课进度**，直接使用当周实际课程主题
4. 仅当教师特别说明补课时，才手动调整课程主题

**特殊情况处理**：
- 若当周为补课（教师明确说明），可手动选择补课主题
- 若无特殊说明，一律使用当周标准课程主题

---

### Step 3: 网页表单填写（直连提交模式）

> 选择班级后系统自动启动本地服务器，表单通过 URL 参数传入班级/学生/课程信息。
> 教师在浏览器中填写表现，点击「提交并保存」后数据直接 POST 到服务器。

**表单内容示例**（自动生成，含学生画像摘要）：

```
┌────────────────────────────────────────┐
│  📝 Wedo创造世界-周六1030 课评输入表      │
│  CREATE-011 · 推磨机器人 · 2026-05-16   │
├────────────────────────────────────────┤
│  📊 填写进度：████████░░ 3/6 人          │
│                                        │
│  ┌─ ① 梁家铭 🧒 ─────────────────┐    │
│  │  📋 需鼓励建立自信...            │    │
│  │  状态：[✅出勤] [🚫请假]        │    │
│  │  表现：______________________   │    │
│  │  (速记: gj#观望/zd#搭#层/zt调整) │    │
│  └────────────────────────────────┘    │
│                                        │
│  ┌─ ② 简思瑜 🧒 ─────────────────┐    │
│  │  📋 自信主动，结构搭建极坚固...    │    │
│  │  状态：[✅出勤] [🚫请假]        │    │
│  │  表现：______________________   │    │
│  └────────────────────────────────┘    │
│          ...                            │
│  ┌─ + 添加临时学生 ──────────────┐    │
│  │  姓名：[____] 状态：[补课/体验] │    │
│  └────────────────────────────────┘    │
│                                        │
│  [🚀 提交并保存]                        │
└────────────────────────────────────────┘
```

**填写方式**（二选一）：

| 方式 | 操作 | 适用场景 |
|:----|:-----|:---------|
| **A. 网页直连提交（推荐）** | 打开浏览器链接 → 填写 → 点击「提交并保存」→ 数据自动 POST 到服务器 | 常规使用 |
| **B. 聊天文本输入** | 在聊天中直接输入多行文本 | 快速处理、数据量少 |

**方式A：网页直连提交流程**：
```
1. 打开系统提供的表单链接（URL 已包含班级/周数/课程/学生）
2. 为每位学生选择状态（出勤/请假/补课/体验）
3. 在文本框中填写表现（支持速记 + 自然语言混合）
4. 点击「🚀 提交并保存」
5. 看到「✅ 提交成功」提示 → 可关闭页面
6. AI 自动检测信号文件 → 生成课评 → 双轨保存
```

**方式B：聊天文本输入（备选）**：
```
乔乔：gj5→zd3→zt ↑++
昊昊：慢热→zd3→反复调 →
小明 体验
小红：搭了3层，开心 ↑
```

### Step 4: AI 自动检测信号 + 批量生成并保存

**触发方式**：表单提交后服务器写入 `.claude/.tmp/EVALUATION_READY.txt` 信号文件，AI 检测到后自动处理。

**系统执行**：
```
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
🔔 检测到新提交的表单数据
   班级：发现世界-周六09点 | DISC-011 鳄鱼
   学生：4人（3人出勤，1人请假）
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

🚀 开始批量生成课评...

[1/3] 生成乔乔课评... ✅ 已保存
[2/3] 生成昊昊课评... ✅ 已保存
[3/3] 生成小红课评... ✅ 已保存
📝 小明标记为请假，不生成课评

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
✅ 全部完成！
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

已保存：3人 | 请假：1人
├─ 班级总结：summaries/20260516_DISC-011_班级反馈.md
└─ 个人课评：乔乔/、昊昊/、小红/
🗑️ 已清理临时信号文件

下一步：
- 继续下一个班级 → 输入 /周几
- 查看班级总结 → [查看总结]
```

---

### 快捷操作速查

| 操作 | 输入格式 | 效果 |
|:-----|:---------|:------|
| **标记请假** | `{学生} 请假` | 标记缺课，不生成课评 |
| **标记体验** | `{学生} 体验` | 体验标记，仅存班级汇总 |
| **标记补课** | `{学生} 补课` | 补课标记，跨班级自动保存 |
| **恢复出勤** | `{学生} 出勤` | 取消特殊标记，恢复默认出勤 |
| **修改已填** | `修改{学生}：新内容` | 替换该学生已填表现 |
| **添加临时学生** | `添加{姓名}` | 添加到列表末尾 |
| **批量生成** | `全部生成` | 一次性生成所有已填课评 |
| **查看汇总** | `查看汇总` | 查看当前已填写的所有学生 |

**标记使用示例**：
```
# 批量填写带标记
乔乔：gj5→zd3→zt ↑++
昊昊：慢热→zd3→反复调 →
小明 体验
小红 请假
小华[补课]：专注完成，情绪稳定 ↑

# 修改已填表现
修改乔乔：gj5→zd3↑↑

# 调整学生标记
小明 出勤（恢复为正式学生）
```

---

## 十五、工作流模式选择

### 两种模式对比

| 模式 | 特点 | 适用场景 |
|------|------|---------|
| **交互式模式** | `/周几` 快速索引 + Form-First 网页表单（含补课/体验区）+ 一键提交 | 课后按班级处理，高效友好 |
| **批量输入模式** | 一次性输入所有学生 | 已有记录，速度优先 |

### 模式切换

```
/交互式 → 启用交互式模式（默认）
/批量 → 启用批量输入模式
```

---

*版本：v4.5（表单直连提交 — 取消复制粘贴，数据直通 AI）*
*最后更新：2026-05-20*
*优化技能：keping-optimizer*
