566 lines
15 KiB
Markdown
566 lines
15 KiB
Markdown
# 功能更新 - 任务状态跟踪 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)
|
||
|