diff --git a/CHANGELOG.txt b/CHANGELOG.txt index 09940709..27a8e41a 100644 --- a/CHANGELOG.txt +++ b/CHANGELOG.txt @@ -1,3 +1,61 @@ +2026-02-13 +feat: unified insights page, integration nav improvements, sync transparency + - Created top-level Insights LiveView at /insights (replaces buried settings page) + - Unified insights from all sources (Preseem, Gaiia, SNMP, System) in one view + - Source filter pills, urgency filters (Critical/Warning/Info), status tabs (Active/Dismissed) + - Bulk select/dismiss with select all/deselect all + - URL param support: ?source=preseem&urgency=critical&status=active + - Added "Insights" to main navigation bar (desktop + mobile) between Alerts and Agents + - Added route /insights in authenticated scope + - Integration pages now show sync schedule info: + - Preseem: "Syncs every N minutes. Baselines and fleet profiles computed nightly." + - Gaiia: "Syncs every N minutes. Reconciliation runs nightly. Real-time webhook updates." + - "Next sync in ~Xm" calculated from last_synced_at + sync_interval_minutes + - Exposed sync_interval_minutes as editable field in integration config form (min: 5) + - Added next_sync_minutes/2 helper to IntegrationsLive + - Added horizontal tab navigation to integration detail pages: + - Preseem: Devices | Insights (links to /insights?source=preseem) + - Gaiia: Entity Mapping | Reconciliation + - Dashboard insights section now links to /insights (View All →) + - Dashboard insight titles clickable, linking to /insights?source={source} + - Integration "Network Insights →" link now points to /insights?source=preseem + - Old /settings/integrations/preseem/insights route kept for backward compatibility + - Files: lib/towerops_web/components/layouts.ex, lib/towerops_web/router.ex, + lib/towerops_web/live/insights_live/index.ex, + lib/towerops_web/live/insights_live/index.html.heex, + lib/towerops_web/live/org/integrations_live.ex, + lib/towerops_web/live/org/integrations_live.html.heex, + lib/towerops_web/live/org/preseem_devices_live.html.heex, + lib/towerops_web/live/org/gaiia_mapping_live.html.heex, + lib/towerops_web/live/org/gaiia_reconciliation_live.html.heex, + lib/towerops_web/live/dashboard_live.html.heex + +2026-02-13 +feat: impact dashboard with MRR at risk, active incidents, enhanced site health + - Added Dashboard.get_impact_summary/1: aggregates current outage impact — + total subscribers affected, MRR at risk, sites with outages, down device count. + Computes Gaiia ImpactAnalysis for each down device. + - Added Dashboard.list_active_incidents/1: returns down devices enriched with + Gaiia subscriber impact (subscribers, MRR), Preseem QoE score, site info, + and outage duration (from last_status_change_at). Sorted by MRR descending. + - Added Dashboard.get_site_impact_summaries/1: enhanced site summaries with + subscribers_affected, mrr_at_risk (from down devices), avg_qoe (from Preseem APs), + and site_health (:green/:yellow/:red based on device status + QoE thresholds). + - Dashboard top stats row: added "MRR at Risk" card (red when > $0, shows affected + subscriber count) and conditional display when impact data exists. + - New "Active Incidents" section between stats and alerts: each incident card shows + device name, site link, downtime duration, subscribers affected, MRR at risk, + Preseem QoE score. Color-coded by MRR severity (red ≥$1k, orange ≥$100, yellow >$0). + - Enhanced Site Health Grid using site_impact_summaries: color-coded health dots + (green/yellow/red), QoE scores, subscribers affected, MRR at risk per site. + - Added helper functions: format_duration/1, incident_severity_classes/1, + site_health_border/1, site_health_dot/1, decimal_to_float/1, mrr_at_risk_positive?/1, + format_qoe/1 + - Impact analysis only computed for currently-down devices (performance guard) + - Existing empty-state (0 devices) flow untouched + - Files: lib/towerops/dashboard.ex, lib/towerops_web/live/dashboard_live.ex, + lib/towerops_web/live/dashboard_live.html.heex + 2026-02-13 feat: add 12/24-hour time format setting with consistent timezone display - Wired time_format into Scope struct (for_user/1, for_impersonation/2) diff --git a/priv/static/changelog.txt b/priv/static/changelog.txt index 546436d3..200181f1 100644 --- a/priv/static/changelog.txt +++ b/priv/static/changelog.txt @@ -3,6 +3,21 @@ Devices Tested & Working * Ubiquiti AC, LTU, AirFiber * Cambium ePMP +2026-02-13 +* New top-level Insights page — all network insights in one place with filtering by source, urgency, and status +* Insights added to main navigation bar for easy access +* Integration pages now show sync schedules — see how often data syncs and when the next sync will happen +* Configurable sync interval for each integration +* Improved navigation between integration pages with tab bars +* Dashboard insights section now links directly to the full Insights page + +2026-02-13 +* Impact Dashboard — instantly see subscriber and revenue impact during outages +* "MRR at Risk" and "Subscribers Affected" shown at the top of the dashboard when devices are down +* Active Incidents view — down devices sorted by revenue impact with subscriber counts, outage duration, and QoE scores +* Site health cards now color-coded (green/yellow/red) based on device status and network quality +* Per-site breakdown of affected subscribers and revenue at risk during outages + 2026-02-13 * 12-hour and 24-hour time format preference in account settings * All timestamps now display in user's chosen timezone and time format consistently