refactor: optimize cron test support feature

**优化内容:**

1. **验证和安全性加强**
   - 移除cron验证重复,统一使用accountTestSchedulerService.validateCronExpression()方法
   - 添加model参数类型和长度验证(max 256 chars)
   - 限制cronExpression长度至100字符防止DoS攻击
   - 双层验证:service层和route层都进行长度检查

2. **性能优化**
   - 优化_refreshAllTasks()使用Promise.all()并行加载所有平台配置(之前是顺序加载)
   - 改进错误处理,平台加载失败时继续处理其他平台

3. **数据管理改进**
   - 为test config添加1年TTL过期机制(之前没有过期设置)
   - 保证test history已有30天TTL和5条记录限制

4. **错误响应标准化**
   - 统一所有API响应格式,确保error状态都包含message字段
   - 改进错误消息的可读性和上下文信息

5. **用户体验改进**
   - Vue组件使用showToast()替代原生alert()
   - 移除console.error()改用toast通知用户
   - 成功保存时显示成功提示

6. **代码整理**
   - 移除未使用的maxConcurrentTests变量及其getStatus()中的引用
   - 保持代码整洁性

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
This commit is contained in:
guoyongchang
2025-12-19 13:39:39 +08:00
parent 9977245d59
commit cd3f51e9e2
4 changed files with 80 additions and 46 deletions

View File

@@ -221,6 +221,7 @@
<script setup>
import { ref, watch } from 'vue'
import { API_PREFIX } from '@/config/api'
import { showToast } from '@/utils/toast'
const props = defineProps({
show: {
@@ -326,7 +327,7 @@ async function loadConfig() {
}
}
} catch (err) {
console.error('Failed to load test config:', err)
showToast('加载配置失败: ' + err.message, 'error')
} finally {
loading.value = false
}
@@ -363,15 +364,15 @@ async function saveConfig() {
})
if (res.ok) {
showToast('配置已保存', 'success')
emit('saved')
handleClose()
} else {
const errorData = await res.json().catch(() => ({}))
alert(errorData.message || '保存失败')
showToast(errorData.message || '保存失败', 'error')
}
} catch (err) {
console.error('Failed to save test config:', err)
alert('保存失败: ' + err.message)
showToast('保存失败: ' + err.message, 'error')
} finally {
saving.value = false
}