Add system alerts log with nav badge and Admin Alerts tab.
Persist job and ingestion warnings/errors for 7 days, surface a dismissible top-nav badge, treat stale OHLCV as a warning (e.g. ticker renames), and show market bar age on the ticker freshness chip.
This commit is contained in:
@@ -225,6 +225,50 @@ export function triggerJob(jobName: string, options?: { target_model?: BacktestT
|
||||
.then((r) => r.data);
|
||||
}
|
||||
|
||||
// System events (operational warnings / errors)
|
||||
export interface SystemEvent {
|
||||
id: number;
|
||||
severity: 'warning' | 'error' | string;
|
||||
source: string;
|
||||
code: string;
|
||||
message: string;
|
||||
symbol: string | null;
|
||||
created_at: string | null;
|
||||
acknowledged_at: string | null;
|
||||
}
|
||||
|
||||
export interface SystemEventSummary {
|
||||
days: number;
|
||||
total: number;
|
||||
unacknowledged: number;
|
||||
unacknowledged_errors: number;
|
||||
unacknowledged_warnings: number;
|
||||
}
|
||||
|
||||
export function listSystemEvents(params?: {
|
||||
days?: number;
|
||||
severity?: string;
|
||||
unacknowledged_only?: boolean;
|
||||
}) {
|
||||
return apiClient
|
||||
.get<SystemEvent[]>('admin/system-events', { params })
|
||||
.then((r) => r.data);
|
||||
}
|
||||
|
||||
export function getSystemEventSummary(days = 7) {
|
||||
return apiClient
|
||||
.get<SystemEventSummary>('admin/system-events/summary', { params: { days } })
|
||||
.then((r) => r.data);
|
||||
}
|
||||
|
||||
export function acknowledgeSystemEvents(days = 7) {
|
||||
return apiClient
|
||||
.post<{ acknowledged: number }>('admin/system-events/acknowledge', null, {
|
||||
params: { days },
|
||||
})
|
||||
.then((r) => r.data);
|
||||
}
|
||||
|
||||
// Data cleanup
|
||||
export function cleanupData(olderThanDays: number) {
|
||||
return apiClient
|
||||
|
||||
Reference in New Issue
Block a user