# keping-simplified — 生成规则详解

## 1️⃣ 启动流程规则

### 第一步：响应 /课评 命令

当用户输入 `/课评`，立即启动简化流程。**跳过任何其他判断**。

```python
用户输入：/课评
→ 执行：启动简化流程
→ 目标：一周数+日期选择界面
```

---

## 2️⃣ 周数与日期计算规则

### 基准设置
- **学期开学日**：2026-03-02（第1周周一）
- **当前日期**：自动获取今天的日期
- **周数计算公式**：
  ```
  周数 = Floor((当前日期 - 2026-03-02) / 7) + 1
  ```

### 日期选择界面示例

```
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
📅 第11周 | 选择日期
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

当前日期：2026-05-16

请选择周几：
[1] 周一
[2] 周二
[3] 周三
[4] 周四
[5] 周五
[6] 周六
[7] 周日

[其他日期] 手动输入 YYYY-MM-DD
```

### 用户选择后
- 根据周几推算具体日期（基于当前周）
- 进入班级选择

---

## 3️⃣ 班级选择规则

### 读取班级列表
1. 扫描 `.claude/memory/class/` 目录
2. 列出所有班级文件夹名称
3. 按字母/时间排序显示

### 界面示例

```
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
🎯 选择班级 | 第11周 · 2026-05-16
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

可选班级：
[1] 发现世界-周四19点
[2] Wedo创造世界-周六1030
[3] AICODE03小Q周六1400
[4] SPIKE02-周日1030
[5] 手动输入班级名称
```

---

## 4️⃣ 课程目标加载规则

### 策略 A：找到课程教案（优先）

按顺序查找：
1. 班级目录下是否有历史课程记录
2. memory/lesson/ 目录下查找第X周课程
3. 基于班级类型匹配课程编号

**匹配成功后显示：**
```
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
📚 课程目标确认
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

课程代码：DISC-011
课程主题：蜥蜴
核心知识点：关节连接、可动结构、仿生设计
课时长度：60分钟

[1] 确认使用这个
[2] 修改课程目标
```

### 策略 B：没找到课程教案（降级）

```
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
⚠️ 未找到课程教案，请手动输入
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

请填写本周课程目标：
课程主题：
核心知识点：
[1] 跳过，用通用模板
[2] 保存为常用课程
```

---

## 5️⃣ HTML 表单启动规则

### 创建并打开表单

1. 复制模板 `assets/form_template.html`
2. 替换占位符：
   - `CLASS_NAME` → 班级名
   - `WEEK_NUM` → 周数
   - `DATE_STR` → 日期
   - `COURSE_CODE` → 课程代码
   - `COURSE_TITLE` → 课程主题
   - `STUDENTS_LIST` → 学生JSON
3. 保存为临时文件（例如 `temp_form_YYYYMMDD_HHMMSS.html`）
4. 自动在浏览器打开

### 学生列表加载

从班级目录读取：
- `.claude/memory/class/{班级}/` 下的子文件夹
- 每个子文件夹是一个学生
- 读取 `profile.md` 获取小名/昵称（如果有）

```json
{
"students": [
{ "name": "梁家铭", "nickname": null },
{ "name": "简思瑜", "nickname": "小鱼" },
...
]
}
```

---

## 6️⃣ 速记符号解析规则

### 速记对照表

| 速记 | 解析为中文描述 |
|------|--------------|
| `gj#` | 观望#分钟 |
| `zd#` | 主动搭#层 |
| `zt` | 自己调整 |
| `wb` | 完成 |
| `zx#` | 专注#分钟 |
| `sb#` | 失败#次后调整 |
| `ts#` | 探索#分钟 |
| `cz#` | 创造#种方案 |
| `wt#` | 提问#次 |
| `hz` | 合作 |
| `fx` | 分享 |
| `tq` | 求助 |
| `mr` | 融入 |
| `ms` | 模仿 |
| `jy` | 建议给同伴 |
| `bd` | 被带动 |
| `zl` | 孤立/独自 |
| `cq` | 冲突/争执 |
| `↑` or `kx` | 开心 |
| `→` or `wd` | 稳定 |
| `↓` or `fd` | 烦躁/低落 |
| `~` or `bd` | 情绪波动 |
| `↑↑` or `kc` | 非常开心/兴奋 |
| `→→` or `wa` | 非常稳定/沉浸 |
| `gd` | 孤独/独自玩 |
| `jl` | 焦虑/紧张 |
| `++` | 比上周进步 |
| `--` | 需关注 |

### 解析示例

```
输入：gj5→zd3→zt ↑++
解析：观望5分钟后主动搭3层，自己调整，开心，比上周进步
```

---

## 7️⃣ 课评生成规则

### 三段式结构（固定不变）

**第1段（课程知识点，30-55字）：**
- 包含：主题、1-2个核心知识点
- 末尾1个emoji：🔍 💡 ⚙️（根据类型）

**第2段（课堂细节，100-220字，弹性）：**
- 整合：掌握程度+环节表现+成长亮点
- emoji：1-3个，自然分散插入

**第3段（课后建议，30-55字）：**
- 具体可操作的家庭活动
- 末尾1个emoji：🏠 🔧

### 字数弹性规则

| 输入丰富度 | 目标字数范围 |
|----------|-----------|
| 很简洁（只有1-2个速记）| 180-220 |
| 中等（3-5个速记）| 220-280 |
| 详细（5个以上+情绪+对比）| 280-350 |

### 称呼规则

1. 优先用小名/昵称（从 `profile.md` 读取）
2. 其次用去姓称名（双字名 → 去掉姓）
3. 单字名 → 叠字化

### Emoji 分配

| 位置 | 表情库 |
|------|-------|
| 第1段末尾 | 🔍 💡 ⚙️ |
| 第2段亮点处 | 💪 ✨ 📈 🎯 🤝 😊 |
| 第3段末尾 | 🏠 🔧 |

---

## 8️⃣ 保存规则

### 文件路径标准

```
.claude/memory/class/{班级名称}/
├── summaries/
│   └── YYYYMMDD_{课程代码}_{班级反馈}.md
├── {学生姓名}/
│   └── feedback/
│       └── YYYYMMDD_{课程代码}_{课次}.md
└──补课/{学生姓名}/
    └── feedback/
        └── YYYYMMDD_{课程代码}.md
```

### 学生类型-保存路径映射

| 学生状态 | 保存位置 |
|---------|--------|
| 出勤 | {班级}/{学生}/feedback/ |
| 请假 | {班级}/{学生}/feedback/（带 `(请假)` 标记）|
| 补课 | {班级}/补课/{学生}/feedback/ |
| 体验 | {班级}/补课/{学生}/feedback/ |

### 自动保存时机

课评生成完成后立即保存，无需教师确认。

---

## 9️⃣ 请假/补课/体验处理

### 请假
- 生成：请假记录文件
- 路径：`feedback/YYYYMMDD_{课程编号}(请假).md`
- 内容：简洁说明请假

### 补课
- 路径：`补课/{学生}/feedback/YYYYMMDD_{课程编号}.md`
- 课评正文：不提及"补课"二字
- 文件名：可标记来源

### 体验
- 路径：`补课/{学生}/feedback/YYYYMMDD_{课程编号}.md`
- 课评：正常写（不提"体验"）

---

*最后更新：2026-05-16*
