# 穹狼乐高编程AI课评生成系统

> 为2.5岁-小学4年级学生自动生成个性化课程评价
> 版本：v4.5.1（AICODE03课程更新）| 规则文件：9个核心文件 + 20个归档规则
> 
> **课程匹配规则**：根据当周日期自动匹配课程主题（基于学期周数映射表），不参考上节课进度
> 
> **v4.5 表单直连**：网页表单直接 POST 到本地服务器（`src/form_server.py`），AI 检测信号文件自动处理，彻底取消复制粘贴步骤
> 
> **合规说明**：本仓库已同步 [课评规范V1.0](课评规范V1.0.md) 全部要求，包括课程编号规范、目录结构规范、课评文件命名规范、课评完成率统计规则。确保自动统计系统可正确识别到课评。
> 
> **远程仓库**：`https://git.qonnwolf.com/xiaoq/ClassFeedback.git`

---

## 项目架构

```
classfeedback/
├── CLAUDE.md                   # 本文件：全局索引与快速入口
├── .claude/
│   ├── rules/                  # 规则配置（9个核心文件）
│   │   ├── 00-core.md          # 系统基础+年龄段+课程类型+评价维度+评分标准
│   │   ├── 10-style.md         # 写作风格+三段式结构+Emoji+输入丰富度评估
│   │   ├── 15-semester-weeks.md # 学期周数计算+课程主题映射
│   │   ├── 20-workflow.md      # 输入格式+批量生成+存储规则+自动双轨保存
│   │   ├── 21-shorthand.md     # 速记符号系统（从20-workflow拆分）
│   │   ├── 22-student-mgmt.md  # 补课/新学生/转正规则（从20-workflow拆分）
│   │   ├── 30-student.md       # 画像建立+千人千面+姓名处理
│   │   ├── 50-output-format-preschool.md   # 学龄前输出格式
│   │   ├── 51-output-format-elementary.md  # 小学输出格式
│   │   └── 90-archive/         # 已合并的旧规则归档（20个文件，内容已合并至核心规则）
│   │       ├── 01-student-ages.md  # 年龄段详细特征（已合并至00-core）
│   │       ├── 02-course-types.md  # 课程类型详解（已合并至00-core）
│   │       ├── 03-evaluation-dimensions.md # 评价维度详解（已合并至00-core）
│   │       ├── 06-scoring.md       # 评分标准详解（已合并至00-core）
│   │       ├── 20-style-building.md # 幼儿积木风格（已合并至10-style）
│   │       ├── 21-style-coding.md  # 少儿编程风格（已合并至10-style）
│   │       ├── 22-style-robotics.md # 机器人竞赛风格（已合并至10-style）
│   │       ├── 25-template-preschool-detailed.md # 学龄前手动模板
│   │       ├── 30-input-format.md  # 输入格式详解（已合并至20-workflow）
│   │       ├── 31-class-differentiation.md # 班级差异（已合并至30-student）
│   │       ├── 32-batch-generation.md # 批量生成（已合并至20-workflow）
│   │       ├── 33-first-class-rules.md # 新学生/补课（已合并至20-workflow/22-student-mgmt）
│   │       ├── 35-画像建立指南.md  # 画像建立（已合并至30-student）
│   │       ├── 36-shorthand-learning.md # 速记学习指南
│   │       ├── 37-status-panel.md  # 状态面板（v2.0旧版，已废弃）
│   │       ├── 38-quick-edit.md    # 快速编辑（已合并至20-workflow）
│   │       ├── 40-keping-快速入门.md # 快速入门（v2.5旧版，已废弃）
│   │       ├── 60-name-processing.md # 姓名处理（已合并至30-student）
│   │       └── 70-common-structures.md # 通用结构（已合并至10-style）
│   ├── memory/                 # 记忆数据目录（课评规范标准路径）
│   │   ├── class/              # 【班级数据 - 核心课评目录】
│   │   │   ├── {班级名称}/     # 命名：{课程编号}{老师}{时间}（如AICODE03小Q周五1900）
│   │   │   │   ├── summaries/  # 班级总结/群发文案
│   │   │   │   ├── {学生姓名}/ # 学生个人目录
│   │   │   │   │   ├── feedback/  # 【个人课评目录】
│   │   │   │   │   │   └── YYYYMMDD_课程编号-课次.md
│   │   │   │   │   └── profile.md # 学生画像
│   │   │   │   └── 补课/          # 补课学生专用目录
│   │   │   │       └── {学生姓名}/
│   │   │   │           └── feedback/
│   │   │   │               └── YYYYMMDD_课程编号.md
│   │   │   └── ...
│   │   └── lesson/             # 课程大纲（从独立仓库同步，不提交远端）
│   ├── skills/                 # 技能配置
│   └── settings.json           # 设置
└── src/
    └── evaluation_validator.py # 课评质量验证脚本
```

