diff --git a/src/Web/StellaOps.Web/src/app/features/audit-log/audit-log-dashboard.component.ts b/src/Web/StellaOps.Web/src/app/features/audit-log/audit-log-dashboard.component.ts index c89cdfaec..a9cc082eb 100644 --- a/src/Web/StellaOps.Web/src/app/features/audit-log/audit-log-dashboard.component.ts +++ b/src/Web/StellaOps.Web/src/app/features/audit-log/audit-log-dashboard.component.ts @@ -1,55 +1,24 @@ -import { - ChangeDetectionStrategy, - Component, - DestroyRef, - OnInit, - computed, - effect, - inject, - signal, -} from '@angular/core'; +// Sprint: SPRINT_20251229_028_FE - Unified Audit Log Viewer +import { ChangeDetectionStrategy, Component, DestroyRef, OnInit, computed, effect, inject, signal } from '@angular/core'; import { CommonModule } from '@angular/common'; -import { RouterLink } from '@angular/router'; +import { RouterModule } from '@angular/router'; import { AuditLogClient } from '../../core/api/audit-log.client'; -import { - AuditAnomalyAlert, - AuditEvent, - AuditModule, - AuditStatsSummary, -} from '../../core/api/audit-log.models'; +import { AuditAnomalyAlert, AuditEvent, AuditModule, AuditStatsSummary } from '../../core/api/audit-log.models'; +import { StellaHelperContextService } from '../../shared/components/stella-helper/stella-helper-context.service'; import { StellaMetricCardComponent } from '../../shared/components/stella-metric-card/stella-metric-card.component'; import { StellaMetricGridComponent } from '../../shared/components/stella-metric-card/stella-metric-grid.component'; -import { - StellaPageTab, - StellaPageTabsComponent, -} from '../../shared/components/stella-page-tabs/stella-page-tabs.component'; -import { StellaHelperContextService } from '../../shared/components/stella-helper/stella-helper-context.service'; +import { StellaPageTabsComponent, StellaPageTab } from '../../shared/components/stella-page-tabs/stella-page-tabs.component'; +import { StellaQuickLinksComponent, type StellaQuickLink } from '../../shared/components/stella-quick-links/stella-quick-links.component'; import { AuditCorrelationsComponent } from './audit-correlations.component'; import { AuditLogTableComponent } from './audit-log-table.component'; import { AuditTimelineSearchComponent } from './audit-timeline-search.component'; const AUDIT_TABS: StellaPageTab[] = [ - { - id: 'overview', - label: 'Overview', - icon: 'M3 9l9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z|||M9 22V12h6v10', - }, - { - id: 'all-events', - label: 'All Events', - icon: 'M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z|||M14 2v6h6|||M16 13H8|||M16 17H8|||M10 9H8', - }, - { - id: 'timeline', - label: 'Timeline', - icon: 'M12 12m-10 0a10 10 0 1 0 20 0 10 10 0 1 0-20 0|||M12 6v6l4 2', - }, - { - id: 'correlations', - label: 'Correlations', - icon: 'M22 12h-4l-3 9L9 3l-3 9H2', - }, + { id: 'overview', label: 'Overview', icon: 'M3 9l9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z|||M9 22V12h6v10' }, + { id: 'all-events', label: 'All Events', icon: 'M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z|||M14 2v6h6|||M16 13H8|||M16 17H8|||M10 9H8' }, + { id: 'timeline', label: 'Timeline', icon: 'M12 12m-10 0a10 10 0 1 0 20 0 10 10 0 1 0-20 0|||M12 6v6l4 2' }, + { id: 'correlations', label: 'Correlations', icon: 'M22 12h-4l-3 9L9 3l-3 9H2' }, ]; @Component({ @@ -57,10 +26,11 @@ const AUDIT_TABS: StellaPageTab[] = [ standalone: true, imports: [ CommonModule, - RouterLink, + RouterModule, StellaMetricCardComponent, StellaMetricGridComponent, StellaPageTabsComponent, + StellaQuickLinksComponent, AuditTimelineSearchComponent, AuditCorrelationsComponent, AuditLogTableComponent, @@ -69,16 +39,13 @@ const AUDIT_TABS: StellaPageTab[] = [ template: `
- Cross-module audit trail, anomaly detection, timeline search, and event correlation. -
-Cross-module audit trail, anomaly detection, timeline search, and event correlation.
- Audit data appears automatically as operators use the platform. The first useful - events usually come from release creation, policy changes, approvals, scans, and - integration updates. + Audit events appear automatically when operators create releases, change policy packs, + approve promotions, manage integrations, or update access controls. The log is empty + because that activity has not happened in the selected window yet, not because audit + capture is disabled.
-- This is usually a first-run state, not a failure. Once work starts flowing through - Stella, this page becomes the evidence trail for who changed what and when. + The Evidence rail indicator shows ON - audit capture is active.
- +| Timestamp | -Module | -Action | -Actor | -Resource | -|||||
|---|---|---|---|---|---|---|---|---|---|
| {{ formatTime(event.timestamp) }} | -{{ event.module }} | -{{ event.action }} | -{{ event.actor.name }} | -{{ event.resource.type }}: {{ event.resource.name || event.resource.id }} | -|||||
|
-
-
- Nothing has reached the audit stream yet. -- Start with a release, scan, or policy change. The newest events will appear - here first for quick operator review. - - |
+ Timestamp | +Module | +Action | +Actor | +Resource | ||||
|---|---|---|---|---|---|---|---|---|---|
No recent events in this time window
++ Recent events show the latest release, policy, VEX, and integration actions as they happen. + When this panel is empty, there has simply been no qualifying activity to summarize yet. +
+