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);
}
}