# 教材 Excel 导入模板 - 表头说明

## 📋 表头定义

### 基本信息

| 字段名 | 中文名 | 是否必填 | 说明 | 示例值 |
|--------|--------|----------|------|--------|
| series_id | 教材系列ID | 必填 | 对应教材系列的ID | 1 |
| stage | 学段 | 必填 | primary(小学)、junior(初中)、senior(高中) | junior |
| grade | 年级 | 必填 | 小学1-6、初中7-9、高中10-12 | 7 |
| semester | 学期 | 必填 | 1(上册)、2(下册) | 1 |

### 学制信息（小学、初中）

| 字段名 | 中文名 | 是否必填 | 说明 | 示例值 |
|--------|--------|----------|------|--------|
| schooling_system | 学制 | 选填 | 63(六三学制)、54(五四学制) | 63 |

### 高中教材特有字段

| 字段名 | 中文名 | 是否必填 | 说明 | 示例值 |
|--------|--------|----------|------|--------|
| naming_scheme | 命名体系 | 选填 | new(新体系)、old(旧体系) | new |
| track | 版本 | 选填 | A(A版)、B(B版) | A |
| module_type | 模块类型 | 选填 | compulsory(必修)、selective_compulsory(选择性必修)、elective(选修) | compulsory |
| volume_no | 册次 | 选填 | 数字，如：1、2、3 | 1 |
| legacy_code | 旧体系编码 | 选填 | 旧体系的编码，如：必修1、选修1-1 | 必修1 |

### 课程标准信息

| 字段名 | 中文名 | 是否必填 | 说明 | 示例值 |
|--------|--------|----------|------|--------|
| curriculum_standard_year | 课标年代 | 选填 | 义务教育：2011/2022，高中：2017 | 2022 |
| curriculum_revision_year | 修订年份 | 选填 | 高中：2020 | 2020 |
| approval_year | 审定年份 | 选填 | 教材审定通过的年份 | 2024 |
| edition_label | 版次标识 | 选填 | 如：2024秋版、修订版 | 2024秋版 |

### 教材标识

| 字段名 | 中文名 | 是否必填 | 说明 | 示例值 |
|--------|--------|----------|------|--------|
| isbn | ISBN | 选填 | 教材的ISBN号 | 978-7-123-45678-9 |
| cover_path | 封面图片 | 选填 | 封面图片URL或本地路径 | https://... |

### 教材标题

| 字段名 | 中文名 | 是否必填 | 说明 | 示例值 |
|--------|--------|----------|------|--------|
| official_title | 官方书名 | 选填 | 教材的官方正式名称 | 人教版数学七年级上册 |
| display_title | 展示名称 | 选填 | 站内显示的名称 | 人教版数学（2024版） |
| aliases | 别名 | 选填 | JSON格式的别名数组 | ["人教数学", "PEP数学"] |

### 状态信息

| 字段名 | 中文名 | 是否必填 | 说明 | 示例值 |
|--------|--------|----------|------|--------|
| status | 状态 | 必填 | draft(草稿)、published(已发布)、archived(已归档) | draft |
| meta | 扩展信息 | 选填 | JSON格式的扩展信息 | {"note": "测试数据"} |

---

## 📝 Excel 模板示例

### 模板 A：初中教材

```
series_id | stage | grade | semester | schooling_system | official_title | display_title | isbn | approval_year | status
1 | junior | 7 | 1 | 63 | 人教版数学七年级上册 | 人教版数学（2024版） | 978-7-123-45678-9 | 2024 | draft
1 | junior | 7 | 2 | 63 | 人教版数学七年级下册 | 人教版数学（2024版） | 978-7-123-45679-6 | 2024 | draft
2 | junior | 8 | 1 | 63 | 北师大版数学八年级上册 | 北师大版数学（2024版） | 978-7-123-45680-2 | 2024 | draft
```

### 模板 B：高中教材

```
series_id | stage | grade | naming_scheme | track | module_type | volume_no | official_title | display_title | isbn | status
1 | senior | 10 | new | A | compulsory | 1 | 人教版数学必修第一册 | 人教版数学A版（2024版） | 978-7-123-45681-9 | draft
1 | senior | 10 | new | A | compulsory | 2 | 人教版数学必修第二册 | 人教版数学A版（2024版） | 978-7-123-45682-6 | draft
1 | senior | 11 | new | A | selective_compulsory | 3 | 人教版数学选择性必修第一册 | 人教版数学A版（2024版） | 978-7-123-45683-3 | draft
```

