Some checks failed
Docker Build & Deploy / Build Docker Image (push) Failing after 6s
Docker Build & Deploy / Deploy to Production (push) Has been skipped
Docker Build & Deploy / Cleanup Dangling Images (push) Successful in 2s
Docker Build & Deploy / WeChat Notification (push) Successful in 2s
- Added BudgetArchiveJob for monthly budget archiving. - Created BudgetArchive entity and BudgetArchiveRepository for managing archived budgets. - Introduced JobController for handling job execution, pausing, and resuming. - Developed ScheduledTasksView for displaying and managing scheduled tasks in the frontend. - Updated PeriodicBillJob to improve scope handling. - Enhanced OpenAiService with increased HTTP timeout. - Added archiveBudgets API endpoint for archiving budgets by year and month. - Refactored BudgetController to utilize new repository patterns and improved error handling. - Introduced rich-content styles for better rendering of HTML content in Vue components. - Updated various Vue components to support rich HTML content display.
55 lines
2.2 KiB
C#
55 lines
2.2 KiB
C#
using Quartz;
|
|
|
|
namespace WebApi;
|
|
|
|
public static class Expand
|
|
{
|
|
public static void AddScheduler(this WebApplicationBuilder builder)
|
|
{
|
|
builder.Services.AddQuartz(q =>
|
|
{
|
|
// 配置调度器
|
|
q.SchedulerId = "EmailBillScheduler";
|
|
|
|
// 配置邮件同步任务 - 每10分钟执行一次
|
|
var emailJobKey = new JobKey("EmailSyncJob");
|
|
q.AddJob<Service.Jobs.EmailSyncJob>(opts => opts
|
|
.WithIdentity(emailJobKey)
|
|
.WithDescription("邮件同步任务"));
|
|
q.AddTrigger(opts => opts
|
|
.ForJob(emailJobKey)
|
|
.WithIdentity("EmailSyncTrigger")
|
|
.WithCronSchedule("0 0/30 * * * ?") // 每30分钟执行
|
|
.WithDescription("每30分钟同步一次邮件"));
|
|
|
|
// 配置周期性账单任务 - 每天早上6点执行
|
|
var periodicBillJobKey = new JobKey("PeriodicBillJob");
|
|
q.AddJob<Service.Jobs.PeriodicBillJob>(opts => opts
|
|
.WithIdentity(periodicBillJobKey)
|
|
.WithDescription("周期性账单任务"));
|
|
q.AddTrigger(opts => opts
|
|
.ForJob(periodicBillJobKey)
|
|
.WithIdentity("PeriodicBillTrigger")
|
|
.WithCronSchedule("0 0 6 * * ?") // 每天早上6点执行
|
|
.WithDescription("每天早上6点执行周期性账单任务"));
|
|
|
|
// 配置预算归档任务 - 每个月1号晚11点执行
|
|
var budgetArchiveJobKey = new JobKey("BudgetArchiveJob");
|
|
q.AddJob<Service.Jobs.BudgetArchiveJob>(opts => opts
|
|
.WithIdentity(budgetArchiveJobKey)
|
|
.WithDescription("预算归档任务"));
|
|
q.AddTrigger(opts => opts
|
|
.ForJob(budgetArchiveJobKey)
|
|
.WithIdentity("BudgetArchiveTrigger")
|
|
.WithCronSchedule("0 0 23 1 * ?") // 每个月1号晚11点执行
|
|
.WithDescription("每个月1号晚11点执行预算归档"));
|
|
});
|
|
|
|
// 添加 Quartz Hosted Service
|
|
builder.Services.AddQuartzHostedService(options =>
|
|
{
|
|
// 等待任务完成后再关闭
|
|
options.WaitForJobsToComplete = true;
|
|
});
|
|
}
|
|
} |