Files
ClassFeedback/.claude/rules/20-workflow.md

1092 lines
32 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 工作流程规则:输入格式、批量生成、存储与特殊处理
> 合并文件:快捷输入格式 + 批量课评生成 + 新学生/补课处理 + 速记符号 + 快速入门
> 版本v3.1(简化版)| 更新日期2026-05-05
>
> **v3.1 变更**
> - 删除"待确认"状态,改为"生成即双轨保存"
> - 出勤信息嵌入班级周汇总(取消独立出勤文件)
> - 简化教师操作流程
---
## 一、快速入门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自动匹配班级学生名单实时纠正谐音
- "良心桥" → "梁昕乔"
- "中云浩" → "钟昀昊"
---
## 三、速记符号系统
### 3.1 核心速记必会覆盖80%场景)
| 速记 | 含义 | 示例 |
|------|------|------|
| `gj#` | 观望#分钟 | `gj5` = 观望5分钟 |
| `zd#` | 主动搭#层 | `zd3` = 主动搭3层 |
| `zt` | 自己调整 | 遇到问题时自己调整 |
| `wb` | 完成 | 独立完成搭建 |
| `↑` / `kx` | 开心/积极 | 情绪↑ |
| `→` / `wd` | 稳定/平和 | 情绪→ |
| `↓` / `fd` | 烦躁/低落 | 情绪↓ |
| `++` | 比上周进步 | 比上周++ |
| `--` | 需关注 | 需-- |
### 3.2 扩展速记进阶覆盖90%场景)
| 速记 | 含义 | 示例 |
|------|------|------|
| `zx#` | 专注#分钟 | `zx15` = 专注15分钟 |
| `sb#` | 失败#次后调整 | `sb2` = 失败2次后成功 |
| `ts#` | 探索#分钟 | `ts5` = 探索5分钟 |
| `cz#` | 创造#种方案 | `cz3` = 3种创意方案 |
| `wt#` | 提问#次 | `wt3` = 提问3次 |
| `hz` | 合作 | hz完成 |
| `fx` | 分享 | fx想法 |
| `tq` | 求助 | tq→zd |
| `mr` | 融入 | mr→hz |
| `~` / `bd` | 情绪波动 | 情绪~ |
| `=` | 和之前一样 | 和之前= |
### 3.3 编程/技术速记SPIKE/AI03
| 速记 | 全称 | 示例 |
|------|------|------|
| `bc` | 编程 | bc→ts |
| `ts#` | 调试#次 | ts3 |
| `cx` | 创新/优化 | cx→效果更好 |
| `tj` | 分析/提交 | tj→解决 |
| `cw` | 错误/bug | cw→fx→修正 |
### 3.4 速记组合示例
```
输入: 乔乔gj5→zd3→zt ↑++
展开: 乔乔观望5分钟后主动搭3层自己调整开心比上周进步
输入: 丞丞ts5→cz2→wt3 ↑↑
展开: 丞丞探索5分钟创造了2种方案主动提问3次非常兴奋
输入: 一栩bc→ts3→cx ↑+
展开: 一栩编程后调试3次然后优化了方案情绪好转
```
### 3.5 速记与自然语言混用规则
**优先级**:速记符号 > 自然语言描述
| 场景 | 处理方式 |
|------|---------|
| 无冲突 | 正常解析 |
| 时间冲突 | 以速记数值为准,自然语言作为补充描述 |
| 行为冲突 | 以速记为准,数值冲突时提示确认 |
---
## 四、学生类型标记
### 4.1 标记说明
| 标记 | 含义 | 处理方式 | 保存位置 |
|------|------|----------|---------|
| 无标记 | 正式学生 | 双轨保存 | 班级汇总+个人档案 |
| `[补课]` | 补课学生 | 自动检测档案位置,跨班级自动双轨保存 | 班级汇总+个人档案 |
| `[体验]` | 体验课学生 | 仅班级汇总 | 班级汇总(标记体验) |
| `[缺课]` | 今天缺席 | 记录缺席 | 班级汇总(标记缺课) |
| `[new]` | 新学生首次 | 创建档案 | 班级汇总+个人档案 |
### 4.2 标记使用示例
```
批量输入示例:
周四19点 DISC-007
乔乔gj5→zd3→zt ↑++
昊昊慢热→zd3→反复调 →
张小明[体验]搭了3层开心
李小红[补课]:专注完成,稳定
```
**AI自动处理**
- 乔乔、昊昊:双轨保存
- 张小明[体验]:仅保存到班级汇总,不询问
- 李小红[补课]:检查档案 → 当前班级存在 → 双轨保存;其他班级存在 → **自动跨班级双轨保存**
---
## 五、补课学生处理
### 5.1 核心规则
**绝对禁止**:课评正文中绝对不能提及学生来补课相关内容。
- ❌ 禁止出现"补课"、"补课上"、"来补课"、"本次补课"
- ❌ 禁止暗示学生非正常上课("今天特别来参加"、"临时加入"、"从其他班级过来"
- ✅ 课评正文完全按正常学生撰写
-`[补课]`标记仅用于后台档案管理
**示例**
```
教师输入:李小红[补课]搭了3层专注完成
课评输出(正确):
小红本节课学习了"旋转飞机",认识了游乐园旋转设施的中心轴结构...
(正常撰写,完全不提"补课"
课评输出(错误):
小红本节课作为补课学生,学习了"旋转飞机"... ❌
小红今天来补课,学习了"旋转飞机"... ❌
```
### 5.2 补课学生分类处理
**情况A自己班级的学生补课**
- **判断**:学生在 `memory/student/{当前班级}/` 目录中存在
- **处理**:正常双轨保存(班级汇总 + 个人档案)
**情况B跨班级补课档案在其他班级**
- **判断**:学生在 `memory/student/{其他班级}/` 目录中存在
- **处理**:自动双轨保存(跨班级模式)
- ✅ 保存到补课班级周汇总
- ✅ 追加到原班级个人历史课评记录.md标注补课班级信息
- **无需询问,自动完成**
**情况C其他老师班级补课学生**
- **判断**:任何班级都不存在该学生档案
- **处理**:询问后决定
- [1] 仅保存到班级汇总
- [2] 创建新档案(双轨保存)
### 5.3 跨班级补课示例
```
教师输入:班级:发现世界-周六09点林瀚丞[补课]:积极分析课程任务,专注完成了绿色身体、黑色头部的蜥蜴设计
AI检测
- 未找到「林瀚丞」在「发现世界-周六09点」的个人档案
- ✅ 找到「林瀚丞」在「发现世界-周四19点」的个人档案
判断跨班级补课学生原班级周四19点补课班级周六09点
自动处理:
→ 课评保存到「第8周/发现世界-周六09点.md」补课班级周汇总
→ 课评追加到「student/发现世界-周四19点/林瀚丞/历史课评记录.md」原班级个人档案
标注【跨班级补课】本节课程在周六09点班完成
```
---
## 六、新学生处理
### 6.1 首次上课(新学生)
**课评提及条件**
- **仅在教师输入中明确写明"第一次上课"、"新学生"等关键词时,才能在课评中提及**
- 如果教师未明确说明,课评中**不自动添加**"这是孩子第一次上课"等表述
**正确示例**
```
教师输入小明第一次上课开始不敢碰后来搭了3层
课评输出:这节课是小明第一次上课,开始有点害羞...
```
**错误示例**
```
教师输入小明开始不敢碰后来搭了3层
课评输出:这节课是小明第一次上课... ❌(教师未说明)
```
### 6.2 禁止自动推断
-**禁止AI自动推断学生是补课还是第一次上课**
- ❌ 禁止根据表现猜测(如"表现生疏"→"可能是第一次"
- ✅ 完全依赖教师输入中的明确标记
---
## 七、批量生成流程
### 7.1 标准流程
```
教师极简输入 → AI并行解析每个学生 → 预加载课程/档案 →
并行生成个性化课评 → 质量检查 → 【自动双轨保存】→ 完成
```
### 7.2 批量输出界面
```
━━━━━━━━━━━━━━━━━━━━━━━
📊 批量生成完成5份发现世界-周四19点DISC-007
━━━━━━━━━━━━━━━━━━━━━━━
✅ 乔乔 198字 正常
✅ 昊昊 205字 正常
⚠️ 小强 165字 偏短
✅ 张小明[体验] 192字 体验学生
✅ 李小红[补课] 201字 补课学生
【批量操作】
[全部发送] [逐个查看] [标记修改] [取消]
━━━━━━━━━━━━━━━━━━━━━━━
```
### 7.3 自动通过条件(同时满足)
- ✅ 学生有完整档案
- ✅ 字数在弹性范围内180-350字
- ✅ 无敏感词/异常表述
- ✅ 情绪描述合理
### 7.4 需教师关注条件(任一满足)
- ⚠️ 体验/补课学生(无档案)
- ⚠️ 字数偏差>20字
- ⚠️ 检测到负面情绪词
- ⚠️ 与上周表现差异过大
- ⚠️ 内容重复度高
---
## 八、存储规则
### 8.1 双轨保存机制
| 存储位置 | 文件路径 | 用途 | 时机 |
|---------|---------|------|------|
| **班级周汇总** | `memory/class-evaluation-summary/第X周/{班级}.md` | 每周全班课评汇总(含出勤) | 生成后自动保存 |
| **个人档案** | `memory/student/{班级}/{学生名}/历史课评记录.md` | 个人完整轨迹 | 生成后自动保存 |
### 8.2 存储优先级
1. **第一优先级**:班级周汇总(必须成功)
2. **第二优先级**:个人档案(允许失败,下次补存)
### 8.3 失败处理
- 班级汇总保存成功,个人档案保存失败 → 记录到待补存队列,下次生成前自动补存
- 教师可输入`补存``同步`手动触发
### 8.4 学生类型保存对照
| 类型 | 标记 | 保存位置 |
|------|------|---------|
| 正式学生 | 无标记 | 班级汇总 + 个人档案 |
| 本班补课 | `[补课]` + 当前班级档案存在 | 班级汇总 + 个人档案 |
| 跨班级补课 | `[补课]` + 其他班级档案存在 | 班级汇总(补课班级)+ 个人档案(原班级,标注补课信息)|
| 体验学生 | `[体验]` | 仅班级汇总 |
| 缺课学生 | `[缺课]` | 仅班级汇总(记录缺席)|
### 8.5 班级周汇总文件格式
班级周汇总文件包含以下部分:
#### 头部信息
```markdown
# {班级名} 第{X}周汇总
> 课程代码:{CODE-XXX}
> 课程主题:{主题名称}{知识点}
> 上课日期:{YYYY-MM-DD}{星期} {时间段}
> 班级人数:{N}人(出勤{M}人,缺勤{K}人)
> 代课老师:{老师姓名(如有)}
```
> **规则**
> 1. 如未特别标明代课老师,默认本班由常规老师授课,头部信息中不显示代课老师字段,班级整体情况中不显示代课老师反馈部分。
> 2. **出勤判定**:有课评=出勤,无课评=缺课。补课/体验在课评状态表中标注。
#### 本周课评状态
```markdown
## 本周课评状态
| 学生 | 状态 | 类型 | 档案位置 | 操作 |
|:-----|:----:|:----:|:---------|:----:|
| {姓名}{小名} | ✅ 已保存 | 常规学生 | 本班 | [查看] [修改] |
| {姓名}{小名} | ✅ 已保存 | 补课学生 | {原班级} | [查看] [修改] |
| {姓名}{小名} | ✅ 已保存 | 体验学生 | - | [查看] [修改] |
```
#### 学生课评列表
每个学生包含:
- 学生姓名(小名)
- 类型标记(补课/体验/常规)
- 三段式课评内容
- 教师备注
#### 本周班级整体情况
```markdown
## 本周班级整体情况
### 课程目标达成度
- **知识点掌握**{主题}{N}/{N}学生掌握)
- **技能操作**{技能点}{掌握情况}
- **{其他维度}**{评估结果}
### 共性亮点
1. {亮点1}
2. {亮点2}
3. {亮点3}
### 共性问题
1. {问题1}
2. {问题2}
### 教师反馈
> {授课老师的整体评价}
>
> **注**:如为代课老师授课,标题改为"代课老师反馈",并注明代课老师姓名。
```
---
## 九、推荐工作流程
### 9.1 课后5分钟快速流程
```
Step 11分钟: 指定班级
/课评 班级:发现世界-周四19点
Step 22分钟: 速记输入
乔乔gj5→zd3→zt ↑++
昊昊慢热→zd3→反复调 →
小明[体验]zd3 ↑
小红[补课]:专注完成 →
Step 32分钟: 查看并保存
AI生成 → 查看质量报告 → 完成(已自动双轨保存)
完成!课评已自动双轨保存,无需确认。
```
### 9.2 不同场景推荐
| 场景 | 推荐方式 | 预计时间 |
|------|---------|----------|
| 常规课后8人 | 速记批量输入 | 3-5分钟 |
| 重点关注学生 | 自然语言详细描述 | 2-3分钟/人 |
| 边走边记 | 语音转文字 | 实时 |
| 周汇总整理 | 查看班级周汇总文件 | 1分钟 |
---
## 十、自动双轨保存机制(核心功能)
> 课评生成后立即自动保存到班级汇总和个人档案,无需教师确认
>
> **变更说明**v3.1 简化流程,删除"待确认"状态,改为"生成即双轨保存"
### 10.1 机制概述
```
生成阶段 保存阶段 完成阶段
───────── ───────── ─────────
AI生成课评 → 【自动双轨保存】 → 教师可随时查看/修改
↓ ↓ ↓
质量检查通过 → 班级汇总 + 个人档案 → 完成(无需确认)
```
**核心原则**
-**生成即双轨保存**:课评生成后立即自动保存到班级周汇总和个人档案
-**无需确认**:教师无需点击"确认",课评直接生效
-**全程可修改**:生成后教师可随时修改,修改后自动同步到两个位置
-**出勤自动记录**:有课评即视为出勤,状态直接体现在班级汇总中
### 10.2 保存流程
#### 标准流程
```
教师输入表现 → AI生成课评 → 质量检查 → 【自动双轨保存】→ 完成
```
#### 详细步骤
```python
def on_evaluation_generated(student, evaluation):
"""课评生成后自动触发"""
# 1. 质量检查
if not quality_check(evaluation):
return regenerate(student)
# 2. 自动保存到班级汇总
try:
save_to_class_summary(student, evaluation)
log_success(f"{student} 课评已保存到班级汇总")
except SaveError as e:
log_error(f"班级汇总保存失败:{e}")
return retry_or_alert()
# 3. 自动保存到个人档案(如有档案)
if has_archive(student):
try:
save_to_personal_archive(student, evaluation)
log_success(f"{student} 课评已保存到个人档案")
except SaveError as e:
# 加入待补存队列
add_to_compensation_queue(student, evaluation, error=e)
log_warning(f"{student} 个人档案保存失败,已加入补存队列")
# 4. 展示给教师(已保存状态)
return show_to_teacher(student, evaluation, status="已保存")
```
### 10.3 学生类型处理
| 类型 | 档案状态 | 保存位置 |
|:-----|:---------|:---------|
| **正式学生** | 有档案 | ✅ 班级汇总 + ✅ 个人档案 |
| **本班补课** | 有档案(本班) | ✅ 班级汇总 + ✅ 个人档案 |
| **跨班级补课** | 有档案(他班) | ✅ 班级汇总 + ✅ 个人档案(原班级) |
| **其他老师班级补课** | 有档案(其他老师班级) | ✅ 班级汇总(仅) |
| **体验/临时学生** | 无档案 | ✅ 班级汇总(仅) |
| **缺课学生** | 有档案 | ❌ 不生成课评 |
### 10.4 修改机制
#### 支持修改的范围
| 修改类型 | 示例 | 处理方式 | 同步规则 |
|:---------|:-----|:---------|:---------|
| 词语替换 | "搭建"→"拼搭" | 直接替换 | 同步更新两个位置 |
| 称呼修改 | "乔乔"→"昕乔" | 全文替换 | 同步更新两个位置 |
| 内容补充 | 添加"还帮助了同伴" | 插入文本 | 单条≤50字同步更新 |
| 内容删除 | 删除某句话 | 删除文本 | 单条≤50字同步更新 |
#### 修改流程
```
教师:修改乔乔:把"搭建"改为"拼搭"
AI定位班级汇总中乔乔的课评
执行替换 → 字数检查 → 质量检查
更新班级汇总文件
如有个人档案,同步更新个人档案
提示修改完成
```
#### 修改指令
| 指令 | 功能 |
|:-----|:-----|
| `修改{学生}:把"{旧词}"改为"{新词}"` | 替换词语 |
| `修改{学生}:称呼改为"{新称呼}"` | 修改称呼 |
| `修改{学生}:添加"{内容}"` | 补充内容 |
| `修改{学生}:删除"{内容}"` | 删除内容 |
| `重生成{学生}` | 完全重新生成 |
### 10.5 个人档案存储格式规范
#### 文件结构
个人档案`memory/student/{班级}/{学生名}/历史课评记录.md`必须遵循以下结构:
```markdown
# 历史课评记录
> 按时间倒序记录所有课后评价(最新课评始终在最上方)
## 学生信息
- **姓名**{学生姓名}
- **班级**{班级名称}
- **建档日期**{YYYY-MM-DD}
## 课评记录列表
### 最新记录
### {日期} | {课程代码} | {课程主题}
**核心表现**{关键词}
**课评内容**
{三段式课评内容}
**能力评估**(当时):
- 专注度:/5
- 精细动作:/5
- 工具使用:/5
- 问题解决:/5
- 社交合作:/5
**教师备注**
- 亮点:
- 需关注:
- 保存时间:{日期时间}
- 代课老师:{如有}
---
### {更早日期} | {课程代码} | {课程主题}
...
```
#### 存储顺序规则(重要)
**必须遵循:时间倒序排列,最新课评在最上方**
```
文件结构示意:
# 历史课评记录
### 最新记录 ← 这是占位符,指向最新的课评
### 2026-05-01 | DISC-009 ← 最新课评第1条刚保存的
...
---
### 2026-04-23 | DISC-008 ← 次新课评第2条
...
---
### 2026-04-17 | DISC-007 ← 更早前课评第3条
...
---
```
#### 追加新课的算法
```python
def append_evaluation_to_archive(student, new_evaluation):
"""
将新课评追加到个人档案
规则:插入到文件顶部(最新记录位置)
"""
# 1. 读取现有档案
archive = read_personal_archive(student)
# 2. 定位插入点("### 最新记录"标记之后)
insert_position = find_marker(archive, "### 最新记录")
# 3. 构建新课评条目(包含日期、课程代码、内容等)
new_entry = format_evaluation_entry(new_evaluation)
# 4. 插入到顶部(确保最新在最上面)
archive.insert_after(insert_position, new_entry)
# 5. 保存文件
write_personal_archive(student, archive)
log_success(f"{student} 新课评已保存到个人档案顶部")
```
### 10.6 失败处理机制
| 失败类型 | 处理方式 | 教师感知 | 补偿机制 |
|:---------|:---------|:---------|:---------|
| 班级汇总写入失败 | 立即重试3次 | 显示错误提示 | 手动重试 |
| 个人档案写入失败 | 标记加入待补存队列 | 静默,下次提示 | 自动补存 |
### 10.7 快捷指令速查
| 场景 | 指令 | 效果 |
|:-----|:-----|:-----|
| 查看课评 | `查看{学生}` | 查看指定学生课评 |
| 修改词语 | `修改{学生}:把"A"改为"B"` | 替换指定词语,同步更新两个位置 |
| 修改称呼 | `修改{学生}:称呼改为"XX"` | 修改全文称呼 |
| 重生成 | `重生成{学生}` | 完全重新生成并保存 |
| 手动补存 | `补存` / `同步` | 手动触发待补存队列处理 |
---
## 十一、出勤统计(嵌入班级汇总)
> 出勤信息直接记录在班级周汇总文件中,无需独立的出勤统计文件
### 11.1 出勤判定规则
| 状态 | 图标 | 判定方式 |
|:-----|:----:|:---------|
| **出勤** | ✅ | 有档案 + 已生成课评 |
| **补课** | 🔄 | 档案在其他班级 + 来本班上课(课评状态表标注) |
| **体验/临时** | 📝 | 无档案 + 已生成课评(课评状态表标注) |
| **缺课** | ❌ | 有档案 + 未生成课评(头部人数自动体现) |
### 11.2 出勤信息位置
出勤数据直接体现在班级周汇总文件中:
**头部信息**(一行搞定):
```markdown
> 班级人数:{N}人(出勤{M}人,缺勤{K}人)
```
**课评状态表**(已有,兼做出勤记录):
```markdown
| 学生 | 状态 | 类型 | 操作 |
|:-----|:----:|:----:|:----:|
| 乔乔 | ✅ 已保存 | 常规 | [查看] |
| 小红 | ✅ 已保存 | 补课 | [查看] |
| 小明 | ✅ 已保存 | 体验 | [查看] |
```
### 11.3 查看出勤
| 指令 | 功能 | 返回内容 |
|:-----|:-----|:---------|
| `查看出勤` | 查看本周各班级出勤 | 读取各班级汇总头部信息汇总 |
| `查看{班级}出勤` | 查看指定班级 | 返回该班级汇总的头部+状态表 |
| `标记缺课 {学生}` | 手动标记缺课 | 在班级汇总中添加缺课记录 |
---
### 10.3 自动触发条件
#### 触发时机
| 场景 | 触发动作 | 自动保存 |
|:-----|:---------|:--------:|
| 单学生课评生成完成 | 立即触发 | 班级汇总 + 个人档案(双轨)|
| 批量课评全部生成完成 | 全部生成后批量触发 | 班级汇总 + 个人档案(双轨,批量)|
| 课评修改完成 | 立即触发 | 班级汇总 + 个人档案(双轨,更新)|
#### 自动保存优先级
```
优先级1必须成功班级周汇总文件写入
↓ 成功
优先级2允许失败个人档案写入
↓ 失败
加入待补存队列,下次触发时重试
```
### 10.4 教师交互指令
#### 查看类指令
| 指令 | 功能 | 返回内容 |
|:-----|:-----|:---------|
| `查看{学生}` | 查看指定学生课评详情 | 完整课评内容 + 状态 + 操作按钮 |
| `查看全部` | 查看所有已生成课评 | 列表视图,含快速操作 |
| `查看本周` | 查看本周班级汇总 | 打开本周班级汇总文件 |
#### 修改类指令
| 指令 | 功能 | 触发动作 |
|:-----|:-----|:---------|
| `修改{学生}{内容}` | 修改指定学生课评 | 直接编辑,更新班级汇总和个人档案 |
| `重生成{学生}` | 完全重新生成 | 删除原课评,重新生成,自动双轨保存 |
| `删除{学生}` | 删除该学生课评 | 从班级汇总和个人档案中删除(保留记录)|
### 10.5 批量生成界面
#### 生成完成展示
```
━━━━━━━━━━━━━━━━━━━━━━━
📊 课评生成完成5份发现世界-周四19点DISC-007
━━━━━━━━━━━━━━━━━━━━━━━
✅ 已保存
✅ 乔乔 198字 已保存
✅ 昊昊 205字 已保存
✅ 张小明 192字 体验学生(仅班级汇总)
✅ 李小红 201字 补课学生(跨班级自动保存)
⚠️ 小强 165字 字数偏短(建议检查)
【操作选项】
[查看全部] [修改] [重生成]
━━━━━━━━━━━━━━━━━━━━━━━
```
#### 逐个查看模式
```
━━━━━━━━━━━━━━━━━━━━━━━
📋 课评详情 1/5 |乔乔
━━━━━━━━━━━━━━━━━━━━━━━
【课评内容】
乔乔本节课学习了"旋转飞机"...
(完整课评内容)
【状态】✅ 已双轨保存
【字数】198字 ✅ 符合标准
【质量】✅ 无敏感词 ✅ 情绪合理 ✅ 学生档案完整
【操作】
[查看下一份] [修改] [重生成]
━━━━━━━━━━━━━━━━━━━━━━━
```
### 10.6 失败处理机制
#### 自动保存失败场景
| 失败类型 | 处理方式 | 教师感知 | 补偿机制 |
|:---------|:---------|:---------|:---------|
| 班级汇总写入失败 | 立即重试3次仍失败则报错 | 显示错误提示 | 手动重试按钮 |
| 个人档案写入失败 | 标记FAILED加入待补存队列 | 静默处理,下次提示 | 自动补存 |
| 并发冲突(班级) | 自动合并(追加模式) | 无感知 | 自动解决 |
| 并发冲突(个人) | 队列化处理,串行重试 | 延迟1-2秒 | 自动重试 |
| 磁盘满/权限不足 | 加入待补存队列,提醒教师 | 显示警告 | 手动触发补存 |
#### 待补存队列处理
```
检测到待补存课评2条
1. 乔乔 - 第7周发现世界
状态:班级汇总已保存,个人档案保存失败
原因:磁盘临时满
[立即补存] [忽略]
2. 昊昊 - 第7周发现世界
状态:班级汇总已保存,个人档案保存失败
原因:权限被拒绝
[立即补存] [忽略]
[全部补存]
```
### 10.7 修改规则
#### 支持修改的范围
| 修改类型 | 示例 | 处理方式 | 字数限制 |
|:---------|:-----|:---------|:--------:|
| 词语替换 | "搭建"→"拼搭" | 直接替换 | 不影响 |
| 称呼修改 | "乔乔"→"昕乔" | 全文替换 | 不影响 |
| 内容补充 | 在"完成了"后添加"还帮助了同伴" | 插入文本 | 单条≤50字 |
| 内容删除 | 删除"这个调整值得注意" | 删除文本 | 单条≤50字 |
| 情绪调整 | "开心"→"兴奋" | 替换关键词 | 不影响 |
#### 不支持修改的场景(需重生成)
- 改变课评结构如从3段改为4段
- 改变评价基调(从负面改为正面)
- 补充大量内容(>100字
- 改变课程主题理解
#### 修改流程
```
教师:修改乔乔:把"搭建"改为"拼搭"
AI定位班级汇总中乔乔的课评
执行替换 → 字数检查 → 质量检查
更新班级汇总文件
保存成功
同步更新个人档案(如有)
```
### 10.8 个人档案存储格式规范
#### 文件结构
个人档案`memory/student/{班级}/{学生名}/历史课评记录.md`必须遵循以下结构:
```markdown
# 历史课评记录
> 按时间倒序记录所有课后评价(最新课评始终在最上方)
## 学生信息
- **姓名**{学生姓名}
- **班级**{班级名称}
- **建档日期**{YYYY-MM-DD}
## 课评记录列表
### 最新记录
### {日期} | {课程代码} | {课程主题}
**核心表现**{关键词}
**课评内容**
{三段式课评内容}
**能力评估**(当时):
- 专注度:/5
- 精细动作:/5
- 工具使用:/5
- 问题解决:/5
- 社交合作:/5
**教师备注**
- 亮点:
- 需关注:
- 保存时间:{日期时间}
- 代课老师:{如有}
---
### {更早日期} | {课程代码} | {课程主题}
...
---
## 学期汇总
...
```
#### 存储顺序规则(重要)
**必须遵循:时间倒序排列,最新课评在最上方**
```
文件结构示意:
# 历史课评记录
### 最新记录 ← 这是占位符,指向最新的课评
### 2026-05-01 | DISC-009 ← 最新课评第1条
...
---
### 2026-04-23 | DISC-008 ← 次新课评第2条
...
---
### 2026-04-17 | DISC-007 ← 更早前课评第3条
...
---
```
#### 追加新课的算法
当保存新课评到个人档案时,必须:
```python
def append_evaluation_to_archive(student, new_evaluation):
"""
将新课评追加到个人档案
规则:插入到文件顶部(最新记录位置)
"""
# 1. 读取现有档案
archive = read_personal_archive(student)
# 2. 定位插入点("### 最新记录"标记之后)
insert_position = find_marker(archive, "### 最新记录")
# 3. 构建新课评条目(包含日期、课程代码、内容等)
new_entry = format_evaluation_entry(new_evaluation)
# 4. 插入到顶部(确保最新在最上面)
archive.insert_after(insert_position, new_entry)
# 5. 保存文件
write_personal_archive(student, archive)
log_success(f"{student} 新课评已保存到个人档案顶部")
```
#### 现有档案顺序修复
对于已存在顺序混乱的档案,提供修复指令:
```
教师输入:修复{学生}档案顺序
教师输入:整理{学生}历史课评
AI处理
1. 读取该学生所有历史课评
2. 按日期降序排序(最新的在前)
3. 重写个人档案文件
4. 报告修复结果
```
### 10.9 自动双轨保存伪代码
```python
def on_evaluation_generated(student, evaluation):
"""课评生成后自动触发"""
# 1. 质量检查
if not quality_check(evaluation):
return regenerate(student)
# 2. 自动保存到班级汇总
try:
save_to_class_summary(student, evaluation)
log_success(f"{student} 课评已保存到班级汇总")
except SaveError as e:
log_error(f"班级汇总保存失败:{e}")
return retry_or_alert()
# 3. 自动保存到个人档案(如有档案)
if has_archive(student):
try:
save_to_personal_archive(student, evaluation)
log_success(f"{student} 课评已保存到个人档案")
except SaveError as e:
# 加入待补存队列
add_to_compensation_queue(student, evaluation, error=e)
log_warning(f"{student} 个人档案保存失败,已加入补存队列")
# 4. 展示给教师(已保存状态)
return show_to_teacher(student, evaluation, status="已保存")
```
### 10.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: 体验学生,仅班级汇总
---
## 本周课评状态
| 学生 | 状态 | 操作 |
|:-----|:----:|:----:|
| 乔乔 | ✅ 已保存 | [查看] [修改] |
| 昊昊 | ✅ 已保存 | [查看] [修改] |
| 张小明 | ✅ 已保存 | [查看] [修改] |
| 李小红 | ✅ 已保存 | [查看] [修改] |
| 小强 | ⚠️ 保存失败 | [重试] [查看] |
```
### 10.11 快捷指令速查
| 场景 | 指令 | 效果 |
|:-----|:-----|:-----|
| 查看全部 | `查看全部` | 查看本周所有已保存课评 |
| 查看单个 | `查看乔乔` | 查看乔乔的课评详情 |
| 修改课评 | `修改乔乔:把"搭建"改为"拼搭"` | 修改指定课评内容 |
| 重生成 | `重生成乔乔` | 重新生成乔乔的课评 |
| 手动补存 | `补存` / `同步` | 手动触发待补存队列处理 |
---
## 十二、其他功能
### 12.1 快速编辑功能
支持小修改直接编辑,无需重新生成:
```
修改乔乔:把"搭建"改为"拼搭"
修改昊昊:称呼改为"昊昊小朋友"
修改小明:在"完成了"后添加"还帮助了同伴"
```
**限制**单次修改不超过50字单篇累计不超过100字。超出限制建议重新生成。
### 12.2 体验学生转正
当体验学生连续上课达到3次时AI主动提示转正建议
```
💡 转正建议
张小明已连续上3节课第5周、第6周、第7周
建议为其创建正式档案,便于追踪完整成长轨迹。
[创建正式档案] [继续体验] [下周再提醒]
```
**快捷指令**`小明转正``小明[正式]`