Ai_GirlFriend/开发/2026年2月4日/音乐库唱歌视频部署清单.md
2026-02-04 18:47:56 +08:00

334 lines
6.7 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.

# 音乐库唱歌视频功能 - 部署清单
## 📋 部署前检查
### 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
**状态**: 待部署