kindergarten_java/docs/表名统一修改说明.md
En 0d4275b235 feat: 完善 OpenAPI 注解和前端 API 客户端
主要变更:
1. 所有 Entity/DTO/VO 添加 @Schema 注解,完善 API 文档
2. 新增前端 API 封装模块 (src/apis),包含 fetch.ts 和 apis.ts
3. 生成完整的 TypeScript 类型定义(100+ 个模型)
4. pom.xml 添加 Maven 编译配置和 UTF-8 编码支持
5. 更新 CLAUDE.md 开发文档,新增接口规范和 Swagger 注解规范
6. 清理旧的文档文件和 Flyway 迁移脚本

技术细节:
- 后端:27 个实体类 + 所有 DTO/Response 添加 Swagger 注解
- 前端:新增 orval 生成的 API 客户端类型
- 构建:配置 Maven compiler plugin 和 Spring Boot 插件的 JVM 参数
- 数据库:新增 schema 导出文件,删除旧 Flyway 迁移脚本

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-10 23:51:02 +08:00

136 lines
5.1 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.

# 表名统一修改说明
## 修改时间
2026-03-10
## 修改目的
将数据库表名从复数形式改为单数形式,使其与 ORM 实体类名保持一致(除了下划线和驼峰的区别)。
## 修改内容
### 1. Flyway 迁移脚本
创建了新的 Flyway 迁移脚本:
- 文件:`reading-platform-java/src/main/resources/db/migration/V22__rename_tables_to_singular.sql`
- 功能:将所有数据库表名从复数改为单数
### 2. 实体类 @TableName 注解更新
更新了 36 个实体类的 `@TableName` 注解:
| 序号 | 原表名(复数) | 新表名(单数) | 实体类名 |
|-----|---------------|---------------|---------|
| 1 | `admin_users` | `admin_user` | `AdminUser` |
| 2 | `tenants` | `tenant` | `Tenant` |
| 3 | `teachers` | `teacher` | `Teacher` |
| 4 | `students` | `student` | `Student` |
| 5 | `parents` | `parent` | `Parent` |
| 6 | `parent_students` | `parent_student` | `ParentStudent` |
| 7 | `classes` | `clazz` | `Clazz` |
| 8 | `class_teachers` | `class_teacher` | `ClassTeacher` |
| 9 | `student_class_history` | `student_class_history` | `StudentClassHistory` (无需修改) |
| 10 | `courses` | `course` | `Course` |
| 11 | `course_versions` | `course_version` | `CourseVersion` |
| 12 | `course_resources` | `course_resource` | `CourseResource` |
| 13 | `course_scripts` | `course_script` | `CourseScript` |
| 14 | `course_script_pages` | `course_script_page` | `CourseScriptPage` |
| 15 | `course_activities` | `course_activity` | `CourseActivity` |
| 16 | `course_packages` | `course_package` | `CoursePackage` |
| 17 | `school_courses` | `school_course` | `SchoolCourse` |
| 18 | `tenant_courses` | `tenant_course` | `TenantCourse` |
| 19 | `lessons` | `lesson` | `Lesson` |
| 20 | `lesson_feedbacks` | `lesson_feedback` | `LessonFeedback` |
| 21 | `student_records` | `student_record` | `StudentRecord` |
| 22 | `tasks` | `task` | `Task` |
| 23 | `task_targets` | `task_target` | `TaskTarget` |
| 24 | `task_completions` | `task_completion` | `TaskCompletion` |
| 25 | `task_templates` | `task_template` | `TaskTemplate` |
| 26 | `growth_records` | `growth_record` | `GrowthRecord` |
| 27 | `resource_libraries` | `resource_library` | `ResourceLibrary` |
| 28 | `resource_items` | `resource_item` | `ResourceItem` |
| 29 | `schedule_plans` | `schedule_plan` | `SchedulePlan` |
| 30 | `schedule_templates` | `schedule_template` | `ScheduleTemplate` |
| 31 | `system_settings` | `system_setting` | `SystemSetting` |
| 32 | `themes` | `theme` | `Theme` |
| 33 | `tags` | `tag` | `Tag` |
| 34 | `notifications` | `notification` | `Notification` |
| 35 | `operation_logs` | `operation_log` | `OperationLog` |
### 3. Mapper 接口 SQL 更新
更新了以下 Mapper 接口中的硬编码 SQL 表名:
| 文件 | 修改内容 |
|-----|---------|
| `ThemeMapper.java` | `DELETE FROM themes``DELETE FROM theme` |
| `ParentMapper.java` | `DELETE FROM parents``DELETE FROM parent` |
| `TenantMapper.java` | `DELETE FROM tenants``DELETE FROM tenant` (2 处) |
| `TeacherMapper.java` | `DELETE FROM teachers``DELETE FROM teacher` |
| `StudentMapper.java` | `DELETE FROM students``DELETE FROM student` |
## 部署步骤
### 步骤 1备份数据库
在执行迁移前,务必备份开发/生产数据库:
```bash
mysqldump -u root -p reading_platform > backup_$(date +%Y%m%d).sql
```
### 步骤 2执行 Flyway 迁移
启动后端服务Flyway 会自动执行 `V22__rename_tables_to_singular.sql` 迁移脚本。
或者手动执行:
```bash
mysql -u root -p reading_platform < reading-platform-java/src/main/resources/db/migration/V22__rename_tables_to_singular.sql
```
### 步骤 3验证迁移结果
在 MySQL 中执行:
```sql
-- 查看所有表名
SHOW TABLES;
-- 验证特定表是否存在
SHOW TABLES LIKE 'student';
SHOW TABLES LIKE 'student_record';
SHOW TABLES LIKE 'lesson_feedback';
```
### 步骤 4测试功能
启动后端服务后,测试以下功能:
1. 用户管理(管理员、教师、学生、家长)
2. 班级管理
3. 课程管理
4. 课时管理
5. 任务管理
6. 成长记录
7. 资源管理
8. 日程管理
## 注意事项
1. **外键处理**:迁移脚本中先禁用外键检查(`SET FOREIGN_KEY_CHECKS = 0`),执行完后再启用
2. **Flyway 历史**:确保 `flyway_schema_history` 表正确记录迁移历史
3. **生产环境**:在生产环境执行前,务必在开发/测试环境充分测试
4. **回滚方案**:如需回滚,可以准备反向迁移脚本(将单数表名改回复数)
## 相关文件清单
### 新增文件
- `reading-platform-java/src/main/resources/db/migration/V22__rename_tables_to_singular.sql`
### 修改的文件
- 所有 Entity 类36 个文件)
- 5 个 Mapper 接口
## 验证清单
- [x] 所有 Entity 类的 `@TableName` 注解已更新
- [x] 所有 Mapper 接口的 SQL 已更新
- [x] Controller 中无硬编码表名引用
- [x] Service 中无硬编码表名引用
- [x] Flyway 迁移脚本已创建
## 后续工作
1. 在开发环境执行迁移并验证
2. 更新 API 文档中的表名引用(如有)
3. 更新项目文档中的表名引用(如有)