(task: SummaryTask)
| 788 | } catch (e: any) { |
| 789 | return { success: false, message: `总结失败: ${e?.message || e}` }; |
| 790 | } |
| 791 | } |
| 792 | |
| 793 | // 调度任务 |
| 794 | async function scheduleTask(task: SummaryTask) { |
| 795 | const key = makeCronKey(task.id); |
| 796 | if (task.disabled || cronManager.has(key)) return; |
| 797 | |
| 798 | console.log(`[sum] 注册任务 ${task.id}: ${task.cron}`); |
| 799 | |
| 800 | cronManager.set(key, task.cron, async () => { |
| 801 | console.log(`[sum] 开始执行任务 ${task.id}`); |
| 802 | |
| 803 | const db = await getDB(); |
| 804 | const idx = db.data.tasks.findIndex((t: SummaryTask) => t.id === task.id); |
| 805 | const now = Date.now(); |
| 806 | |
| 807 | try { |
| 808 | const result = await executeSummary(task); |
| 809 | |
| 810 | if (idx >= 0) { |
| 811 | db.data.tasks[idx].lastRunAt = String(now); |
| 812 | if (result.success) { |
| 813 | db.data.tasks[idx].lastResult = result.message; |
| 814 | db.data.tasks[idx].lastError = undefined; |
| 815 | } else { |
| 816 | db.data.tasks[idx].lastError = result.message; |
| 817 | } |
| 818 | await db.write(); |
| 819 | } |
| 820 | console.log(`[sum] 任务 ${task.id} 执行完成: ${result.success ? '成功' : '失败'}`); |
| 821 | } catch (e: any) { |
| 822 | console.error(`[sum] 任务 ${task.id} 执行失败:`, e); |
| 823 | if (idx >= 0) { |
| 824 | db.data.tasks[idx].lastRunAt = String(now); |
| 825 | db.data.tasks[idx].lastError = String(e?.message || e); |
| 826 | await db.write(); |
| 827 | } |
| 828 | } |
| 829 | }); |
no test coverage detected