namespace QuantEngine.Web.Services; using System; public sealed record SchedulerJobDefinition( string JobId, string Cron, string Description, bool IsRecurring); public sealed record SchedulerServiceOptions { public List JobDefinitions { get; init; } = new() { new SchedulerJobDefinition("daily-collection", "0 9 * * *", "Daily data collection", true), new SchedulerJobDefinition("hourly-price-update", "0 9,11,13,15 * * 1-5", "Hourly price update", true), new SchedulerJobDefinition("weekly-report", "0 17 * * 5", "Weekly report generation", true), new SchedulerJobDefinition("monthly-optimization", "0 2 1 * *", "Monthly optimization", true), }; } public sealed record SchedulerJobExecutionAudit( string JobId, string RunId, string State, string? Reason, DateTimeOffset StartedAt, DateTimeOffset? FinishedAt, string? ResourceKey); public static class SchedulerStates { public const string Pending = "PENDING"; public const string Running = "RUNNING"; public const string Succeeded = "SUCCEEDED"; public const string Failed = "FAILED"; public const string Retrying = "RETRYING"; public const string Blocked = "BLOCKED"; }