---

## 快速入口

### 核心规则文件

| 文件 | 内容 | 路径 |
|------|------|------|
| **核心规则** | 系统角色、年龄段、课程类型、评价维度、评分标准 | [`.claude/rules/00-core.md`](.claude/rules/00-core.md) |
| **风格规则** | 三段式结构、语气风格、Emoji使用、字数弹性 | [`.claude/rules/10-style.md`](.claude/rules/10-style.md) |
| **学期周数** | 周数计算、课程主题映射（后端自动匹配） | [`.claude/rules/15-semester-weeks.md`](.claude/rules/15-semester-weeks.md) |
| **工作流程** | 输入格式、批量生成、存储规则、自动双轨保存 | [`.claude/rules/20-workflow.md`](.claude/rules/20-workflow.md) |
| **速记符号** | 核心速记、扩展速记、编程速记、组合示例 | [`.claude/rules/21-shorthand.md`](.claude/rules/21-shorthand.md) |
| **学生特殊处理** | 补课、新学生、跨班级补课、转正规则 | [`.claude/rules/22-student-mgmt.md`](.claude/rules/22-student-mgmt.md) |
| **学生管理** | 画像建立、千人千面、姓名处理 | [`.claude/rules/30-student.md`](.claude/rules/30-student.md) |
| **学龄前输出** | 学龄前课评排版样式与示例 | [`.claude/rules/50-output-format-preschool.md`](.claude/rules/50-output-format-preschool.md) |
| **小学输出** | 小学课评结构化排版与示例 | [`.claude/rules/51-output-format-elementary.md`](.claude/rules/51-output-format-elementary.md) |

### 记忆存储

| 用途 | 标准路径（课评规范） | 说明 |
|------|---------------------|------|
| 课评文件（新） | [`.claude/memory/class/{班级}/{学生}/feedback/`](.claude/memory/class/) | **单次单文件** `YYYYMMDD_课程编号-课次.md` |
| 学生画像（新） | [`.claude/memory/class/{班级}/{学生}/profile.md`](.claude/memory/class/) | 个人画像，固定文件名 |
| 班级总结（新） | [`.claude/memory/class/{班级}/summaries/`](.claude/memory/class/) | 班级群发文案/反馈 |
| 补课学生（新） | [`.claude/memory/class/{班级}/补课/{学生}/feedback/`](.claude/memory/class/) | 跨班级补课课评 |
| 学生档案总览 | [`.claude/memory/class/`](.claude/memory/class/) | 课评规范标准目录 |
| 学期课程总览 | [`.claude/memory/lesson/2026春季学期课程总览.md`](.claude/memory/lesson/2026春季学期课程总览.md) | 课程教案库 |
| 教育理念 | [`.claude/memory/教育理念.md`](.claude/memory/教育理念.md) | 核心教育观 |

---

## 核心规则速查

### 年龄段代码

| 代码 | 学段 | 年龄 | 课程 |
|-----|------|-----|------|
| `AGE_TB` | 托班 | 2.5-3岁 | 意识世界（管道） |
| `AGE_XB` | 小班 | 3-4岁 | 发现世界（螺丝刀） |
| `AGE_ZB` | 中班 | 4-5岁 | 发明世界（智能笔） |
| `AGE_DB` | 大班 | 5-6岁 | 创造世界（WEDO） |
| `AGE_PS_LOW` | 小学低年级 | 6-8岁 | SPIKE |
| `AGE_PS_MID` | 小学中年级 | 8-10岁 | AICODE03 |

### 课程代码

