- Create ISchedulerJobPlugin abstraction with JobKind routing - Add SchedulerPluginRegistry for plugin discovery and resolution - Wrap existing scan logic as ScanJobPlugin (zero behavioral change) - Extend Schedule model with JobKind (default "scan") and PluginConfig (jsonb) - Add SQL migrations 007 (job_kind/plugin_config) and 008 (doctor_trends table) - Implement DoctorJobPlugin replacing standalone doctor-scheduler service - Add PostgresDoctorTrendRepository for persistent trend storage - Register Doctor trend endpoints at /api/v1/scheduler/doctor/trends/* - Seed 3 default Doctor schedules (daily full, hourly quick, weekly compliance) - Comment out doctor-scheduler container in compose and services-matrix - Update Doctor architecture docs and AGENTS.md with scheduling migration info Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
25 lines
847 B
C#
25 lines
847 B
C#
using StellaOps.Scheduler.Models;
|
|
|
|
namespace StellaOps.Scheduler.Plugin;
|
|
|
|
/// <summary>
|
|
/// Callback interface for plugins to report progress and update Run state.
|
|
/// </summary>
|
|
public interface IRunProgressReporter
|
|
{
|
|
/// <summary>
|
|
/// Reports progress as completed/total with an optional message.
|
|
/// </summary>
|
|
Task ReportProgressAsync(int completed, int total, string? message = null, CancellationToken ct = default);
|
|
|
|
/// <summary>
|
|
/// Transitions the Run to a new state, optionally recording an error.
|
|
/// </summary>
|
|
Task TransitionStateAsync(RunState newState, string? error = null, CancellationToken ct = default);
|
|
|
|
/// <summary>
|
|
/// Appends a log entry to the Run's execution log.
|
|
/// </summary>
|
|
Task AppendLogAsync(string message, string level = "info", CancellationToken ct = default);
|
|
}
|