Round 4 fixes: scheduler DB save check, empty validation_targets, proxy list page fallback, scheduler frontend state sync, tests

This commit is contained in:
祀梦
2026-04-05 10:31:20 +08:00
parent dc5f050683
commit d5fdfd65d9
8 changed files with 71 additions and 11 deletions

View File

@@ -16,31 +16,41 @@ export function useScheduler() {
}
}
async function startScheduler(onSuccess) {
async function startScheduler(onSuccess, onError) {
schedulerLoading.value = true
try {
const response = await schedulerService.start()
if (response.code === 200) {
schedulerRunning.value = true
onSuccess?.('自动验证已启动')
schedulerRunning.value = response.data.running
if (response.data.running) {
onSuccess?.('自动验证已启动')
} else {
onError?.('启动调度器失败')
}
}
} catch (error) {
console.error('启动调度器失败:', error)
onError?.('启动调度器失败')
} finally {
schedulerLoading.value = false
}
}
async function stopScheduler(onSuccess) {
async function stopScheduler(onSuccess, onError) {
schedulerLoading.value = true
try {
const response = await schedulerService.stop()
if (response.code === 200) {
schedulerRunning.value = false
onSuccess?.('自动验证已停止')
schedulerRunning.value = response.data.running
if (!response.data.running) {
onSuccess?.('自动验证已停止')
} else {
onError?.('停止调度器失败')
}
}
} catch (error) {
console.error('停止调度器失败:', error)
onError?.('停止调度器失败')
} finally {
schedulerLoading.value = false
}

View File

@@ -202,6 +202,10 @@ async function fetchProxies() {
if (!success) {
ElMessage.error('获取代理列表失败')
} else if (proxyStore.proxies.length === 0 && currentPage.value > 1) {
// 当前页无数据时自动回退一页
currentPage.value -= 1
return fetchProxies()
}
} catch (error) {
if (error.name === 'AbortError') {

View File

@@ -290,11 +290,17 @@ async function fetchSettings() {
// ==================== 调度器控制 ====================
async function handleStartScheduler() {
await startScheduler((msg) => ElMessage.success(msg))
await startScheduler(
(msg) => ElMessage.success(msg),
(msg) => ElMessage.error(msg)
)
}
async function handleStopScheduler() {
await stopScheduler((msg) => ElMessage.success(msg))
await stopScheduler(
(msg) => ElMessage.success(msg),
(msg) => ElMessage.error(msg)
)
}
async function handleValidateNow() {