feat(admin): add restore dismissed alerts flow
Admins can now surface dismissed alert types without waiting for the underlying data to change. Adds a collapsible "Restore dismissed" section below the active alerts with per-type checkboxes. - ALERT_METADATA map in adminAlerts.js as the single source of truth for slug → title/severity; detectors refactored to reference it - GET /api/admin/alerts/dismissed returns this admin's dismissals joined with metadata (title, severity, dismissedAt) - POST /api/admin/alerts/restore deletes dismissals by alertType[], returns the deleted count - AdminAlertsPanel fetches both active + dismissed; stays visible when either is non-empty; checkboxes + "Restore selected" button - adminAlertRestoreSchema validates the POST body against the enum - Auth guards test covers both new routes
This commit is contained in:
parent
a2af4e31ff
commit
92e7dae74c
7 changed files with 423 additions and 41 deletions
|
|
@ -410,3 +410,10 @@ export const adminAlertDismissSchema = z.object({
|
|||
alertType: z.enum(ADMIN_ALERT_TYPES),
|
||||
signature: z.string().min(1).max(128)
|
||||
})
|
||||
|
||||
export const adminAlertRestoreSchema = z.object({
|
||||
alertTypes: z
|
||||
.array(z.enum(ADMIN_ALERT_TYPES))
|
||||
.min(1)
|
||||
.max(ADMIN_ALERT_TYPES.length)
|
||||
})
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue