namespace FrameworkBLL.Dashboard { /// /// Strongly-typed contract for server-to-client Dashboard SignalR push messages. /// Defined in FrameworkBLL so both FrameworkBLL (a future in-process publisher) and /// FrameworkSL (DashboardHub) can reference it without a circular dependency — same shape as /// ISysJobClient/SysJobHub. /// /// Deliberately carries only a small "this changed, please refetch" signal, never the payload /// itself — the client always refetches through its own normal query path (RunBIQuery, /// GetKPIValuesForPortlet, GetPortlet, ...), which stays the single source of truth for shaping /// data. See the plan's Phase 0d rationale. /// public interface IDashboardClient { /// /// A dataset changed for (optionally) a specific organizational unit. DatasetKey is a /// coarse topic identifier a widget/portlet was configured to care about (e.g. "FFINANCE", /// "KPI", "BRS", "COMPLIANCE_ALERT") — not a table name or a specific portlet id. /// Task DataChanged(string datasetKey, int? ouId, DateTime changedAtUtc); } }