367 lines
8.7 KiB
Markdown
367 lines
8.7 KiB
Markdown
# 功能更新:自定义并发数量 (1-6)
|
||
|
||
## 📋 更新说明
|
||
|
||
**用户需求**:希望并发数量可以自定义,支持1-6个并发。
|
||
|
||
**更新内容**:
|
||
- ✅ 并发数从固定5个改为可自定义1-6个
|
||
- ✅ 添加滑块UI控件,直观调整并发数
|
||
- ✅ 实时保存到localStorage,刷新后保持设置
|
||
- ✅ 显示当前并发数标签
|
||
|
||
---
|
||
|
||
## 🎯 功能特点
|
||
|
||
### 1. 灵活可调
|
||
```
|
||
1个并发: 逐个执行,适合网络不稳定或服务器压力大的情况
|
||
2个并发: 保守执行,降低风险
|
||
3个并发: 平衡速度和稳定性
|
||
4个并发: 较快速度
|
||
5个并发: 默认推荐,平衡最佳 ⭐
|
||
6个并发: 最快速度,适合网络好且服务器稳定的情况
|
||
```
|
||
|
||
### 2. 实时调整
|
||
- ✅ 滑块拖动即可调整
|
||
- ✅ 显示刻度标记(1-6)
|
||
- ✅ 实时保存配置
|
||
- ✅ 下次执行自动应用
|
||
|
||
### 3. 智能限制
|
||
- ✅ 执行中禁止修改(避免冲突)
|
||
- ✅ 范围限制1-6(防止设置不合理的值)
|
||
- ✅ 显示当前并发数标签
|
||
|
||
---
|
||
|
||
## 🎨 UI界面
|
||
|
||
### 批量任务面板
|
||
```
|
||
╔═════════════════════════════════════════════╗
|
||
║ 批量自动化任务 并发数: 5 ║
|
||
╠═════════════════════════════════════════════╣
|
||
║ 选择任务模板: 并发数量: ║
|
||
║ [完整套餐 ▼] 1 - ●----- 6 ║
|
||
║ ↑ 滑块控件 ║
|
||
╚═════════════════════════════════════════════╝
|
||
```
|
||
|
||
### 并发数显示
|
||
- 右上角标签:`并发数: 5` (绿色徽章)
|
||
- 滑块下方实时显示当前值
|
||
- 拖动滑块立即更新
|
||
|
||
---
|
||
|
||
## 🔧 修改的文件
|
||
|
||
### 1. 核心Store
|
||
**文件**: `src/stores/batchTaskStore.js`
|
||
|
||
**修改内容**:
|
||
```javascript
|
||
// 从固定值改为从localStorage读取
|
||
const maxConcurrency = ref(
|
||
parseInt(localStorage.getItem('maxConcurrency') || '5')
|
||
)
|
||
|
||
// 新增设置方法
|
||
const setMaxConcurrency = (count) => {
|
||
if (count < 1 || count > 6) {
|
||
console.warn('⚠️ 并发数必须在1-6之间')
|
||
return
|
||
}
|
||
maxConcurrency.value = count
|
||
localStorage.setItem('maxConcurrency', count.toString())
|
||
console.log(`⚙️ 并发数已设置为: ${count}`)
|
||
}
|
||
```
|
||
|
||
### 2. UI组件
|
||
**文件**: `src/components/BatchTaskPanel.vue`
|
||
|
||
**新增UI**:
|
||
- 并发数标签显示
|
||
- 滑块控件(NSlider)
|
||
- 刻度标记(1-6)
|
||
- 修改提示消息
|
||
|
||
---
|
||
|
||
## 🚀 使用方法
|
||
|
||
### 方法1:通过滑块调整
|
||
1. 打开Token管理页面 (`/tokens`)
|
||
2. 在批量任务面板找到"并发数量"滑块
|
||
3. 拖动滑块到想要的数值(1-6)
|
||
4. 自动保存,立即生效
|
||
|
||
### 方法2:通过代码设置
|
||
```javascript
|
||
// 在浏览器控制台
|
||
import { useBatchTaskStore } from '@/stores/batchTaskStore'
|
||
const batchStore = useBatchTaskStore()
|
||
|
||
// 设置并发数为3
|
||
batchStore.setMaxConcurrency(3)
|
||
|
||
// 查看当前并发数
|
||
console.log(batchStore.maxConcurrency) // 输出: 3
|
||
```
|
||
|
||
---
|
||
|
||
## 📊 不同并发数的对比
|
||
|
||
### 性能对比(10个Token,每个4个任务)
|
||
|
||
| 并发数 | 预计耗时 | 服务器压力 | 推荐场景 |
|
||
|--------|---------|-----------|---------|
|
||
| 1 | ~40秒 | 最低 ⭐ | 网络不稳定、服务器敏感 |
|
||
| 2 | ~20秒 | 低 | 保守执行 |
|
||
| 3 | ~14秒 | 中低 | 一般稳定网络 |
|
||
| 4 | ~10秒 | 中 | 较好网络环境 |
|
||
| 5 | ~8秒 | 中高 ⭐ | 默认推荐 |
|
||
| 6 | ~7秒 | 高 | 网络极佳、服务器稳定 |
|
||
|
||
**计算公式**:
|
||
```
|
||
理论耗时 = (Token数 ÷ 并发数) × 单Token耗时
|
||
实际耗时 = 理论耗时 + 网络延迟 + 任务间隔
|
||
```
|
||
|
||
---
|
||
|
||
## 💡 使用建议
|
||
|
||
### 推荐配置
|
||
|
||
#### 场景1:网络不稳定
|
||
```
|
||
并发数: 1-2
|
||
原因: 减少网络拥堵,提高成功率
|
||
适用: 移动网络、公共WiFi
|
||
```
|
||
|
||
#### 场景2:服务器高峰期
|
||
```
|
||
并发数: 2-3
|
||
原因: 降低服务器压力,避免被限流
|
||
适用: 游戏更新后、活动期间
|
||
```
|
||
|
||
#### 场景3:日常使用
|
||
```
|
||
并发数: 5 ⭐ (默认)
|
||
原因: 平衡速度和稳定性
|
||
适用: 大部分情况
|
||
```
|
||
|
||
#### 场景4:深夜/凌晨
|
||
```
|
||
并发数: 6
|
||
原因: 服务器压力小,可以最快速度执行
|
||
适用: 凌晨定时任务
|
||
```
|
||
|
||
### 动态调整策略
|
||
```javascript
|
||
// 根据时间动态调整
|
||
早高峰 (7-9点): 并发数 2-3
|
||
工作日白天: 并发数 3-4
|
||
晚高峰 (18-21点): 并发数 2-3
|
||
深夜 (23-6点): 并发数 5-6
|
||
周末全天: 并发数 4-5
|
||
```
|
||
|
||
---
|
||
|
||
## 🔍 执行日志示例
|
||
|
||
### 并发数为1
|
||
```
|
||
🚀 开始批量执行任务
|
||
📋 Token数量: 5
|
||
📋 任务列表: 4个任务
|
||
⚙️ 并发数: 1
|
||
|
||
🎯 开始执行 Token: 主号战士
|
||
✅ Token完成: 主号战士
|
||
🔌 断开WebSocket连接: 主号战士
|
||
|
||
🎯 开始执行 Token: 小号法师
|
||
✅ Token完成: 小号法师
|
||
🔌 断开WebSocket连接: 小号法师
|
||
|
||
...(逐个执行)
|
||
```
|
||
|
||
### 并发数为5
|
||
```
|
||
🚀 开始批量执行任务
|
||
📋 Token数量: 5
|
||
📋 任务列表: 4个任务
|
||
⚙️ 并发数: 5
|
||
|
||
🎯 开始执行 Token: 主号战士
|
||
🎯 开始执行 Token: 小号法师
|
||
🎯 开始执行 Token: 练级号
|
||
🎯 开始执行 Token: 打金号
|
||
🎯 开始执行 Token: 测试号
|
||
|
||
✅ Token完成: 主号战士
|
||
✅ Token完成: 小号法师
|
||
✅ Token完成: 练级号
|
||
✅ Token完成: 打金号
|
||
✅ Token完成: 测试号
|
||
|
||
...(5个同时执行)
|
||
```
|
||
|
||
---
|
||
|
||
## ⚙️ 技术细节
|
||
|
||
### localStorage存储
|
||
```javascript
|
||
// 存储键
|
||
localStorage.setItem('maxConcurrency', '5')
|
||
|
||
// 读取(默认5)
|
||
parseInt(localStorage.getItem('maxConcurrency') || '5')
|
||
```
|
||
|
||
### 响应式更新
|
||
```javascript
|
||
// maxConcurrency是响应式ref
|
||
const maxConcurrency = ref(5)
|
||
|
||
// UI滑块绑定
|
||
v-model:value="batchStore.maxConcurrency"
|
||
|
||
// 实时更新
|
||
@update:value="handleConcurrencyChange"
|
||
```
|
||
|
||
### 并发控制逻辑
|
||
```javascript
|
||
// 填充执行队列(最多maxConcurrency个)
|
||
while (executing.length < maxConcurrency.value && queue.length > 0) {
|
||
const tokenId = queue.shift()
|
||
const promise = executeTokenTasks(tokenId, tasks)
|
||
executing.push(promise)
|
||
}
|
||
|
||
// 等待至少一个完成
|
||
if (executing.length > 0) {
|
||
await Promise.race(executing)
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
## 🎯 实际应用示例
|
||
|
||
### 示例1:快速测试(1个并发)
|
||
```
|
||
场景: 测试新功能是否正常
|
||
设置: 并发数 = 1
|
||
时长: 较慢,但便于观察每个Token的执行情况
|
||
```
|
||
|
||
### 示例2:日常任务(5个并发)
|
||
```
|
||
场景: 每天早晨执行日常任务
|
||
设置: 并发数 = 5(默认)
|
||
时长: 10个Token约16秒
|
||
```
|
||
|
||
### 示例3:深夜定时(6个并发)
|
||
```
|
||
场景: 凌晨3点定时执行完整套餐
|
||
设置: 并发数 = 6(最快)
|
||
时长: 10个Token约14秒
|
||
```
|
||
|
||
### 示例4:网络差(2个并发)
|
||
```
|
||
场景: 移动网络4G环境
|
||
设置: 并发数 = 2
|
||
时长: 较慢,但成功率更高
|
||
```
|
||
|
||
---
|
||
|
||
## ⚠️ 注意事项
|
||
|
||
### 1. 执行中不可修改
|
||
- 批量任务执行中,滑块会被禁用
|
||
- 需要等待当前批次完成后才能修改
|
||
- 避免执行过程中改变并发策略导致混乱
|
||
|
||
### 2. 合理设置
|
||
- 并发数越大,服务器压力越大
|
||
- 可能触发服务器的限流机制
|
||
- 建议根据实际情况调整
|
||
|
||
### 3. 网络环境
|
||
- 网络不稳定时建议降低并发数
|
||
- 延迟高的网络适合1-3并发
|
||
- 本地网络可以使用5-6并发
|
||
|
||
### 4. Token数量
|
||
- Token数量少于并发数时,实际并发 = Token数
|
||
- 例如:3个Token,并发设为5,实际只有3个同时执行
|
||
|
||
---
|
||
|
||
## 📈 性能监控
|
||
|
||
### 查看实际并发情况
|
||
```javascript
|
||
// 浏览器控制台
|
||
import { useBatchTaskStore } from '@/stores/batchTaskStore'
|
||
const batchStore = useBatchTaskStore()
|
||
|
||
// 查看当前并发数设置
|
||
console.log('设置并发数:', batchStore.maxConcurrency)
|
||
|
||
// 查看实际执行中的Token数
|
||
console.log('执行中Token:', batchStore.executingTokens.size)
|
||
|
||
// 查看执行统计
|
||
console.log('执行统计:', batchStore.executionStats)
|
||
```
|
||
|
||
---
|
||
|
||
## 🎉 总结
|
||
|
||
本次更新让并发数量变得**灵活可控**:
|
||
|
||
### 核心特性
|
||
- ✅ **自定义范围**: 1-6个并发任意选择
|
||
- ✅ **滑块UI**: 直观易用的调整界面
|
||
- ✅ **持久化**: 自动保存,下次打开仍然生效
|
||
- ✅ **智能限制**: 执行中禁止修改,防止冲突
|
||
|
||
### 实用价值
|
||
- ✅ **灵活调整**: 根据网络和服务器情况动态调整
|
||
- ✅ **优化速度**: 网络好时提高并发,加快执行
|
||
- ✅ **提高稳定性**: 网络差时降低并发,提升成功率
|
||
- ✅ **个性化**: 每个用户可以根据自己的需求设置
|
||
|
||
**现在你可以完全掌控批量任务的执行速度了!** 🚀
|
||
|
||
---
|
||
|
||
## 📚 相关文档
|
||
- `批量任务使用说明.md` - 完整使用教程
|
||
- `批量任务功能实现总结.md` - 技术实现详解
|
||
- `优化-自动断开连接.md` - 连接管理优化
|
||
|