Files
xyzw_web_helper/MD说明文件夹/功能更新-任务状态跟踪.md
2025-10-17 20:56:50 +08:00

15 KiB
Raw Blame History

功能更新 - 任务状态跟踪 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
  • 管理所有角色的任务状态
  • 提供状态查询、更新、重置等方法

关键方法

// 检查任务是否已完成
isTaskCompleted(tokenId, taskId)

// 标记任务为已完成
markTaskCompleted(tokenId, taskId, success, error)

// 获取需要跳过的任务列表
getTasksToSkip(tokenId)

// 获取任务详情列表用于UI展示
getDetailedTaskList(tokenId)

// 重置任务状态
resetTokenTasks(tokenId)

2. 修改文件

src/stores/batchTaskStore.js

  • 新增 executeSubTask 辅助函数
  • 修改一键补差的执行逻辑
  • 添加任务状态检查和跳过逻辑

关键变更

// 执行子任务并跟踪状态
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存储格式

{
  "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 │
└─────────────────────────────────────┘
  1. 任务列表区(可滚动)
✅ 付费招募          [消耗资源] [已完成]
   完成时间: 2025-10-07 08:30:25

✅ 开启木质宝箱×10    [消耗资源] [已完成]
   完成时间: 2025-10-07 08:30:28

⏳ 免费招募          [未执行]

⏳ 免费点金 1/3       [未执行]

... (更多任务)
  1. 提示信息区(底部)
💡 提示
• 标记为"消耗资源"的任务(付费招募、免费点金、开宝箱、免费钓鱼、黑市购买、竞技场战斗)
  完成后,下次运行时会自动跳过
• 任务状态每天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
相关文档: