Ai_GirlFriend/开发/2026年2月4日/音乐库唱歌视频部署清单.md

334 lines
6.7 KiB
Markdown
Raw Normal View History

# 音乐库唱歌视频功能 - 部署清单
## 📋 部署前检查
### 1. 文件完整性
- [x] `开发/2026年2月4日/音乐库唱歌视频数据库修改.sql` - 数据库修改脚本
- [x] `lover/models.py` - 数据模型已更新
- [x] `lover/routers/music_library.py` - 转换 API 已添加
- [x] `lover/routers/sing.py` - 导入已更新
- [x] `test_music_library_sing.py` - 测试脚本
- [ ] `xuniYou/pages/index/index.vue` - 前端代码(待修改)
### 2. 代码质量检查
- [x] Python 语法检查 - 无错误
- [x] 数据模型验证 - 正确
- [x] API 端点验证 - 正确
- [ ] 前端代码检查 - 待修改
## 🚀 部署步骤
### 步骤 1: 备份数据库 ⚠️ 重要
```bash
# 备份整个数据库
mysqldump -u root -p fastadmin > backup_before_music_sing_$(date +%Y%m%d_%H%M%S).sql
# 或者只备份相关表
mysqldump -u root -p fastadmin nf_sing_song_video nf_song_library nf_music_library > backup_music_sing_tables_$(date +%Y%m%d_%H%M%S).sql
```
- [ ] 数据库已备份
- [ ] 备份文件已验证
### 步骤 2: 执行数据库修改(可选但推荐)
```bash
mysql -u root -p fastadmin < "开发/2026年2月4日/音乐库唱歌视频数据库修改.sql"
```
**验证**:
```sql
-- 查看表结构
SHOW COLUMNS FROM nf_sing_song_video;
-- 应该看到新字段:
-- music_library_id
-- music_source
```
- [ ] SQL 执行成功
- [ ] 新字段已添加
- [ ] 索引已创建
### 步骤 3: 重启 Python 后端
```bash
# 停止现有服务
# Ctrl+C 或关闭终端
# 启动新服务
cd lover
python -m uvicorn main:app --host 0.0.0.0 --port 30101 --reload
```
**验证**:
- [ ] 服务启动成功
- [ ] 无错误日志
- [ ] 可以访问 http://localhost:30101/docs
- [ ] 可以看到新 API: `POST /music/convert-to-song`
### 步骤 4: 测试后端 API
#### 4.1 使用 Swagger UI 测试
1. 访问 http://localhost:30101/docs
2. 找到 `POST /music/convert-to-song`
3. 点击 "Try it out"
4. 输入 `music_id: 1`
5. 点击 "Execute"
**预期结果**:
```json
{
"code": 1,
"message": "success",
"data": {
"song_id": 123,
"title": "Sunny",
"from_cache": false
}
}
```
- [ ] API 调用成功
- [ ] 返回 song_id
- [ ] 数据正确
#### 4.2 使用测试脚本
```bash
# 1. 编辑测试脚本,设置 TOKEN
notepad test_music_library_sing.py
# 2. 运行测试
python test_music_library_sing.py
```
- [ ] 转换音乐 - 成功
- [ ] 拒绝外部链接 - 成功
- [ ] 生成视频 - 成功
- [ ] 查询任务 - 成功
- [ ] 获取历史 - 成功
### 步骤 5: 修改前端代码
按照 `音乐库唱歌视频前端修改指南.md` 修改前端代码。
**修改位置**: `xuniYou/pages/index/index.vue`
1. 找到 `selectMusicFromLibrary` 方法(约第 2387 行)
2. 替换方法内容
3. 添加 `generateSingVideoFromLibrary` 方法
4. 添加 `generateSingVideoWithSongId` 方法
- [ ] 前端代码已修改
- [ ] 代码语法正确
- [ ] 方法添加完整
### 步骤 6: 前端测试
#### 6.1 基本功能测试
1. 打开应用
2. 进入"唱歌"页面
3. 切换到"音乐库" tab
4. 点击一首直链音乐Bensound
5. 确认生成
**预期结果**:
- [ ] 显示"准备中..."
- [ ] 显示"生成中..."
- [ ] 自动切换到"历史记录" tab
- [ ] 生成成功后显示视频
#### 6.2 外部链接测试
1. 点击一首外部链接音乐(网易云)
2. 查看提示
**预期结果**:
- [ ] 显示"外部平台音乐无法生成视频"提示
- [ ] 不会开始生成
#### 6.3 历史记录测试
1. 切换到"历史记录" tab
2. 查看生成的视频
**预期结果**:
- [ ] 显示新生成的视频
- [ ] 可以播放视频
- [ ] 显示正确的标题
#### 6.4 缓存测试
1. 再次点击相同的音乐
2. 确认生成
**预期结果**:
- [ ] 立即生成成功(有缓存)
- [ ] 不需要等待
- [ ] 复用之前的视频
## ✅ 部署后验证
### 1. 功能验证
- [ ] 可以转换音乐为系统歌曲
- [ ] 可以生成唱歌视频
- [ ] 可以查看历史记录
- [ ] 外部链接被正确拒绝
- [ ] 缓存机制正常工作
### 2. 数据验证
```sql
-- 查询转换的系统歌曲
SELECT id, title, artist, gender, audio_hash
FROM nf_song_library
WHERE createtime > UNIX_TIMESTAMP(NOW() - INTERVAL 1 DAY)
ORDER BY id DESC
LIMIT 10;
-- 查询生成的视频
SELECT id, user_id, song_id, music_library_id, music_source, status
FROM nf_sing_song_video
WHERE created_at > NOW() - INTERVAL 1 DAY
ORDER BY id DESC
LIMIT 10;
-- 查询生成任务
SELECT id, user_id, task_type, status, payload
FROM nf_generation_tasks
WHERE task_type = 'video'
AND created_at > NOW() - INTERVAL 1 DAY
ORDER BY id DESC
LIMIT 10;
```
- [ ] 数据正确
- [ ] 无重复记录
- [ ] 关联正确
### 3. 性能验证
- [ ] API 响应时间 < 500ms
- [ ] 视频生成时间正常
- [ ] 无内存泄漏
- [ ] 无数据库连接泄漏
### 4. 日志检查
```bash
# 查看后端日志
tail -f lover/logs/app.log
# 查看数据库日志
tail -f /var/log/mysql/error.log
```
- [ ] 无错误日志
- [ ] 无警告日志
- [ ] API 调用正常
## 🔄 回滚计划
如果部署失败,按以下步骤回滚:
### 1. 恢复数据库
```bash
# 恢复备份
mysql -u root -p fastadmin < backup_before_music_sing_YYYYMMDD_HHMMSS.sql
```
### 2. 恢复代码
```bash
# 使用 Git 回滚
git checkout HEAD~1 lover/models.py
git checkout HEAD~1 lover/routers/music_library.py
git checkout HEAD~1 lover/routers/sing.py
git checkout HEAD~1 xuniYou/pages/index/index.vue
```
### 3. 重启服务
```bash
cd lover
python -m uvicorn main:app --host 0.0.0.0 --port 30101 --reload
```
## 📊 部署结果
### 成功标准
- ✅ 所有测试通过
- ✅ 无错误日志
- ✅ 性能正常
- ✅ 数据完整
- ✅ 用户体验良好
### 部署记录
- **部署日期**: ___________
- **部署人员**: ___________
- **部署结果**: [ ] 成功 [ ] 失败
- **问题记录**: ___________
- **解决方案**: ___________
## 📞 问题处理
### 常见问题
**问题 1: 转换 API 返回 404**
```
解决方案:
1. 检查后端是否重启
2. 检查 API 路由是否正确
3. 查看后端日志
```
**问题 2: 生成视频失败**
```
解决方案:
1. 检查视频生成次数
2. 检查音乐 URL 是否可访问
3. 检查恋人形象是否存在
4. 查看任务错误信息
```
**问题 3: 前端无法调用 API**
```
解决方案:
1. 检查 TOKEN 是否有效
2. 检查 API 地址是否正确
3. 检查网络连接
4. 查看浏览器控制台
```
**问题 4: 历史记录不显示**
```
解决方案:
1. 刷新页面
2. 检查 API 返回数据
3. 检查数据库记录
4. 查看前端日志
```
## 📝 部署签名
- **部署人员**: ___________
- **审核人员**: ___________
- **部署日期**: ___________
- **签名**: ___________
---
**部署清单版本**: 1.0
**更新时间**: 2026-02-04
**状态**: 待部署