feat(options): eager startup validation for central-component options (Transport, SiteCallAudit, DeploymentManager) (arch-review 08 §1.5)
Claude-Session: https://claude.ai/code/session_01MtdgwpEeCUn6cUA5f1LMPj
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using Microsoft.Extensions.DependencyInjection.Extensions;
|
||||
using Microsoft.Extensions.Options;
|
||||
using ZB.MOM.WW.ScadaBridge.Commons.Interfaces.Kpi;
|
||||
using ZB.MOM.WW.ScadaBridge.SiteCallAudit.Kpi;
|
||||
|
||||
@@ -37,8 +38,15 @@ public static class ServiceCollectionExtensions
|
||||
{
|
||||
ArgumentNullException.ThrowIfNull(services);
|
||||
|
||||
// Eager startup validation (arch-review 08 §1.5): ValidateOnStart makes a
|
||||
// bad ScadaBridge:SiteCallAudit section — a zero/negative cadence that would
|
||||
// spin an Akka scheduler, or a non-positive KPI/retention knob — fail fast
|
||||
// at boot with a clear, key-naming message.
|
||||
services.AddOptions<SiteCallAuditOptions>()
|
||||
.BindConfiguration(OptionsSection);
|
||||
.BindConfiguration(OptionsSection)
|
||||
.ValidateOnStart();
|
||||
services.TryAddEnumerable(
|
||||
ServiceDescriptor.Singleton<IValidateOptions<SiteCallAuditOptions>, SiteCallAuditOptionsValidator>());
|
||||
|
||||
// KPI History: the central recorder enumerates every registered
|
||||
// IKpiSampleSource each sampling pass; this one snapshots the SiteCalls
|
||||
|
||||
Reference in New Issue
Block a user