122 lines
2.8 KiB
Markdown
122 lines
2.8 KiB
Markdown
|
|
# 测试音乐库唱歌功能
|
|||
|
|
|
|||
|
|
## ✅ 修复完成
|
|||
|
|
|
|||
|
|
前端代码已修复,API 参数传递问题已解决。
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 🧪 测试步骤
|
|||
|
|
|
|||
|
|
### 1. 启动后端服务
|
|||
|
|
|
|||
|
|
双击运行:`启动后端服务.bat`
|
|||
|
|
|
|||
|
|
等待看到:
|
|||
|
|
```
|
|||
|
|
INFO: Uvicorn running on http://0.0.0.0:30101
|
|||
|
|
INFO: Application startup complete.
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 2. 验证 API
|
|||
|
|
|
|||
|
|
打开浏览器访问:http://localhost:30101/docs
|
|||
|
|
|
|||
|
|
找到 `POST /music/convert-to-song`,应该能看到:
|
|||
|
|
- 参数:`music_id` (query, required, integer)
|
|||
|
|
|
|||
|
|
### 3. 重新编译前端
|
|||
|
|
|
|||
|
|
保存 `xuniYou/pages/index/index.vue` 后,重新编译前端项目。
|
|||
|
|
|
|||
|
|
### 4. 测试功能
|
|||
|
|
|
|||
|
|
#### 测试场景 1:直链音乐(应该成功)
|
|||
|
|
1. 打开应用,进入音乐库
|
|||
|
|
2. 点击任意 Bensound 音乐(直链音乐)
|
|||
|
|
3. 应该弹出确认框:"确定让她唱《xxx》吗?"
|
|||
|
|
4. 点击"确定"
|
|||
|
|
5. 应该显示"准备中..." → "生成中..."
|
|||
|
|
6. 生成完成后自动切换到"历史记录" tab
|
|||
|
|
7. 视频自动播放
|
|||
|
|
|
|||
|
|
#### 测试场景 2:外部链接音乐(应该提示)
|
|||
|
|
1. 点击外部平台音乐(网易云、QQ音乐)
|
|||
|
|
2. 应该弹出提示:"外部平台音乐无法生成视频,请使用直链或上传的音乐"
|
|||
|
|
|
|||
|
|
#### 测试场景 3:重复生成(应该使用缓存)
|
|||
|
|
1. 再次点击相同的音乐
|
|||
|
|
2. 应该立即成功(不需要等待生成)
|
|||
|
|
3. 直接显示"生成成功"并播放视频
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 🐛 已修复的问题
|
|||
|
|
|
|||
|
|
### 问题:API 参数传递错误
|
|||
|
|
|
|||
|
|
**错误日志**:
|
|||
|
|
```
|
|||
|
|
fastapi.exceptions.RequestValidationError: 1 validation error:
|
|||
|
|
{'type': 'missing', 'loc': ('query', 'music_id'), 'msg': 'Field required', 'input': None}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**原因**:
|
|||
|
|
- 后端定义:`music_id: int`(query 参数)
|
|||
|
|
- 前端发送:`data: { music_id: music.id }`(body 参数)
|
|||
|
|
|
|||
|
|
**解决**:
|
|||
|
|
修改前端为:`url: baseURLPy + '/music/convert-to-song?music_id=' + music.id`
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 📊 预期结果
|
|||
|
|
|
|||
|
|
### 成功的请求日志
|
|||
|
|
```
|
|||
|
|
INFO: POST /music/convert-to-song?music_id=1 HTTP/1.1" 200 OK
|
|||
|
|
INFO: POST /sing/generate HTTP/1.1" 200 OK
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 成功的响应
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"code": 1,
|
|||
|
|
"message": "success",
|
|||
|
|
"data": {
|
|||
|
|
"song_id": 123,
|
|||
|
|
"status": "succeeded",
|
|||
|
|
"video_url": "https://..."
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 🔍 调试技巧
|
|||
|
|
|
|||
|
|
### 查看后端日志
|
|||
|
|
后端服务会输出详细日志,包括:
|
|||
|
|
- 请求 URL 和参数
|
|||
|
|
- 数据库查询
|
|||
|
|
- 错误信息
|
|||
|
|
|
|||
|
|
### 查看前端日志
|
|||
|
|
按 F12 打开浏览器开发者工具:
|
|||
|
|
- **Console** 标签:查看 JavaScript 错误
|
|||
|
|
- **Network** 标签:查看 API 请求和响应
|
|||
|
|
|
|||
|
|
### 常见问题
|
|||
|
|
|
|||
|
|
1. **422 错误**:参数传递错误(已修复)
|
|||
|
|
2. **401 错误**:TOKEN 过期,需要重新登录
|
|||
|
|
3. **404 错误**:API 路径错误或后端服务未启动
|
|||
|
|
4. **500 错误**:后端服务异常,查看后端日志
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
**测试说明版本**: 1.0
|
|||
|
|
**创建时间**: 2026-02-04 18:15
|
|||
|
|
**状态**: ✅ 可以开始测试
|
|||
|
|
|