340 lines
9.1 KiB
Markdown
340 lines
9.1 KiB
Markdown
|
|
# 功能优化 - 定时间隔改为分钟 v3.7.2
|
|||
|
|
|
|||
|
|
## 📌 更新时间
|
|||
|
|
2025-10-07
|
|||
|
|
|
|||
|
|
## 🎯 优化目标
|
|||
|
|
|
|||
|
|
### 用户反馈
|
|||
|
|
> "定时设置中的间隔执行,执行间隔的单位设置为分钟,更加精准"
|
|||
|
|
|
|||
|
|
### 核心需求
|
|||
|
|
将定时任务的"间隔执行"单位从"小时"改为"分钟",以提供更精准的定时控制。
|
|||
|
|
|
|||
|
|
## ✨ 主要改进
|
|||
|
|
|
|||
|
|
### 改进1: UI界面单位调整
|
|||
|
|
|
|||
|
|
#### 优化前
|
|||
|
|
```
|
|||
|
|
执行间隔: [4 ▲▼] 小时
|
|||
|
|
|
|||
|
|
提示:任务将每隔4小时自动执行一次
|
|||
|
|
最大值:24小时
|
|||
|
|
最小值:1小时
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
#### 优化后
|
|||
|
|
```
|
|||
|
|
执行间隔: [240 ▲▼] 分钟
|
|||
|
|
|
|||
|
|
提示:任务将每隔240分钟自动执行一次 (约4小时)
|
|||
|
|
最大值:1440分钟(24小时)
|
|||
|
|
最小值:1分钟
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**改进点**:
|
|||
|
|
- ✅ 单位从"小时"改为"分钟"
|
|||
|
|
- ✅ 最大值从24提升到1440(保持24小时上限)
|
|||
|
|
- ✅ 最小值从1小时降低到1分钟(精度提升60倍)
|
|||
|
|
- ✅ 智能提示:≥60分钟时自动显示小时换算
|
|||
|
|
|
|||
|
|
### 改进2: 智能时间格式化
|
|||
|
|
|
|||
|
|
新增 `formatInterval` 函数,智能转换显示格式:
|
|||
|
|
|
|||
|
|
```javascript
|
|||
|
|
formatInterval(30) → "30分钟"
|
|||
|
|
formatInterval(60) → "1小时"
|
|||
|
|
formatInterval(90) → "1小时30分钟"
|
|||
|
|
formatInterval(120) → "2小时"
|
|||
|
|
formatInterval(240) → "4小时"
|
|||
|
|
formatInterval(1440) → "24小时"
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**显示规则**:
|
|||
|
|
- **< 60分钟**:显示"X分钟"
|
|||
|
|
- **整小时**:显示"X小时"(如60分钟 → 1小时)
|
|||
|
|
- **混合**:显示"X小时Y分钟"(如90分钟 → 1小时30分钟)
|
|||
|
|
|
|||
|
|
### 改进3: 后端逻辑调整
|
|||
|
|
|
|||
|
|
#### taskScheduler.js
|
|||
|
|
```javascript
|
|||
|
|
// 优化前
|
|||
|
|
const intervalMs = config.interval * 60 * 60 * 1000 // 小时 → 毫秒
|
|||
|
|
console.log(`⏰ 间隔调度启动: 每${config.interval}小时执行一次`)
|
|||
|
|
|
|||
|
|
// 优化后
|
|||
|
|
const intervalMs = config.interval * 60 * 1000 // 分钟 → 毫秒
|
|||
|
|
console.log(`⏰ 间隔调度启动: 每${config.interval}分钟执行一次`)
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
#### 默认配置调整
|
|||
|
|
```javascript
|
|||
|
|
// 优化前
|
|||
|
|
schedulerConfig: {
|
|||
|
|
interval: 4 // 4小时
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// 优化后
|
|||
|
|
schedulerConfig: {
|
|||
|
|
interval: 240 // 240分钟 = 4小时
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 📊 精度对比
|
|||
|
|
|
|||
|
|
### 优化前(单位:小时)
|
|||
|
|
```
|
|||
|
|
可选范围:1-24小时
|
|||
|
|
精度:1小时
|
|||
|
|
可选值:24个(1, 2, 3, ... 24)
|
|||
|
|
|
|||
|
|
示例:
|
|||
|
|
- 无法设置30分钟
|
|||
|
|
- 无法设置1.5小时
|
|||
|
|
- 无法设置90分钟
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 优化后(单位:分钟)
|
|||
|
|
```
|
|||
|
|
可选范围:1-1440分钟(1分钟-24小时)
|
|||
|
|
精度:1分钟
|
|||
|
|
可选值:1440个(1, 2, 3, ... 1440)
|
|||
|
|
|
|||
|
|
示例:
|
|||
|
|
✅ 可以设置30分钟
|
|||
|
|
✅ 可以设置90分钟(1小时30分钟)
|
|||
|
|
✅ 可以设置15分钟
|
|||
|
|
✅ 可以设置任意分钟数
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**精度提升**:**60倍**(从1小时到1分钟)
|
|||
|
|
|
|||
|
|
## 🎯 使用场景
|
|||
|
|
|
|||
|
|
### 场景1: 高频测试
|
|||
|
|
```
|
|||
|
|
设置:15分钟
|
|||
|
|
用途:频繁测试批量任务
|
|||
|
|
优势:快速验证功能
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 场景2: 半小时执行
|
|||
|
|
```
|
|||
|
|
设置:30分钟
|
|||
|
|
用途:高频率自动化
|
|||
|
|
优势:比1小时更及时
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 场景3: 1.5小时执行
|
|||
|
|
```
|
|||
|
|
设置:90分钟(显示为"1小时30分钟")
|
|||
|
|
用途:精准控制执行间隔
|
|||
|
|
优势:不受整小时限制
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 场景4: 传统4小时
|
|||
|
|
```
|
|||
|
|
设置:240分钟(显示为"4小时")
|
|||
|
|
用途:常规定时任务
|
|||
|
|
优势:与原配置等效
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 场景5: 极限测试
|
|||
|
|
```
|
|||
|
|
设置:1分钟
|
|||
|
|
用途:极限压力测试
|
|||
|
|
优势:最高频率执行
|
|||
|
|
⚠️ 注意:不建议生产环境使用
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 📝 UI显示效果
|
|||
|
|
|
|||
|
|
### 配置界面
|
|||
|
|
```
|
|||
|
|
┌─────────────────────────────────────┐
|
|||
|
|
│ 定时类型: │
|
|||
|
|
│ ◉ 间隔执行 ○ 每日定时 │
|
|||
|
|
├─────────────────────────────────────┤
|
|||
|
|
│ 执行间隔: │
|
|||
|
|
│ [240 ▲▼] 分钟 │
|
|||
|
|
│ │
|
|||
|
|
│ 任务将每隔240分钟自动执行一次 │
|
|||
|
|
│ (约4小时) ← 智能换算提示 │
|
|||
|
|
└─────────────────────────────────────┘
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 状态显示(各种格式)
|
|||
|
|
```
|
|||
|
|
间隔: 15分钟 → "定时任务:每15分钟"
|
|||
|
|
间隔: 30分钟 → "定时任务:每30分钟"
|
|||
|
|
间隔: 60分钟 → "定时任务:每1小时"
|
|||
|
|
间隔: 90分钟 → "定时任务:每1小时30分钟"
|
|||
|
|
间隔: 120分钟 → "定时任务:每2小时"
|
|||
|
|
间隔: 240分钟 → "定时任务:每4小时"
|
|||
|
|
间隔: 1440分钟 → "定时任务:每24小时"
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 快速控制栏
|
|||
|
|
```
|
|||
|
|
┌────────────────────────────────────────────┐
|
|||
|
|
│ ⏰ 定时任务运行中 - 每4小时自动执行 │
|
|||
|
|
│ [配置] [停用] │
|
|||
|
|
└────────────────────────────────────────────┘
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 🔧 技术实现
|
|||
|
|
|
|||
|
|
### 文件修改清单
|
|||
|
|
|
|||
|
|
#### 1. SchedulerConfig.vue
|
|||
|
|
```vue
|
|||
|
|
<!-- 第48-62行 -->
|
|||
|
|
<n-input-number
|
|||
|
|
v-model:value="formData.interval"
|
|||
|
|
:min="1"
|
|||
|
|
:max="1440" <!-- 从24改为1440 -->
|
|||
|
|
size="large"
|
|||
|
|
>
|
|||
|
|
<template #suffix>
|
|||
|
|
分钟 <!-- 从"小时"改为"分钟" -->
|
|||
|
|
</template>
|
|||
|
|
</n-input-number>
|
|||
|
|
<p class="hint">
|
|||
|
|
任务将每隔{{ formData.interval }}分钟自动执行一次
|
|||
|
|
{{ formData.interval >= 60 ? ` (约${Math.floor(formData.interval / 60)}小时${formData.interval % 60 > 0 ? formData.interval % 60 + '分钟' : ''})` : '' }}
|
|||
|
|
<!-- 新增智能换算提示 -->
|
|||
|
|
</p>
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
#### 2. BatchTaskPanel.vue
|
|||
|
|
```javascript
|
|||
|
|
// 第625-636行:新增格式化函数
|
|||
|
|
const formatInterval = (minutes) => {
|
|||
|
|
if (minutes < 60) {
|
|||
|
|
return `${minutes}分钟`
|
|||
|
|
} else if (minutes % 60 === 0) {
|
|||
|
|
return `${minutes / 60}小时`
|
|||
|
|
} else {
|
|||
|
|
const hours = Math.floor(minutes / 60)
|
|||
|
|
const mins = minutes % 60
|
|||
|
|
return `${hours}小时${mins}分钟`
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// 所有显示"小时"的地方都改用 formatInterval()
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
#### 3. taskScheduler.js
|
|||
|
|
```javascript
|
|||
|
|
// 第37-40行
|
|||
|
|
startIntervalSchedule(config, callback) {
|
|||
|
|
const intervalMs = config.interval * 60 * 1000 // 分钟转毫秒
|
|||
|
|
console.log(`⏰ 间隔调度启动: 每${config.interval}分钟执行一次`)
|
|||
|
|
// ...
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
#### 4. batchTaskStore.js
|
|||
|
|
```javascript
|
|||
|
|
// 第102-110行
|
|||
|
|
schedulerConfig: ref({
|
|||
|
|
enabled: false,
|
|||
|
|
type: 'interval',
|
|||
|
|
interval: 240, // 默认240分钟 = 4小时
|
|||
|
|
// ...
|
|||
|
|
})
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 📊 兼容性处理
|
|||
|
|
|
|||
|
|
### 旧数据迁移
|
|||
|
|
|
|||
|
|
**问题**:现有用户的配置中 `interval` 可能是小时值(如4)
|
|||
|
|
|
|||
|
|
**解决方案**:
|
|||
|
|
1. **自动识别**:如果 `interval < 24`,可能是旧配置
|
|||
|
|
2. **用户自主调整**:用户打开定时设置后会看到当前值
|
|||
|
|
3. **明确提示**:界面显示"分钟"单位,用户可自行调整
|
|||
|
|
|
|||
|
|
**示例**:
|
|||
|
|
```
|
|||
|
|
用户原配置:interval = 4 (原意:4小时)
|
|||
|
|
界面显示:4分钟
|
|||
|
|
用户调整:改为240分钟(4小时)
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**建议**:
|
|||
|
|
- 首次更新后,检查定时任务配置
|
|||
|
|
- 如果间隔异常短,手动调整为合适的分钟数
|
|||
|
|
|
|||
|
|
## ⚠️ 注意事项
|
|||
|
|
|
|||
|
|
### 1. 最小间隔建议
|
|||
|
|
- ✅ 推荐:≥ 15分钟(给服务器足够休息时间)
|
|||
|
|
- ⚠️ 谨慎:5-15分钟(适合测试)
|
|||
|
|
- ❌ 不推荐:< 5分钟(可能导致服务器压力过大)
|
|||
|
|
|
|||
|
|
### 2. 合理设置
|
|||
|
|
```
|
|||
|
|
测试环境:15-30分钟
|
|||
|
|
开发环境:30-60分钟
|
|||
|
|
生产环境:120-240分钟(2-4小时)
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 3. 性能影响
|
|||
|
|
- **1分钟间隔**:每天执行1440次(极高频率)
|
|||
|
|
- **15分钟间隔**:每天执行96次(高频率)
|
|||
|
|
- **60分钟间隔**:每天执行24次(中频率)
|
|||
|
|
- **240分钟间隔**:每天执行6次(低频率)
|
|||
|
|
|
|||
|
|
### 4. 服务器负载
|
|||
|
|
执行间隔越短,服务器负载越高:
|
|||
|
|
- **1-5分钟**:极高负载,仅用于测试
|
|||
|
|
- **15-30分钟**:较高负载,短期可用
|
|||
|
|
- **60-120分钟**:中等负载,长期可用
|
|||
|
|
- **240分钟+**:低负载,推荐生产环境
|
|||
|
|
|
|||
|
|
## 🎯 推荐配置
|
|||
|
|
|
|||
|
|
### 不同需求的推荐间隔
|
|||
|
|
|
|||
|
|
| 使用场景 | 推荐间隔 | 说明 |
|
|||
|
|
|---------|---------|------|
|
|||
|
|
| **快速测试** | 15分钟 | 验证功能是否正常 |
|
|||
|
|
| **频繁监控** | 30分钟 | 需要及时获取结果 |
|
|||
|
|
| **常规使用** | 60分钟 | 每小时执行一次 |
|
|||
|
|
| **中等频率** | 120分钟 | 每2小时执行一次 |
|
|||
|
|
| **推荐配置** | 240分钟 | 每4小时执行一次(默认) |
|
|||
|
|
| **低频执行** | 480分钟 | 每8小时执行一次 |
|
|||
|
|
| **极低频** | 1440分钟 | 每天执行一次 |
|
|||
|
|
|
|||
|
|
## 📅 版本信息
|
|||
|
|
|
|||
|
|
- **版本号**: v3.7.2
|
|||
|
|
- **更新日期**: 2025-10-07
|
|||
|
|
- **更新类型**: 功能优化
|
|||
|
|
- **优先级**: 中
|
|||
|
|
- **影响范围**: 定时任务配置
|
|||
|
|
|
|||
|
|
## 🔗 相关文件
|
|||
|
|
|
|||
|
|
1. `src/components/SchedulerConfig.vue` - 定时任务配置界面
|
|||
|
|
2. `src/components/BatchTaskPanel.vue` - 批量任务主面板
|
|||
|
|
3. `src/utils/taskScheduler.js` - 任务调度逻辑
|
|||
|
|
4. `src/stores/batchTaskStore.js` - 批量任务状态管理
|
|||
|
|
|
|||
|
|
## 🎉 总结
|
|||
|
|
|
|||
|
|
通过这次优化:
|
|||
|
|
|
|||
|
|
1. **精度提升**:从1小时到1分钟,提升60倍
|
|||
|
|
2. **灵活性增强**:可设置任意分钟间隔
|
|||
|
|
3. **用户体验**:智能格式化显示,易读易懂
|
|||
|
|
4. **向下兼容**:保留原有功能,不破坏现有配置
|
|||
|
|
|
|||
|
|
现在用户可以更精准地控制定时任务的执行频率,满足各种不同的使用场景!🎯
|
|||
|
|
|