namespace SeaHaven.Services.Interfaces { /// /// Maps work order status between DB strings, API canonical values, and FE display labels. /// See docs/spikes/status-mapping.md (Gate G2). /// public interface IWorkOrderStatusMapper { /// Normalizes a raw DB/Sync value to API canonical status (enum name). string NormalizeToCanonical(string? dbStatus); /// Maps canonical status to Schedule Board display label (StatusDisplay). string ToDisplay(string canonical, bool isUnassigned = false); /// True when work order should not be treated as past due. bool IsTerminal(string canonical); /// All DB string variants that match a canonical filter value. IReadOnlyList ExpandCanonicalForFilter(string canonical); /// Expands multiple canonical filters to distinct DB values for SQL IN clauses. IReadOnlyList ExpandCanonicalFilters(IEnumerable? canonicalStatuses); /// Fase 2 write path — persists legacy-compatible string (Blazor/Sync). string ToStorage(string canonical); /// Fase 2 write path — FE display label to storage string. string? FromDisplay(string? statusDisplay); } }