224 lines
6.0 KiB
Markdown
224 lines
6.0 KiB
Markdown
|
|
# 失败原因统计持久化显示 - v3.13.5.7
|
|||
|
|
|
|||
|
|
## 更新日期
|
|||
|
|
2025-10-12
|
|||
|
|
|
|||
|
|
## 问题描述
|
|||
|
|
在批量任务执行完成后,失败原因统计信息会立即消失,用户无法查看之前执行的失败详情。
|
|||
|
|
|
|||
|
|
## 用户需求
|
|||
|
|
希望失败原因统计能够一直保留显示,直到下一次开始执行新任务之前。这样用户可以:
|
|||
|
|
- 在任务完成后仔细分析失败原因
|
|||
|
|
- 记录和排查问题
|
|||
|
|
- 决定是否需要调整配置后重试
|
|||
|
|
|
|||
|
|
## 解决方案
|
|||
|
|
|
|||
|
|
### 1. 失败原因统计的生命周期
|
|||
|
|
|
|||
|
|
**之前的行为**:
|
|||
|
|
- 任务完成后,失败原因统计可能在某些情况下被意外清空
|
|||
|
|
- 用户无法在任务完成后查看失败详情
|
|||
|
|
|
|||
|
|
**新的行为**:
|
|||
|
|
- 任务完成后,失败原因统计保持显示
|
|||
|
|
- 只有在开始**新的**批量任务执行时,才清空失败原因统计
|
|||
|
|
- 重试模式下,失败原因统计会被保留并更新
|
|||
|
|
|
|||
|
|
### 2. 代码修改
|
|||
|
|
|
|||
|
|
**文件**:`src/stores/batchTaskStore.js`
|
|||
|
|
|
|||
|
|
**修改位置**:`startBatchExecution` 函数中的全新开始分支
|
|||
|
|
|
|||
|
|
```javascript
|
|||
|
|
} else {
|
|||
|
|
// 全新开始:重置所有统计
|
|||
|
|
executionStats.value = {
|
|||
|
|
total: targetTokens.length,
|
|||
|
|
success: 0,
|
|||
|
|
failed: 0,
|
|||
|
|
skipped: 0,
|
|||
|
|
startTime: Date.now(),
|
|||
|
|
endTime: null
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// 🔧 v3.13.5.7: 清空失败原因统计(只在全新开始时清空)
|
|||
|
|
failureReasonsStats.value = {}
|
|||
|
|
if (logConfig.value.batch) console.log('🗑️ 已清空失败原因统计(开始新任务)')
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 3. 功能特性
|
|||
|
|
|
|||
|
|
#### 3.1 失败原因统计的显示时机
|
|||
|
|
|
|||
|
|
| 场景 | 失败原因统计状态 |
|
|||
|
|
|------|----------------|
|
|||
|
|
| 任务执行中 | 实时更新显示 |
|
|||
|
|
| 任务完成(有失败) | **持续显示** ✅ |
|
|||
|
|
| 任务完成(全部成功) | 保持空状态 |
|
|||
|
|
| 暂停任务 | 保持当前状态 |
|
|||
|
|
| 继续执行 | 保持之前的统计 |
|
|||
|
|
| 重试失败任务 | 保留并更新统计 |
|
|||
|
|
| **开始新任务** | **清空统计** 🗑️ |
|
|||
|
|
| 刷新页面后恢复进度 | 从localStorage恢复 |
|
|||
|
|
|
|||
|
|
#### 3.2 用户体验优化
|
|||
|
|
|
|||
|
|
1. **任务完成后**
|
|||
|
|
- 失败原因统计区域持续显示
|
|||
|
|
- 用户可以截图或记录失败信息
|
|||
|
|
- 可以基于失败原因决定后续操作
|
|||
|
|
|
|||
|
|
2. **开始新任务时**
|
|||
|
|
- 自动清空之前的失败统计
|
|||
|
|
- 从零开始统计新任务的失败情况
|
|||
|
|
- 控制台输出清空日志(如果启用批量日志)
|
|||
|
|
|
|||
|
|
3. **重试模式下**
|
|||
|
|
- 保留原有失败统计
|
|||
|
|
- 实时更新重试后的结果
|
|||
|
|
- 可以对比重试前后的失败情况
|
|||
|
|
|
|||
|
|
### 4. 技术细节
|
|||
|
|
|
|||
|
|
#### 4.1 清空时机(唯一触发点)
|
|||
|
|
|
|||
|
|
```javascript
|
|||
|
|
// 只在全新开始执行任务时清空
|
|||
|
|
if (!continueFromSaved) {
|
|||
|
|
if (isRetry) {
|
|||
|
|
// 重试模式:不清空失败统计
|
|||
|
|
} else {
|
|||
|
|
// 全新开始:清空失败统计 ✅
|
|||
|
|
failureReasonsStats.value = {}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
#### 4.2 保留时机
|
|||
|
|
|
|||
|
|
- 任务完成时(`completeBatchExecution`):**不清空**
|
|||
|
|
- 清除进度时(`clearSavedProgress`):**不清空**
|
|||
|
|
- 暂停任务时(`pauseBatchExecution`):**不清空**
|
|||
|
|
- 停止任务时(`stopBatchExecution`):**不清空**
|
|||
|
|
|
|||
|
|
#### 4.3 持久化存储
|
|||
|
|
|
|||
|
|
失败原因统计会被保存到 localStorage 中:
|
|||
|
|
|
|||
|
|
```javascript
|
|||
|
|
const progress = {
|
|||
|
|
// ... 其他数据
|
|||
|
|
failureReasons: currentFailureReasons // 保存失败原因统计
|
|||
|
|
}
|
|||
|
|
storageCache.set('batchTaskProgress', progress)
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
恢复时:
|
|||
|
|
|
|||
|
|
```javascript
|
|||
|
|
if (savedProgress.value.failureReasons) {
|
|||
|
|
failureReasonsStats.value = savedProgress.value.failureReasons
|
|||
|
|
console.log(`📊 已恢复失败原因统计`)
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 5. UI 显示效果
|
|||
|
|
|
|||
|
|
**任务完成后的显示**:
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|||
|
|
📋 失败原因统计(共 2 个Token失败)
|
|||
|
|
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|||
|
|
• sendCar: sendCar(服务器错误: 310060 - 未知错误): 2个Token
|
|||
|
|
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**开始新任务时**(如果启用日志):
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
🚀 开始批量执行任务
|
|||
|
|
🗑️ 已清空失败原因统计(开始新任务)
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 6. 测试场景
|
|||
|
|
|
|||
|
|
#### 6.1 基础流程
|
|||
|
|
1. 执行批量任务,部分Token失败
|
|||
|
|
2. 任务完成后,失败原因统计持续显示 ✅
|
|||
|
|
3. 开始新的批量任务
|
|||
|
|
4. 失败原因统计被清空,从零开始 ✅
|
|||
|
|
|
|||
|
|
#### 6.2 重试流程
|
|||
|
|
1. 执行批量任务,部分Token失败
|
|||
|
|
2. 失败原因统计显示
|
|||
|
|
3. 点击"重试失败任务"
|
|||
|
|
4. 失败原因统计保留并实时更新 ✅
|
|||
|
|
|
|||
|
|
#### 6.3 页面刷新
|
|||
|
|
1. 执行批量任务,部分Token失败
|
|||
|
|
2. 刷新页面
|
|||
|
|
3. 点击"继续执行"
|
|||
|
|
4. 失败原因统计从localStorage恢复 ✅
|
|||
|
|
|
|||
|
|
### 7. 优势
|
|||
|
|
|
|||
|
|
1. **用户友好**
|
|||
|
|
- 失败信息不会突然消失
|
|||
|
|
- 有足够时间分析和记录问题
|
|||
|
|
|
|||
|
|
2. **问题排查**
|
|||
|
|
- 可以清楚看到哪些操作最容易失败
|
|||
|
|
- 便于定位和修复系统问题
|
|||
|
|
|
|||
|
|
3. **操作决策**
|
|||
|
|
- 基于失败原因决定是否重试
|
|||
|
|
- 可以调整配置后再次执行
|
|||
|
|
|
|||
|
|
4. **性能影响**
|
|||
|
|
- 几乎无性能开销
|
|||
|
|
- 只在开始新任务时清空一次
|
|||
|
|
|
|||
|
|
### 8. 注意事项
|
|||
|
|
|
|||
|
|
1. **失败统计的准确性**
|
|||
|
|
- 统计数据实时收集和更新
|
|||
|
|
- 不会因为清理任务详情而丢失
|
|||
|
|
|
|||
|
|
2. **内存占用**
|
|||
|
|
- 失败原因统计只保存摘要信息
|
|||
|
|
- 内存占用极小(通常 < 1KB)
|
|||
|
|
|
|||
|
|
3. **持久化存储**
|
|||
|
|
- 失败统计随进度保存到 localStorage
|
|||
|
|
- 支持页面刷新后恢复
|
|||
|
|
|
|||
|
|
## 相关文件
|
|||
|
|
|
|||
|
|
- `src/stores/batchTaskStore.js` - 批量任务状态管理
|
|||
|
|
- `src/views/DailyTasks.vue` - 批量任务执行界面(显示失败统计)
|
|||
|
|
|
|||
|
|
## 版本信息
|
|||
|
|
|
|||
|
|
- **版本号**:v3.13.5.7
|
|||
|
|
- **更新类型**:功能优化
|
|||
|
|
- **影响范围**:批量任务执行模块
|
|||
|
|
|
|||
|
|
## 后续优化建议
|
|||
|
|
|
|||
|
|
1. **失败统计导出**
|
|||
|
|
- 支持将失败统计导出为文本或CSV
|
|||
|
|
- 便于长期记录和分析
|
|||
|
|
|
|||
|
|
2. **失败模式识别**
|
|||
|
|
- 自动识别常见失败模式
|
|||
|
|
- 提供针对性的解决建议
|
|||
|
|
|
|||
|
|
3. **历史对比**
|
|||
|
|
- 对比多次执行的失败情况
|
|||
|
|
- 发现系统性问题
|
|||
|
|
|