namespace EntitlementBLL.Handlers; /// /// Track A cutover (tracker §45) — the business logic that used to live inside three /// standalone Quartz IJob classes (KillSwitchMonitorJob, FeatureFlagSchedulerJob, /// PayOrderReconciliationJob), each with its own AddQuartz/AddTrigger registration in /// EntitlementSL/Program.cs. Moved here, unchanged, so a plain HTTP endpoint (dispatched by /// GB5Framework's MJOBDEFINE/TSCHEDULER "Track A" scheduler instead of a per-module in-memory /// Quartz instance) can call the exact same logic. The three original job classes and their /// Quartz registrations are deleted, not just superseded — this IS the new implementation now. /// public interface ISchedulerTasksBLL { /// Alerts when a kill switch has been active for more than 48h — a stale kill /// switch usually means a fix shipped but nobody lifted the switch. Was every 10 minutes. Task RunKillSwitchMonitorAsync(CancellationToken ct); /// Applies MENTITLEMENTFEATUREFLAG.SCHEDULEDOFFON/SCHEDULEDOFFOFF transitions that /// have come due. Was every 5 minutes. Task RunFeatureFlagSchedulerAsync(CancellationToken ct); /// Entitlement↔Payment loose-coupling reconciliation backstop (§9.1 item 4) — scans /// every subscription still Pending with a real outstanding PayOrderId, checks PAY's live /// order status, self-corrects via the same ISubscriptionService.HandlePaymentOutcomeAsync /// the Dapr subscriber calls. Was every 15 minutes. Task RunPayOrderReconciliationAsync(CancellationToken ct); }