# 失败原因统计持久化显示 - 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. **历史对比** - 对比多次执行的失败情况 - 发现系统性问题