| 代码 | 类型 | 班级 | 教具 | 校宝对应 |
|-----|------|------|------|---------|
| `TUBE` | 管道探索 | 小小班 | 9076+9090 | - |
| `DISC` | 工具发现 | 小班 | 45002 | - |
| `INVENT` | 智能笔编程 | 中班 | 威儿2+9656 | - |
| `CREATE` | WEDO编程 | 大班 | WEDO | - |
| `SPIKE` | SPIKE编程 | 一年级 | SPIKE-PRIME | - |
| `AICODE03` | AI协作开发 | 四年级 | AICODE03 | ✅ AICODE03AI编程创新课03 |
| `CSP` | C++信息学奥赛 | - | - | ✅ CSP01-05（校宝标准编号） |

> **重要**：课程编号必须与校宝排课系统中的 `class_name` 一致。C++班统一用 `CSP`，AI编程班统一用 `AICODE`+编号，不得使用 `AI`、`C++`、`信奥` 等缩写。详见 [20-workflow.md 第10节](.claude/rules/20-workflow.md) 课评规范对照。

### 评分等级

| 分值 | 等级 | 评级 |
|-----|------|-----|
| 4.5-5.0 | 优秀 | A+ |
| 3.5-4.4 | 良好 | A/A- |
| 2.5-3.4 | 合格 | B/B+ |
| 1.5-2.4 | 待改进 | C |
| 1.0-1.4 | 需帮助 | D |

---

## 课评模板结构（5模块覆盖3维度）

### 三段式结构

| 段落 | 内容 | 字数 | Emoji |
|------|------|:----:|:-----:|
| **第1段** | 课程知识点 | 30-55字 | 1个（🔍/💡/⚙️根据内容） |
| **第2段** | 课堂细节（掌握+环节+亮点）| 100-220字 | 1-3个（根据情节自动适配） |
| **第3段** | 课后建议 | 30-55字 | 1个（🏠/🔧根据内容） |

### 字数弹性

| 输入类型 | 输出字数 | 说明 |
|---------|:-------:|:----|
| 精简输入 | 180-220字 | 基础描述 |
| 标准输入 | 220-280字 | 有具体细节 |
| 详细输入 | 280-350字 | 多个亮点 |

---

## 快捷输入速查

### 速记符号

| 速记 | 含义 | 示例 |
|------|------|------|
| `gj#` | 观望#分钟 | `gj5` |
| `zd#` | 主动搭#层 | `zd3` |
| `zt` | 自己调整 | - |
| `↑` | 开心 | `↑++` |
| `→` | 稳定 | - |
| `++` | 比上周进步 | - |

### 学生标记

| 标记 | 含义 | 保存方式 |
|------|------|---------|
| `[补课]` | 补课学生 | 双轨保存（跨班级自动处理） |
| `[体验]` | 体验课学生 | 仅班级汇总 |
| `[缺课]` | 今天缺席 | 仅记录缺席 |
| `[new]` | 新学生首次 | 创建档案，双轨保存 |

### 快速示例

```
/课评 班级：发现世界-周四19点

乔乔：gj5→zd3→zt ↑++
昊昊：慢热→zd3→反复调 →
小明[体验]：搭3层 ↑
```

---

## 处理流程

### 模式一：交互式模式（推荐）

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

```
/周六（或 /今天）→ 展示班级列表（含当周课程主题）→ 选择班级
                                                    ↓
                                         启动本地表单服务器 + 自动匹配当周课程
                                                    ↓
                                         打开浏览器表单 → 填写 → 点击「提交并保存」
                                                    ↓
                                         数据 POST 到服务器 → 保存 JSON + 信号文件
                                                    ↓
                                         AI 检测信号 → 读取 JSON → 批量生成 → 双轨保存
                                                    ↓
                                         🗑️ 清理临时数据 → 完成
```

> **课程匹配说明**：系统根据当前日期计算学期周数，直接匹配当周课程主题（如第11周→DISC-011 蜥蜴），不参考上节课进度。除非教师特别说明补课，否则一律使用当周标准课程主题。

> 友好的多轮对话引导，支持 `/周几` 快速索引 + Form-First 网页表单（含进度条、填写状态、一键复制、补课/体验学生区）。详见 [20-workflow.md 第14节](.claude/rules/20-workflow.md)

### 模式二：批量输入模式

```
教师极简输入 → AI解析 → 生成个性化课评 → 【自动双轨保存】
                                                    ↓
                                          班级汇总（含出勤） + 个人档案
                                                    ↓
                                         教师可随时查看/修改（无需确认）
```