### 模板 C：小学教材

```
series_id | stage | grade | semester | schooling_system | official_title | display_title | status
1 | primary | 1 | 1 | 63 | 人教版数学一年级上册 | 人教版数学（2024版） | draft
1 | primary | 1 | 2 | 63 | 人教版数学一年级下册 | 人教版数学（2024版） | draft
1 | primary | 2 | 1 | 63 | 人教版数学二年级上册 | 人教版数学（2024版） | draft
```

---

## ⚠️ 重要说明

### 1. 字段映射

- **学段值映射**：
  - `primary` → 小学
  - `junior` → 初中
  - `senior` → 高中

- **学制值映射**：
  - `63` → 六三学制（小学6年 + 初中3年）
  - `54` → 五四学制（小学5年 + 初中4年）

- **学期值映射**：
  - `1` → 上册
  - `2` → 下册

- **状态值映射**：
  - `draft` → 草稿
  - `published` → 已发布
  - `archived` → 已归档

### 2. 必填字段

创建教材时，以下字段**必须填写**：
- series_id（教材系列ID）
- stage（学段）
- grade（年级）
- semester（学期）
- status（状态）

### 3. 条件必填

- **小学/初中**：如果学段是 `primary` 或 `junior`，可以填写 `schooling_system`
- **高中**：如果学段是 `senior`，根据 `naming_scheme` 的值，可能需要填写：
  - 新体系（new）：`track`、`module_type`、`volume_no`
  - 旧体系（old）：`legacy_code`

### 4. 教材系列ID说明

在导入前，需要先创建教材系列，获取其ID。常见的系列ID：

| 系列ID | 系列名称 | 出版社 |
|--------|----------|--------|
| 1 | 人教版 | 人民教育出版社 |
| 2 | 北师大版 | 北京师范大学出版社 |
| 3 | 华东师大版 | 华东师范大学出版社 |

### 5. 别名和扩展信息格式

- **aliases（别名）**：JSON数组格式
  - 正确：`["人教数学", "PEP数学"]`
  - 错误：`人教数学, PEP数学`

- **meta（扩展信息）**：JSON对象格式
  - 正确：`{"note": "测试数据", "tags": ["数学", "初中"]}`
  - 错误：`note:测试数据`

### 6. 封面图片

- 可以是图片URL（推荐）
- 也可以是本地路径（需要先上传到服务器）
- 支持格式：JPG、PNG、WebP
- 推荐尺寸：400x600（2:3比例）
- 最大大小：5MB

### 7. 数据验证

导入时会进行以下验证：
- series_id 必须对应存在的教材系列
- stage 必须是有效的学段值
- grade 必须在学段范围内
- semester 必须是1或2
- JSON 格式必须正确
- 重复数据会被忽略

---

## 📊 Excel 文件要求

### 文件格式
- ✅ 支持：`.xlsx`、`.xls`
- ❌ 不支持：`.csv`、`.txt`

### 数据格式
- 第一行必须是表头（字段名）
- 从第二行开始是数据
- 不支持合并单元格
- 不支持公式

### 编码要求
- 使用 **UTF-8** 编码
- 确保中文显示正常

---

## 🚀 使用步骤

1. **准备数据**：按照表头说明填写Excel
2. **验证数据**：确保必填字段已填写，格式正确
3. **导入系统**：在 FilamentAdmin 中使用"Excel导入"功能
4. **检查结果**：导入后检查是否有错误记录
5. **修复错误**：如有错误，修正后重新导入

---

## 💡 最佳实践

### 1. 批量导入建议

- 每次导入不超过 500 条记录
- 先用小批量测试格式
- 准备好教材系列后再导入教材

### 2. 数据一致性

- 保持命名规范一致
- 统一使用相同的中文/英文标识
- 定期同步 MySQL 和 PostgreSQL 数据

### 3. 版本管理

- 使用 `edition_label` 标识不同版本
- 旧版本标记为 `archived`
- 新版本标记为 `published`

### 4. 封面管理

- 统一封面尺寸和格式
- 使用有意义的文件名
- 定期备份封面图片

---

**创建时间**：2025-12-16
**适用范围**：FilamentAdmin 教材管理系统
**版本**：v1.0
