Some checks failed
continuous-integration/drone/push Build is failing
- 新增数据库迁移脚本 (practice_rooms, practice_room_messages) - 新增后端 API: 房间创建/加入/消息同步/报告生成 - 新增前端页面: 入口页/对练房间/报告页 - 新增 AI 双人评估服务和提示词
83 lines
2.4 KiB
Markdown
83 lines
2.4 KiB
Markdown
# 数据库迁移说明
|
||
|
||
## 目录结构
|
||
|
||
```
|
||
migrations/
|
||
├── README.md # 本说明文件
|
||
└── versions/
|
||
└── add_practice_rooms_table.sql # 双人对练功能迁移脚本
|
||
```
|
||
|
||
## 迁移脚本列表
|
||
|
||
### 1. add_practice_rooms_table.sql
|
||
|
||
**功能**:双人对练功能数据库结构
|
||
|
||
**新增表**:
|
||
- `practice_rooms` - 对练房间表
|
||
- `practice_room_messages` - 房间实时消息表
|
||
|
||
**修改表**:
|
||
- `practice_dialogues` - 新增 `user_id`, `role_name`, `room_id`, `message_type` 字段
|
||
- `practice_sessions` - 新增 `room_id`, `participant_role`, `session_type` 字段
|
||
- `practice_reports` - 新增 `room_id`, `user_id`, `report_type`, `partner_feedback`, `interaction_score` 字段
|
||
|
||
## 执行方法
|
||
|
||
### 方法一:直接登录 MySQL 执行
|
||
|
||
```bash
|
||
# 1. 登录 MySQL
|
||
docker exec -it kpl-mysql-dev mysql -uroot -p
|
||
|
||
# 2. 选择数据库
|
||
USE kaopeilian;
|
||
|
||
# 3. 复制并执行 SQL 脚本内容
|
||
# 或使用 source 命令执行脚本文件
|
||
```
|
||
|
||
### 方法二:使用 docker exec 执行
|
||
|
||
```bash
|
||
# 1. 将 SQL 文件复制到容器
|
||
docker cp migrations/versions/add_practice_rooms_table.sql kpl-mysql-dev:/tmp/
|
||
|
||
# 2. 执行迁移
|
||
docker exec -i kpl-mysql-dev mysql -uroot -pYourPassword kaopeilian < /tmp/add_practice_rooms_table.sql
|
||
```
|
||
|
||
### 方法三:远程 SSH 执行
|
||
|
||
```bash
|
||
# SSH 到服务器后执行
|
||
ssh user@your-server "docker exec -i kpl-mysql-dev mysql -uroot -pYourPassword kaopeilian" < migrations/versions/add_practice_rooms_table.sql
|
||
```
|
||
|
||
## 回滚方法
|
||
|
||
每个迁移脚本底部都包含了回滚 SQL。如需回滚,取消注释并执行回滚部分的 SQL 即可。
|
||
|
||
## 生产环境迁移检查清单
|
||
|
||
- [ ] 备份数据库
|
||
- [ ] 在测试环境验证迁移脚本
|
||
- [ ] 检查是否有正在进行的事务
|
||
- [ ] 执行迁移脚本
|
||
- [ ] 验证表结构是否正确
|
||
- [ ] 验证索引是否创建成功
|
||
- [ ] 重启后端服务(如有必要)
|
||
- [ ] 验证功能是否正常
|
||
|
||
## 注意事项
|
||
|
||
1. **MySQL 版本兼容性**:脚本使用了 `IF NOT EXISTS` 和 `IF EXISTS`,确保 MySQL 版本支持这些语法(8.0+ 完全支持)
|
||
|
||
2. **字符集**:表默认使用 `utf8mb4` 字符集,支持表情符号等特殊字符
|
||
|
||
3. **外键约束**:脚本中的外键约束默认被注释,根据实际需求决定是否启用
|
||
|
||
4. **索引优化**:已为常用查询字段创建索引,如需调整请根据实际查询模式优化
|