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:
@@ -337,6 +337,41 @@ export function useToggleJob() {
|
||||
});
|
||||
}
|
||||
|
||||
// ── System events ──
|
||||
|
||||
export function useSystemEvents(days = 7) {
|
||||
return useQuery({
|
||||
queryKey: ['admin', 'system-events', days],
|
||||
queryFn: () => adminApi.listSystemEvents({ days }),
|
||||
refetchInterval: 30_000,
|
||||
});
|
||||
}
|
||||
|
||||
export function useSystemEventSummary(days = 7) {
|
||||
return useQuery({
|
||||
queryKey: ['admin', 'system-events-summary', days],
|
||||
queryFn: () => adminApi.getSystemEventSummary(days),
|
||||
refetchInterval: 30_000,
|
||||
});
|
||||
}
|
||||
|
||||
export function useAcknowledgeSystemEvents() {
|
||||
const qc = useQueryClient();
|
||||
const { addToast } = useToast();
|
||||
|
||||
return useMutation({
|
||||
mutationFn: (days = 7) => adminApi.acknowledgeSystemEvents(days),
|
||||
onSuccess: (data) => {
|
||||
qc.invalidateQueries({ queryKey: ['admin', 'system-events'] });
|
||||
qc.invalidateQueries({ queryKey: ['admin', 'system-events-summary'] });
|
||||
addToast('success', `Dismissed ${data.acknowledged} alert${data.acknowledged === 1 ? '' : 's'}`);
|
||||
},
|
||||
onError: (error: Error) => {
|
||||
addToast('error', error.message || 'Failed to dismiss alerts');
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
export function useTriggerJob() {
|
||||
const qc = useQueryClient();
|
||||
const { addToast } = useToast();
|
||||
|
||||
Reference in New Issue
Block a user