# 功能更新 - 任务状态跟踪 v3.1.0 ## 📅 更新日期 2025年10月7日 --- ## 🎯 更新概述 本次更新为"一键补差"功能添加了任务状态持久化和智能跳过机制,有效避免了资源消耗型任务(如付费招募、开宝箱、黑市购买)的重复执行,防止资源浪费。 --- ## ✨ 新增功能 ### 1. 任务状态持久化 **功能描述**: - 系统自动记录每个角色的每日任务完成状态 - 数据存储在浏览器本地,不会丢失 - 每天0点自动重置,符合游戏每日任务机制 **包含的任务状态信息**: - 任务是否完成 - 完成时间 - 执行成功/失败状态 - 错误信息(如果失败) --- ### 2. 智能跳过机制 **功能描述**: 自动识别并跳过已完成的资源消耗型任务,避免重复执行造成资源浪费。 **会被跳过的任务(消耗资源型)**: | 任务名称 | 说明 | 资源消耗 | |---------|------|----------| | **付费招募** | 使用金币招募英雄 | 消耗金币 | | **免费点金 1/3, 2/3, 3/3** | 使用免费次数点金(每天3次) | 消耗每日免费次数 | | **开启木质宝箱×10** | 打开10个木质宝箱 | 消耗宝箱道具 | | **免费钓鱼 1/3, 2/3, 3/3** | 使用免费次数钓鱼(每天3次) | 消耗每日免费次数 | | **黑市一键采购** | 购买黑市商品 | 消耗金币 | | **竞技场战斗 1/3, 2/3, 3/3** | 进行竞技场战斗(每天3次) | 消耗每日免费次数 | **跳过逻辑**: - ✅ 如果任务已成功完成,下次执行时自动跳过 - ✅ 跳过的任务会在执行日志中标记为"已完成,跳过执行" - ✅ 其他任务不受影响,每次都会正常执行 **示例日志**: ``` ⏭️ 跳过已完成的任务: 付费招募 ⏭️ 跳过已完成的任务: 免费点金 1/3 ⏭️ 跳过已完成的任务: 免费点金 2/3 ⏭️ 跳过已完成的任务: 免费点金 3/3 ⏭️ 跳过已完成的任务: 开启木质宝箱×10 ⏭️ 跳过已完成的任务: 免费钓鱼 1/3 ⏭️ 跳过已完成的任务: 免费钓鱼 2/3 ⏭️ 跳过已完成的任务: 免费钓鱼 3/3 ⏭️ 跳过已完成的任务: 黑市一键采购 ⏭️ 跳过已完成的任务: 竞技场战斗 1/3 ⏭️ 跳过已完成的任务: 竞技场战斗 2/3 ⏭️ 跳过已完成的任务: 竞技场战斗 3/3 ``` --- ### 3. 子任务详情查看 **功能描述**: 在批量任务执行进度中,每个角色卡片新增"子任务"按钮,可以查看一键补差的详细任务列表和执行状态。 **如何使用**: 1. 在批量任务面板中,找到任意角色的进度卡片 2. 点击右上角的"子任务"按钮 3. 打开子任务详情弹窗 **子任务详情弹窗包含**: #### 统计信息 - 总计任务数:约46个子任务 - 已完成:成功完成的任务数量 - 失败:执行失败的任务数量 - 待执行:未执行的任务数量 #### 任务列表 每个任务显示: - ✅/❌/⏳ 状态图标(成功/失败/未执行) - 任务名称 - 消耗资源标记(如果适用) - 完成状态标签 - 完成时间(如果已完成) - 错误信息(如果失败) **示例**: ``` ✅ 付费招募 [消耗资源] [已完成] 完成时间: 2025-10-07 08:30:25 ✅ 免费点金 1/3 [消耗资源] [已完成] 完成时间: 2025-10-07 08:30:26 ✅ 免费点金 2/3 [消耗资源] [已完成] 完成时间: 2025-10-07 08:30:27 ✅ 开启木质宝箱×10 [消耗资源] [已完成] 完成时间: 2025-10-07 08:30:28 ✅ 免费钓鱼 1/3 [消耗资源] [已完成] 完成时间: 2025-10-07 08:30:35 ❌ 黑市一键采购 [消耗资源] [失败] 错误: 金币不足 ✅ 竞技场战斗 1/3 [消耗资源] [已完成] 完成时间: 2025-10-07 08:30:45 ⏳ 免费招募 [未执行] ``` --- ### 4. 手动重置功能 **功能描述**: 支持手动重置某个角色的所有任务状态,方便用户在需要时重新执行。 **如何使用**: 1. 打开子任务详情弹窗 2. 点击右上角的"重置所有"按钮 3. 所有任务状态立即清空,下次运行时会重新执行 **使用场景**: - 需要重新执行付费招募/开宝箱等任务 - 测试任务执行流程 - 任务状态出现异常需要重置 --- ## 📊 技术实现 ### 1. 新增文件 **`src/stores/dailyTaskState.js`** - 任务状态持久化Store - 管理所有角色的任务状态 - 提供状态查询、更新、重置等方法 **关键方法**: ```javascript // 检查任务是否已完成 isTaskCompleted(tokenId, taskId) // 标记任务为已完成 markTaskCompleted(tokenId, taskId, success, error) // 获取需要跳过的任务列表 getTasksToSkip(tokenId) // 获取任务详情列表(用于UI展示) getDetailedTaskList(tokenId) // 重置任务状态 resetTokenTasks(tokenId) ``` --- ### 2. 修改文件 **`src/stores/batchTaskStore.js`** - 新增 `executeSubTask` 辅助函数 - 修改一键补差的执行逻辑 - 添加任务状态检查和跳过逻辑 **关键变更**: ```javascript // 执行子任务并跟踪状态 const executeSubTask = async (tokenId, taskId, taskName, executor, consumesResources) => { // 如果任务消耗资源且已完成,跳过执行 if (consumesResources && dailyTaskStateStore.isTaskCompleted(tokenId, taskId)) { return { task: taskName, skipped: true, success: true, message: '已完成,跳过执行' } } try { const result = await executor() dailyTaskStateStore.markTaskCompleted(tokenId, taskId, true, null) return { task: taskName, success: true, data: result } } catch (error) { dailyTaskStateStore.markTaskFailed(tokenId, taskId, error.message) return { task: taskName, success: false, error: error.message } } } ``` **`src/components/TaskProgressCard.vue`** - 新增"子任务"按钮 - 新增子任务详情弹窗 - 显示任务状态和统计信息 --- ### 3. 数据结构 **localStorage存储格式**: ```javascript { "dailyTaskStates": { "token_xxx": { "date": "2025-10-07", "tasks": { "paid_recruit": { "completed": true, "completedAt": 1696656625000, "success": true, "error": null }, "open_box": { "completed": true, "completedAt": 1696656628000, "success": true, "error": null }, "black_market": { "completed": true, "completedAt": 1696656630000, "success": false, "error": "金币不足" } // ... 其他任务 } } // ... 其他token } } ``` --- ## 🎨 用户界面变化 ### 批量任务面板 **新增元素**: - 每个角色卡片右上角新增"子任务"按钮 **效果图**: ``` ┌─────────────────────────────────────┐ │ 🎮 角色A [执行中] [详情] [子任务] │ │ ━━━━━━━━━━━━━━ 60% │ │ 一键补差 (25/46) │ │ ✓ 成功: 20 ✗ 失败: 5 │ └─────────────────────────────────────┘ ``` --- ### 子任务详情弹窗 **标题栏**: - 左侧:角色名称 - 一键补差子任务详情 - 右侧:[重置所有] 按钮 **内容区域**: 1. **统计信息区**(顶部) ``` ┌─────────────────────────────────────┐ │ 总计: 46 已完成: 20 失败: 5 待执行: 21 │ └─────────────────────────────────────┘ ``` 2. **任务列表区**(可滚动) ``` ✅ 付费招募 [消耗资源] [已完成] 完成时间: 2025-10-07 08:30:25 ✅ 开启木质宝箱×10 [消耗资源] [已完成] 完成时间: 2025-10-07 08:30:28 ⏳ 免费招募 [未执行] ⏳ 免费点金 1/3 [未执行] ... (更多任务) ``` 3. **提示信息区**(底部) ``` 💡 提示 • 标记为"消耗资源"的任务(付费招募、免费点金、开宝箱、免费钓鱼、黑市购买、竞技场战斗) 完成后,下次运行时会自动跳过 • 任务状态每天0点自动重置,或者可以手动点击"重置所有"按钮重置 • 其他任务每次都会尝试执行,不受已完成状态影响 ``` --- ## 📖 使用指南 ### 场景1:正常执行一键补差 **步骤**: 1. 在批量任务面板选择"完整套餐"或"仅一键补差"模板 2. 点击"开始执行" 3. 系统自动执行所有任务,并记录状态 **结果**: - 所有任务正常执行 - 付费招募、开宝箱、黑市购买等任务完成后被标记 **下次执行**: - 已完成的资源消耗型任务会被自动跳过 - 其他任务正常执行 --- ### 场景2:查看任务详情 **步骤**: 1. 执行完成后,点击角色卡片的"子任务"按钮 2. 查看每个子任务的执行状态 3. 查看哪些任务成功、失败或未执行 **用途**: - 了解任务执行情况 - 排查失败原因 - 确认哪些任务已完成 --- ### 场景3:重新执行资源消耗型任务 **步骤**: 1. 点击"子任务"按钮打开详情弹窗 2. 点击右上角"重置所有"按钮 3. 确认重置 4. 重新执行批量任务 **结果**: - 所有任务状态清空 - 付费招募、开宝箱等任务会重新执行 - **注意**:会消耗相应资源 --- ### 场景4:多次运行一键补差 **情况说明**: 有时候可能需要在同一天内多次运行一键补差(例如测试、或者部分任务失败后重试)。 **系统行为**: - **第一次运行**:所有任务正常执行 - 付费招募 ✅ 成功(消耗金币) - 免费点金×3 ✅ 成功(消耗免费次数) - 开宝箱×10 ✅ 成功(消耗宝箱) - 免费钓鱼×3 ✅ 成功(消耗免费次数) - 黑市购买 ✅ 成功(消耗金币) - 竞技场战斗×3 ✅ 成功(消耗免费次数) - **第二次运行**(同一天内): - 付费招募 ⏭️ 跳过(已完成) - 免费点金×3 ⏭️ 跳过(已完成) - 开宝箱×10 ⏭️ 跳过(已完成) - 免费钓鱼×3 ⏭️ 跳过(已完成) - 黑市购买 ⏭️ 跳过(已完成) - 竞技场战斗×3 ⏭️ 跳过(已完成) - 其他任务 ✅ 正常执行 **优势**: - ✅ 避免重复消耗资源 - ✅ 可以安全地多次运行 - ✅ 只有失败的任务会重试 --- ## ⚠️ 注意事项 ### 1. 任务重置时机 **自动重置**: - 每天0点系统自动重置所有任务状态 - 每小时检查一次,清理过期数据 **手动重置**: - 点击"重置所有"按钮立即重置 - 重置后下次运行会重新执行所有任务 --- ### 2. 资源消耗 **被标记为"消耗资源"的任务**: - 付费招募:消耗金币 - 免费点金(3次):消耗每日免费次数 - 开启木质宝箱×10:消耗宝箱道具 - 免费钓鱼(3次):消耗每日免费次数 - 黑市一键采购:消耗金币 - 竞技场战斗(3次):消耗每日免费次数 **其他任务不消耗重要资源**: - 免费招募:使用免费次数(不限制) - 领取类任务:纯领取,不消耗资源 - 扫荡类任务:使用免费次数(不限制) --- ### 3. 数据存储 **存储位置**: - 浏览器localStorage - 数据不会丢失(除非清除浏览器数据) **数据安全**: - 仅存储在本地,不上传服务器 - 切换浏览器或设备需要重新执行 --- ### 4. 跳过逻辑 **只跳过成功的任务**: - ✅ 成功的资源消耗型任务会被跳过 - ❌ 失败的任务不会被跳过,会重新执行 - ⏳ 未执行的任务正常执行 **示例**: ``` 第一次运行: 付费招募 ✅ 成功 开宝箱 ❌ 失败(宝箱不足) 黑市购买 ✅ 成功 第二次运行(同一天): 付费招募 ⏭️ 跳过(已成功) 开宝箱 🔄 重新执行(上次失败) 黑市购买 ⏭️ 跳过(已成功) ``` --- ## 🔧 故障排除 ### Q: 任务状态没有保存? **可能原因**: - 浏览器隐私模式或禁用localStorage - 浏览器数据被清除 **解决方法**: - 确保浏览器允许使用localStorage - 不要在隐私模式下使用 - 避免清除浏览器数据 --- ### Q: 任务被错误跳过? **可能原因**: - 任务状态未正确重置 **解决方法**: 1. 打开子任务详情 2. 点击"重置所有"按钮 3. 重新执行批量任务 --- ### Q: 想重新执行已完成的任务? **解决方法**: - 方法1:等到第二天(自动重置) - 方法2:手动重置任务状态 1. 打开子任务详情弹窗 2. 点击"重置所有" 3. 重新执行 --- ## 📈 性能影响 ### 存储空间 **每个角色**: - 约46个子任务 - 每个任务约100-200字节 - 单个角色约10KB **100个角色总计**: - 约1MB存储空间 - localStorage限制:通常5-10MB - **结论**:存储空间充足,无需担心 --- ### 执行速度 **跳过任务的优势**: - 跳过12个子任务(付费招募1 + 点金3 + 开宝箱1 + 钓鱼3 + 黑市1 + 竞技场3) - 每个任务平均1秒 + 0.2秒间隔 - 总共节省约 12秒 + 2.4秒(间隔时间) = **14.4秒/角色** **100个角色批量执行**: - 节省时间:约1440秒(**24分钟**) - 减少网络请求:1200次 - 降低服务器压力:显著 - **性能提升**:约20-25% --- ## 🎉 总结 ### 主要优势 1. **🛡️ 资源保护** - 自动跳过已完成的12个资源消耗型任务 - 避免重复执行造成的资源浪费 - 保护每日免费次数(点金、钓鱼、竞技场) 2. **📊 状态可见** - 详细的任务执行状态 - 清晰的成功/失败信息 - 46个子任务的完整跟踪 3. **🔄 灵活控制** - 支持手动重置 - 自动每日重置 - 单独控制每个角色 4. **⚡ 性能提升** - 减少不必要的网络请求(每角色12次) - 缩短批量执行时间(每角色节省约14秒) - 100角色节省24分钟,性能提升20-25% 5. **🎯 用户友好** - 直观的UI界面 - 详细的任务详情展示 - 清晰的消耗资源标记 --- ### 适用场景 ✅ **推荐使用**: - 每天多次运行一键补差 - 需要查看任务执行详情 - 想避免资源浪费 ✅ **特别适合**: - 管理多个游戏角色 - 需要精细控制任务执行 - 对资源消耗敏感的用户 --- **版本**: v3.1.0 **更新日期**: 2025-10-07 **相关文档**: - [批量任务使用说明.md](./批量任务使用说明.md) - [一键补差完整子任务清单.md](./一键补差完整子任务清单.md) - [一键补差超时时间配置表.md](./一键补差超时时间配置表.md)