Files
xyzw_web_helper/MD说明文件夹/功能优化-定时间隔改为分钟v3.7.2.md
2025-10-17 20:56:50 +08:00

9.1 KiB
Raw Blame History

功能优化 - 定时间隔改为分钟 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 函数,智能转换显示格式:

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

// 优化前
const intervalMs = config.interval * 60 * 60 * 1000 // 小时 → 毫秒
console.log(`⏰ 间隔调度启动: 每${config.interval}小时执行一次`)

// 优化后
const intervalMs = config.interval * 60 * 1000 // 分钟 → 毫秒
console.log(`⏰ 间隔调度启动: 每${config.interval}分钟执行一次`)

默认配置调整

// 优化前
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

<!-- 第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

// 第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

// 第37-40行
startIntervalSchedule(config, callback) {
  const intervalMs = config.interval * 60 * 1000  // 分钟转毫秒
  console.log(`⏰ 间隔调度启动: 每${config.interval}分钟执行一次`)
  // ...
}

4. batchTaskStore.js

// 第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. 向下兼容:保留原有功能,不破坏现有配置

现在用户可以更精准地控制定时任务的执行频率,满足各种不同的使用场景!🎯