> **自动双轨保存机制**：课评生成后立即自动保存到班级汇总和个人档案，无需教师确认。出勤信息直接体现在班级汇总中。详细规则参见 [20-workflow.md](.claude/rules/20-workflow.md)。

### 存储双轨制（新规范）

> 课评规范V1.0要求：课评必须按次按学生单独文件，**不可用汇总文件代替单次课评**。

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

### 课评完成率统计规则（自动化）

系统按以下规则自动统计课评完成率，**仅统计 CSP 和 AICODE 班级**：

1. **出勤基准**：校宝 API 排课数据（`teaching-schedule`），以校宝为准
2. **查找规则**（三级查找）：
   - 第1级 → 班级目录下，学生/feedback/ 匹配文件日期
   - 第2级 → 本仓库其他班级 补课/ 目录查找
   - 第3级 → 其他老师仓库的 补课/ 目录查找
3. **日期匹配**：文件名中的 `YYYYMMDD` 必须与校宝 `teaching_date` 完全一致
4. **请假标记**：文件名带 `(请假)` 不要求课评
5. **补课追踪**：补课学生必须有课评（放在补课班级的 `补课/` 目录）

> **⚠️ 重要**：如果不按规范导致系统无法识别到课评，将按未完成统计。请确保每位到课学生均有对应日期的个人课评文件。详见 [20-workflow.md 第10节](.claude/rules/20-workflow.md)。

### 学生出勤状态（嵌入班级汇总）

| 状态 | 图标 | 判定规则 |
|:-----|:----:|:---------|
| **出勤** | ✅ | 有档案 + 已生成课评 |
| **缺课** | ❌ | 有档案 + 未生成课评 |
| **补课** | 🔄 | 他班档案 + 来本班上课 |
| **体验/临时** | 📝 | 无档案 + 已生成课评 |

### 快捷指令

#### 模式选择
| 指令 | 功能 |
|:-----|:-----|
| **`/周几`** | **按上课日快速索引（推荐）**，如 `/周六`、`/周日`、`/周四` |
| `/今天` | 自动判断当天星期几，启动交互式流程 |
| `/交互式` | 启用交互式课评生成模式（默认，Form-First 网页表单） |
| `/批量` | 启用批量输入模式（一次性输入所有学生） |

#### 课评操作
| 指令 | 功能 |
|:-----|:-----|
| `查看出勤` | 查看本周各班级出勤（读取汇总头部） |
| `修改{学生名}：把"A"改为"B"` | 修改课评内容（自动同步到两个位置） |
| `重生成{学生名}` | 重新生成课评并保存 |

---

## 版本历史

- **v4.5.1** | 2026-05-20 | AICODE03课程全面更新：同步最新教学大纲（AI原理、大作家系列、个人主页、俄罗斯方块、涂鸦PK、Skills入门等1-20周完整课程）
- **v4.5** | 2026-05-20 | 表单直连提交：网页表单直接 POST 到本地服务器（`src/form_server.py`），AI 检测信号文件自动生成课评，彻底取消复制粘贴步骤；新增临时数据清理机制
- **v4.4** | 2026-05-16 | Form-First 交互式流程优化：课程进度自动推演（改为根据当周日期匹配课程主题，不参考上节课进度）、默认网页表单（Form-First）、表单直连提交、新增项目记忆文件
- **v4.3** | 2026-05-16 | 交互式流程优化：新增 `/周几` 快速索引指令；B模式分开展示学生 + 独立输入区 + 快捷标记按钮（请假/体验/补课/出勤）
- **v4.0** | 2026-05-14 | 同步课评规范V1.0：新增课程编号规范（CSP/AICODE）、新目录结构（`.claude/memory/class/`）、文件命名规范（`YYYYMMDD_课程编号-课次.md`）、课评完成率统计规则
- **v3.1** | 2026-05-05 | 简化保存流程：删除"待确认"状态，改为"生成即双轨保存"；出勤嵌入班级汇总
- **v2.5** | 2026-05-01 | 统一字数弹性范围180-350字
- **v2.0** | 2026-04-17 | 批量生成优化，双轨保存
- **v1.0** | 2026-03-25 | 初始版本
