347 lines
7.1 KiB
Markdown
347 lines
7.1 KiB
Markdown
|
|
# 部署前检查清单
|
|||
|
|
|
|||
|
|
## ✅ 代码修改验证
|
|||
|
|
|
|||
|
|
### 后端 (3个文件)
|
|||
|
|
|
|||
|
|
#### 1. VoiceEvaluationServiceImpl.java ✅
|
|||
|
|
- [ ] 已添加 `convertToRealPath()` 方法
|
|||
|
|
- [ ] 已改用 `BaiduSpeechService`
|
|||
|
|
- [ ] 已添加文件存在性检查
|
|||
|
|
- [ ] 已更新 `isAvailable()` 方法
|
|||
|
|
|
|||
|
|
#### 2. BaiduSpeechService.java ✅
|
|||
|
|
- [ ] 已配置 API 密钥 (APP_ID = "7307076")
|
|||
|
|
- [ ] 已添加 MP3 时长计算 (128kbps)
|
|||
|
|
- [ ] 已添加时长日志输出
|
|||
|
|
|
|||
|
|
#### 3. StudyVoiceEvaluationController.java
|
|||
|
|
- [ ] uploadAndEvaluate 接口正常
|
|||
|
|
- [ ] 支持 mp3 格式上传
|
|||
|
|
|
|||
|
|
### 前端 (3个文件)
|
|||
|
|
|
|||
|
|
#### 1. speech-recorder.js ✅
|
|||
|
|
- [ ] 录音格式:MP3
|
|||
|
|
- [ ] 码率:128kbps
|
|||
|
|
- [ ] frameSize:10
|
|||
|
|
- [ ] 延迟:1500ms + 1000ms
|
|||
|
|
- [ ] 已添加 `verifyFile()` 方法
|
|||
|
|
- [ ] 已添加 `createBackup()` 方法
|
|||
|
|
- [ ] 已添加权限检查
|
|||
|
|
|
|||
|
|
#### 2. evaluation.vue ✅
|
|||
|
|
- [ ] 录音格式:MP3
|
|||
|
|
- [ ] 码率:128kbps
|
|||
|
|
- [ ] 已添加延迟和验证
|
|||
|
|
- [ ] 已添加诊断信息
|
|||
|
|
- [ ] 已添加权限检查
|
|||
|
|
- [ ] 已添加文件大小警告
|
|||
|
|
|
|||
|
|
#### 3. speech.vue ✅
|
|||
|
|
- [ ] 已删除冗余权限代码
|
|||
|
|
- [ ] 使用 speechRecorder.init()
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 🔧 配置文件验证
|
|||
|
|
|
|||
|
|
### application.yml
|
|||
|
|
```yaml
|
|||
|
|
ruoyi:
|
|||
|
|
profile: D:\wwwroot\study_web\web\profile
|
|||
|
|
```
|
|||
|
|
- [ ] 路径正确
|
|||
|
|
- [ ] 目录存在
|
|||
|
|
|
|||
|
|
### config.js
|
|||
|
|
```javascript
|
|||
|
|
DEFAULT_SERVER_HOST: '192.168.0.106'
|
|||
|
|
DEFAULT_SERVER_PORT: '30091'
|
|||
|
|
```
|
|||
|
|
- [ ] IP地址正确
|
|||
|
|
- [ ] 端口号正确
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 📂 服务器环境验证
|
|||
|
|
|
|||
|
|
### 文件系统
|
|||
|
|
- [ ] `D:\wwwroot\study_web\web\profile` 存在
|
|||
|
|
- [ ] `D:\wwwroot\study_web\web\profile\upload` 存在
|
|||
|
|
- [ ] `D:\wwwroot\study_web\web\profile\upload\voice` 存在
|
|||
|
|
- [ ] 目录有写入权限
|
|||
|
|
|
|||
|
|
### 网络连接
|
|||
|
|
- [ ] 服务器能访问 `https://vop.baidu.com`
|
|||
|
|
- [ ] 服务器能访问 `https://aip.baidubce.com`
|
|||
|
|
- [ ] 防火墙已开放 30091 端口
|
|||
|
|
|
|||
|
|
### 百度API
|
|||
|
|
- [ ] APP_ID: 7307076
|
|||
|
|
- [ ] API_KEY: RtL2IfV3FbLnVDDacRV6QDae
|
|||
|
|
- [ ] SECRET_KEY: NobJaGFov7II95fnFUBNGBk0Wm3fcNIB
|
|||
|
|
- [ ] 访问 https://console.bce.baidu.com/ai 确认额度
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 🚀 打包部署步骤
|
|||
|
|
|
|||
|
|
### 1. 打包后端
|
|||
|
|
```bash
|
|||
|
|
cd Study-Vue-redis
|
|||
|
|
mvn clean package -DskipTests
|
|||
|
|
```
|
|||
|
|
- [ ] 打包成功
|
|||
|
|
- [ ] jar文件生成
|
|||
|
|
|
|||
|
|
### 2. 打包前端
|
|||
|
|
```bash
|
|||
|
|
cd fronted_uniapp
|
|||
|
|
npm run build:app
|
|||
|
|
# 或
|
|||
|
|
npm run build:mp-weixin
|
|||
|
|
```
|
|||
|
|
- [ ] 编译成功
|
|||
|
|
- [ ] 安装包生成
|
|||
|
|
|
|||
|
|
### 3. 部署后端
|
|||
|
|
- [ ] 停止旧服务
|
|||
|
|
- [ ] 上传新jar
|
|||
|
|
- [ ] 启动新服务
|
|||
|
|
- [ ] 查看启动日志无错误
|
|||
|
|
|
|||
|
|
### 4. 安装前端
|
|||
|
|
- [ ] 卸载旧APP
|
|||
|
|
- [ ] 安装新APP
|
|||
|
|
- [ ] 首次启动授予录音权限
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 🧪 功能测试清单
|
|||
|
|
|
|||
|
|
### 测试1:录音功能 (基础)
|
|||
|
|
```
|
|||
|
|
步骤:
|
|||
|
|
1. 打开语音测评页面
|
|||
|
|
2. 输入测评内容:"春眠不觉晓"
|
|||
|
|
3. 点击"开始录音"
|
|||
|
|
4. 清晰朗读 5 秒
|
|||
|
|
5. 点击"停止录音"
|
|||
|
|
6. 等待 3 秒
|
|||
|
|
|
|||
|
|
预期:
|
|||
|
|
✅ 显示"录音完成"
|
|||
|
|
✅ 控制台显示文件大小 > 70KB
|
|||
|
|
✅ 诊断信息正常
|
|||
|
|
```
|
|||
|
|
- [ ] 通过
|
|||
|
|
|
|||
|
|
### 测试2:文件验证
|
|||
|
|
```
|
|||
|
|
步骤:
|
|||
|
|
查看控制台日志
|
|||
|
|
|
|||
|
|
预期:
|
|||
|
|
✅ 第1次验证:size < 50KB
|
|||
|
|
✅ 第2次验证:size 增长
|
|||
|
|
✅ 第3次验证:size 稳定
|
|||
|
|
✅ 文件已完全保存
|
|||
|
|
✅ 备份成功
|
|||
|
|
```
|
|||
|
|
- [ ] 通过
|
|||
|
|
|
|||
|
|
### 测试3:语音评测 (完整流程)
|
|||
|
|
```
|
|||
|
|
步骤:
|
|||
|
|
1. 录音 8 秒
|
|||
|
|
2. 停止录音
|
|||
|
|
3. 点击"开始评测"
|
|||
|
|
4. 等待 5-10 秒
|
|||
|
|
|
|||
|
|
预期:
|
|||
|
|
✅ 显示"评测中..."
|
|||
|
|
✅ 后端日志显示:
|
|||
|
|
- 转换后的文件系统路径
|
|||
|
|
- 文件存在,大小: XXX bytes
|
|||
|
|
- 调用百度API识别
|
|||
|
|
- 百度语音识别结果: XXX
|
|||
|
|
- 语音评测完成,总分: XX
|
|||
|
|
✅ APP显示评测结果
|
|||
|
|
✅ 分数 > 0
|
|||
|
|
```
|
|||
|
|
- [ ] 通过
|
|||
|
|
|
|||
|
|
### 测试4:短录音警告
|
|||
|
|
```
|
|||
|
|
步骤:
|
|||
|
|
1. 录音 1 秒
|
|||
|
|
2. 停止录音
|
|||
|
|
|
|||
|
|
预期:
|
|||
|
|
✅ 弹窗警告"录音太短"
|
|||
|
|
✅ 提供"重新录音"选项
|
|||
|
|
```
|
|||
|
|
- [ ] 通过
|
|||
|
|
|
|||
|
|
### 测试5:长录音
|
|||
|
|
```
|
|||
|
|
步骤:
|
|||
|
|
1. 录音 15 秒
|
|||
|
|
2. 停止录音
|
|||
|
|
3. 评测
|
|||
|
|
|
|||
|
|
预期:
|
|||
|
|
✅ 文件大小 > 200KB
|
|||
|
|
✅ 评测成功
|
|||
|
|
✅ 识别完整
|
|||
|
|
```
|
|||
|
|
- [ ] 通过
|
|||
|
|
|
|||
|
|
### 测试6:多次录音
|
|||
|
|
```
|
|||
|
|
步骤:
|
|||
|
|
1. 连续录音 3 次
|
|||
|
|
2. 每次都评测
|
|||
|
|
|
|||
|
|
预期:
|
|||
|
|
✅ 每次都成功
|
|||
|
|
✅ 历史记录正确保存
|
|||
|
|
```
|
|||
|
|
- [ ] 通过
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 📋 后端日志验证
|
|||
|
|
|
|||
|
|
### 关键日志(成功案例)
|
|||
|
|
```
|
|||
|
|
开始语音评测,音频路径:/profile/upload/voice/2025/12/07/xxx.mp3
|
|||
|
|
转换后的文件系统路径:D:\wwwroot\study_web\web\profile\upload\voice\2025\12\07\xxx.mp3
|
|||
|
|
文件存在,大小:128567 bytes
|
|||
|
|
调用百度API识别音频 - 大小: 128567 bytes, 格式: mp3, 估算时长: 8.04秒
|
|||
|
|
百度API响应: {"err_no":0,"result":["春眠不觉晓"],...}
|
|||
|
|
百度语音识别结果: 春眠不觉晓
|
|||
|
|
语音评测完成,总分: 95
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 检查项
|
|||
|
|
- [ ] 路径转换正确
|
|||
|
|
- [ ] 文件存在
|
|||
|
|
- [ ] 文件大小合理
|
|||
|
|
- [ ] 时长计算准确
|
|||
|
|
- [ ] 百度API响应成功
|
|||
|
|
- [ ] 识别结果非空
|
|||
|
|
- [ ] 评分合理 (0-100)
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 📋 前端日志验证
|
|||
|
|
|
|||
|
|
### 关键日志(成功案例)
|
|||
|
|
```
|
|||
|
|
[录音] 开始录音
|
|||
|
|
[录音] 录音结束,详细信息: { duration: 8500, ... }
|
|||
|
|
[录音] 第1次验证成功: { size: 45000, sizeKB: 43.95KB }
|
|||
|
|
[录音] 第2次验证成功: { size: 100000, sizeKB: 97.66KB }
|
|||
|
|
[录音] 文件仍在增长: +55000 bytes
|
|||
|
|
[录音] 第3次验证成功: { size: 128567, sizeKB: 125.55KB }
|
|||
|
|
[录音] 文件大小稳定,编码完成
|
|||
|
|
[录音] 文件已完全保存,大小: 128567 bytes
|
|||
|
|
[录音] 备份成功: .../recordings/voice_backup_xxx.mp3
|
|||
|
|
录音文件信息: {
|
|||
|
|
actualSize: 128567,
|
|||
|
|
actualSizeKB: "125.55",
|
|||
|
|
duration: 8500,
|
|||
|
|
durationSec: "8.5",
|
|||
|
|
expectedSize: 136000,
|
|||
|
|
expectedSizeKB: "132.81",
|
|||
|
|
sizeRatio: "94.5%"
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 检查项
|
|||
|
|
- [ ] 三次验证都成功
|
|||
|
|
- [ ] 文件大小递增
|
|||
|
|
- [ ] 编码完成确认
|
|||
|
|
- [ ] 备份成功
|
|||
|
|
- [ ] 诊断信息完整
|
|||
|
|
- [ ] 大小比例 > 50%
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## ⚠️ 常见问题排查
|
|||
|
|
|
|||
|
|
### 问题1:录音文件太小
|
|||
|
|
**症状:** size < 预期的50%
|
|||
|
|
**排查:**
|
|||
|
|
1. 查看三次验证日志
|
|||
|
|
2. 检查是否有"文件仍在增长"
|
|||
|
|
3. 确认延迟时间足够
|
|||
|
|
4. 尝试改用WAV格式
|
|||
|
|
|
|||
|
|
### 问题2:路径转换错误
|
|||
|
|
**症状:** "文件不存在"
|
|||
|
|
**排查:**
|
|||
|
|
1. 检查 application.yml 配置
|
|||
|
|
2. 确认服务器目录存在
|
|||
|
|
3. 检查路径分隔符(Windows: \, Linux: /)
|
|||
|
|
|
|||
|
|
### 问题3:百度API失败
|
|||
|
|
**症状:** "识别失败"
|
|||
|
|
**排查:**
|
|||
|
|
1. 检查API密钥
|
|||
|
|
2. 确认网络连接
|
|||
|
|
3. 查看百度API额度
|
|||
|
|
4. 检查文件格式和大小
|
|||
|
|
|
|||
|
|
### 问题4:权限被拒绝
|
|||
|
|
**症状:** "录音权限被拒绝"
|
|||
|
|
**排查:**
|
|||
|
|
1. 设置 → 应用 → APP → 权限 → 麦克风
|
|||
|
|
2. 卸载重装APP
|
|||
|
|
3. 检查系统版本兼容性
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## ✅ 部署完成标志
|
|||
|
|
|
|||
|
|
全部测试通过后,确认:
|
|||
|
|
- [x] 后端代码已修改
|
|||
|
|
- [x] 前端代码已修改
|
|||
|
|
- [x] 后端已重新打包
|
|||
|
|
- [x] 前端已重新编译
|
|||
|
|
- [x] 服务器已部署
|
|||
|
|
- [x] APP已安装
|
|||
|
|
- [x] 权限已授予
|
|||
|
|
- [x] 基础录音测试通过
|
|||
|
|
- [x] 完整评测测试通过
|
|||
|
|
- [x] 日志验证通过
|
|||
|
|
- [x] 备份机制工作
|
|||
|
|
- [x] 诊断信息正常
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 🎯 成功标准
|
|||
|
|
|
|||
|
|
- **录音成功率**: > 95%
|
|||
|
|
- **文件完整率**: > 98%
|
|||
|
|
- **评测成功率**: > 90%
|
|||
|
|
- **识别准确率**: 取决于发音
|
|||
|
|
- **备份成功率**: > 90%
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 📞 问题反馈
|
|||
|
|
|
|||
|
|
如果仍有问题,提供以下信息:
|
|||
|
|
1. 前端完整日志
|
|||
|
|
2. 后端完整日志
|
|||
|
|
3. 诊断信息截图
|
|||
|
|
4. 录音时长和文件大小
|
|||
|
|
5. 测试环境(设备型号、系统版本)
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
生成时间:2025-12-07
|