# 教师备课功能使用指南

## 目录

1. [功能概述](#功能概述)
2. [快速开始](#快速开始)
3. [注册和登录](#注册和登录)
4. [备课模式](#备课模式)
5. [创建知识节点](#创建知识节点)
6. [编辑知识节点](#编辑知识节点)
7. [生成教案](#生成教案)
8. [批量操作](#批量操作)
9. [数据管理](#数据管理)
10. [常见问题](#常见问题)

---

## 功能概述

教师备课功能是知识图谱系统的核心扩展，专为教师设计，提供以下能力：

- ✅ 创建和编辑知识节点
- ✅ 管理节点间的前置关系
- ✅ 自动生成结构化教案
- ✅ 批量生成多个教案
- ✅ 导出教案（Markdown、HTML、PDF）
- ✅ 数据自动备份和恢复
- ✅ 循环依赖自动检测

---

## 快速开始

### 系统要求

- 现代浏览器（Chrome、Firefox、Safari、Edge）
- 支持localStorage（用于数据存储）
- 支持JavaScript ES6+

### 访问方式

1. 打开系统首页 `landing.html`
2. 点击"开始使用"或"登录"
3. 使用教师账号登录

---

## 注册和登录

### 注册教师账号

1. 访问 `auth.html` 或点击首页的"登录"按钮
2. 切换到"注册"标签
3. 填写注册信息：
   - 用户名（3-20个字符）
   - 密码（至少6个字符）
   - 确认密码
   - 邮箱（可选）
   - **选择角色：教师** ⭐
4. 点击"注册"按钮
5. 注册成功后自动登录

### 登录

1. 访问 `auth.html`
2. 输入用户名和密码
3. 可选：勾选"记住我"保持登录状态
4. 点击"登录"按钮

---

## 备课模式

### 开启备课模式

登录后，在主应用页面的右上角可以看到"备课模式"开关。

1. 点击开关启用备课模式
2. 启用后会显示：
   - 右下角的"➕"浮动按钮（用于添加节点）
   - 节点详情面板中的教师操作按钮
   - 批量操作面板（选择多个节点时）

### 备课模式功能

在备课模式下，您可以：

- 创建新的知识节点
- 编辑现有节点
- 生成教案
- 批量操作节点

---

## 创建知识节点

### 步骤

1. **开启备课模式**
2. **点击右下角的"➕"按钮**
3. **填写节点信息**：

#### 基本信息（必填）
- **节点名称**：中文名称，如"极限的定义"
- **英文名称**：英文名称，如"Definition of Limit"
- **描述**：详细描述该知识点的内容和意义

#### 学域分类（必填）
至少选择一个学域：
- 变化与逼近
- 结构与累积
- 优化与决策
- 不确定性处理
- 真实问题建模

#### 难度和重要性
- **难度**：1-5级（默认3）
- **重要性**：1-5级（默认3）

#### 核心公式（可选）
- 使用LaTeX语法输入数学公式
- 支持实时预览
- 示例：`\lim_{x \to a} f(x) = L`

#### 前置知识（可选）
- 搜索并选择前置节点
- 系统会自动检测循环依赖
- 可以添加多个前置节点

#### 其他信息（可选）
- **关键词**：用逗号分隔，如"极限,连续性,逼近"
- **预计学习时间**：如"2小时"

4. **点击"创建节点"按钮**
5. **系统自动保存并备份**

### 注意事项

- ⚠️ 必填字段不能为空
- ⚠️ 至少选择一个学域
- ⚠️ 系统会自动检测循环依赖
- ⚠️ 数据保存在浏览器本地存储

---

## 编辑知识节点

### 步骤

1. **在图谱中点击要编辑的节点**
2. **在详情面板中点击"编辑节点"按钮**
3. **修改节点信息**
4. **点击"保存更改"按钮**

### 可编辑字段

- ✅ 节点名称
- ✅ 英文名称
- ✅ 描述
- ✅ 学域分类
- ✅ 难度和重要性
- ✅ 核心公式
- ✅ 前置知识
- ✅ 关键词
- ✅ 预计学习时间

### 不可编辑字段

- ❌ 节点ID
- ❌ 创建时间
- ❌ 创建者

### 版本控制

- 每次保存会自动递增版本号
- 记录修改时间和修改者
- 检测数据冲突（多用户编辑）

---

## 生成教案

### 单个教案生成

1. **选择知识节点**
2. **点击"生成教案"按钮**
3. **查看生成的教案**

### 教案结构

系统自动生成9个标准章节：

1. **教学目标** - 学习目标和能力要求
2. **知识点概述** - 知识点描述和所属学域
3. **前置知识** - 需要掌握的前置内容
4. **核心内容** - 详细的教学内容
5. **核心公式** - 重要的数学公式
6. **教学重点** - 教学重点和难点
7. **预计课时** - 学习时间分配
8. **实际应用** - 实际应用场景
9. **扩展主题** - 进阶学习内容

### 编辑教案

1. **点击"编辑"按钮**
2. **直接修改教案内容**
3. **点击"保存"按钮**

### 导出教案

点击"导出"按钮，选择格式：

- **Markdown** (.md) - 纯文本格式，易于编辑
- **HTML** (.html) - 网页格式，包含样式和MathJax支持
- **PDF** - 通过浏览器打印功能生成

---

## 批量操作

### 多选节点

1. **按住 Ctrl（Windows）或 Cmd（Mac）键**
2. **点击要选择的节点**
3. **选中的节点会高亮显示**
4. **右下角显示批量操作面板**

### 批量生成教案

1. **选择多个节点**（使用Ctrl/Cmd+点击）
2. **点击"批量生成教案"按钮**
3. **等待生成完成**（显示进度条）
4. **选择导出格式**：
   - Markdown - 合并为单个文件，包含目录
   - HTML - 合并为单个网页，包含目录和导航

### 清除选择

点击"清除选择"按钮取消所有选中的节点。

---

## 数据管理

### 自动备份

系统在每次保存节点时自动创建备份：

- 备份文件存储在localStorage
- 保留最近10个备份
- 备份包含完整的节点数据

### 查看备份

```javascript
// 在浏览器控制台执行
nodeDataManager.listBackups()
```

### 恢复数据

```javascript
// 在浏览器控制台执行
const backups = nodeDataManager.listBackups();
nodeDataManager.restoreFromBackup(backups[0].key);
```

### 导出数据

节点数据保存在localStorage中，键名为 `kg_nodes_data`。

可以通过浏览器开发者工具导出：

1. 打开开发者工具（F12）
2. 切换到"Application"或"存储"标签
3. 找到localStorage
4. 复制 `kg_nodes_data` 的值

### 数据安全

⚠️ **重要提示**：

- 数据仅保存在本地浏览器
- 清除浏览器数据会丢失所有节点
- 建议定期导出备份
- 不支持多设备同步

---

## 常见问题

### Q1: 为什么我看不到教师功能？

**A**: 请确认：
1. 使用教师角色注册和登录
2. 已开启"备课模式"开关
3. 浏览器支持JavaScript和localStorage

### Q2: 创建节点时提示"循环依赖"？

**A**: 这表示您设置的前置关系会形成循环：
- 例如：A依赖B，B依赖C，C依赖A
- 解决方法：调整前置关系，打破循环

### Q3: 数据会丢失吗？

**A**: 数据保存在浏览器localStorage中：
- ✅ 关闭浏览器不会丢失
- ✅ 系统自动备份
- ❌ 清除浏览器数据会丢失
- ❌ 不同浏览器数据不共享

### Q4: 如何导出所有节点数据？

**A**: 
1. 打开浏览器开发者工具（F12）
2. 在控制台执行：
   ```javascript
   const data = localStorage.getItem('kg_nodes_data');
   console.log(data);
   ```
3. 复制输出的JSON数据

### Q5: 教案可以自定义模板吗？

**A**: 可以，使用自定义模板：
```javascript
const customTemplate = {
    sections: [
        { id: 'custom1', title: '自定义章节1', required: true },
        { id: 'custom2', title: '自定义章节2', required: false }
    ]
};
lessonPlanGenerator.saveTemplate(customTemplate);
```

### Q6: 如何批量导入节点？

**A**: 目前不支持批量导入，但可以通过编程方式：
```javascript
const nodes = [
    { name: '节点1', nameEn: 'Node 1', description: '...', domains: ['domain-1'] },
    { name: '节点2', nameEn: 'Node 2', description: '...', domains: ['domain-2'] }
];

nodes.forEach(node => {
    nodeDataManager.createNode(node);
});
```

### Q7: 支持多人协作吗？

**A**: 当前版本不支持实时协作：
- 数据保存在本地浏览器
- 有基本的版本冲突检测
- 建议单人使用或明确分工

### Q8: LaTeX公式不显示？

**A**: 请确认：
1. 网络连接正常（需要加载MathJax）
2. LaTeX语法正确
3. 使用 `$...$` 包裹公式

### Q9: 如何删除节点？

**A**: 当前版本通过编程方式删除：
```javascript
nodeDataManager.deleteNode('node-id');
```

注意：如果节点被其他节点依赖，无法删除。

### Q10: 教案导出的PDF格式不理想？

**A**: PDF导出使用浏览器打印功能：
1. 在打印对话框中调整设置
2. 选择"保存为PDF"
3. 调整页边距和缩放比例
4. 建议使用Chrome浏览器获得最佳效果

---

## 技术支持

### 测试页面

- **功能测试**: `test-teacher-features.html`
- **单元测试**: `test-teacher-unit-tests.html`

### 开发者文档

详见 `docs/DEVELOPER-GUIDE.md`

### 问题反馈

如遇到问题，请提供：
1. 浏览器类型和版本
2. 操作步骤
3. 错误信息（如有）
4. 控制台日志（F12打开）

---

## 更新日志

### v1.0.0 (2026-02-28)

- ✅ 初始版本发布
- ✅ 认证和角色管理
- ✅ 节点创建和编辑
- ✅ 教案生成和导出
- ✅ 批量操作
- ✅ 数据备份和恢复

---

## 附录

### 快捷键

- `Ctrl/Cmd + 点击` - 多选节点
- `Esc` - 关闭面板
- `Ctrl/Cmd + F` - 搜索节点
- `Ctrl/Cmd + R` - 重置视图

### 数据格式

节点数据结构：
```json
{
    "id": "node-d1-1234567890-abc123",
    "name": "极限的定义",
    "nameEn": "Definition of Limit",
    "description": "...",
    "domains": ["domain-1"],
    "difficulty": 3,
    "importance": 4,
    "prerequisites": ["node-d1-..."],
    "formula": "\\lim_{x \\to a} f(x) = L",
    "keywords": ["极限", "连续性"],
    "estimatedStudyTime": "2小时",
    "createdAt": "2026-02-28T10:00:00.000Z",
    "createdBy": "teacher_username",
    "modifiedAt": "2026-02-28T10:00:00.000Z",
    "modifiedBy": "teacher_username",
    "version": 1
}
```

---

**文档版本**: 1.0.0  
**最后更新**: 2026-02-28  
**作者**: 知识图谱系统开发团队
