feat(alerting): Plan 03 — UI + backfills (SSRF guard, metrics caching, docker stack) #144

Merged
hsiegeln merged 39 commits from feat/alerting-03-ui into main 2026-04-20 16:27:49 +02:00
7 changed files with 34 additions and 0 deletions
Showing only changes of commit 167d0ebd42 - Show all commits

View File

@@ -0,0 +1,3 @@
export default function AllAlertsPage() {
return <div>AllAlertsPage coming soon</div>;
}

View File

@@ -0,0 +1,3 @@
export default function HistoryPage() {
return <div>HistoryPage coming soon</div>;
}

View File

@@ -0,0 +1,3 @@
export default function InboxPage() {
return <div>InboxPage coming soon</div>;
}

View File

@@ -0,0 +1,3 @@
export default function RuleEditorWizard() {
return <div>RuleEditorWizard coming soon</div>;
}

View File

@@ -0,0 +1,3 @@
export default function RulesListPage() {
return <div>RulesListPage coming soon</div>;
}

View File

@@ -0,0 +1,3 @@
export default function SilencesPage() {
return <div>SilencesPage coming soon</div>;
}

View File

@@ -23,6 +23,12 @@ const OutboundConnectionEditor = lazy(() => import('./pages/Admin/OutboundConnec
const SensitiveKeysPage = lazy(() => import('./pages/Admin/SensitiveKeysPage'));
const AppsTab = lazy(() => import('./pages/AppsTab/AppsTab'));
const SwaggerPage = lazy(() => import('./pages/Swagger/SwaggerPage'));
const InboxPage = lazy(() => import('./pages/Alerts/InboxPage'));
const AllAlertsPage = lazy(() => import('./pages/Alerts/AllAlertsPage'));
const HistoryPage = lazy(() => import('./pages/Alerts/HistoryPage'));
const RulesListPage = lazy(() => import('./pages/Alerts/RulesListPage'));
const RuleEditorWizard = lazy(() => import('./pages/Alerts/RuleEditor/RuleEditorWizard'));
const SilencesPage = lazy(() => import('./pages/Alerts/SilencesPage'));
function SuspenseWrapper({ children }: { children: React.ReactNode }) {
return (
@@ -75,6 +81,16 @@ export const router = createBrowserRouter([
{ path: 'apps/new', element: <SuspenseWrapper><AppsTab /></SuspenseWrapper> },
{ path: 'apps/:appId', element: <SuspenseWrapper><AppsTab /></SuspenseWrapper> },
// Alerts
{ path: 'alerts', element: <Navigate to="/alerts/inbox" replace /> },
{ path: 'alerts/inbox', element: <SuspenseWrapper><InboxPage /></SuspenseWrapper> },
{ path: 'alerts/all', element: <SuspenseWrapper><AllAlertsPage /></SuspenseWrapper> },
{ path: 'alerts/history', element: <SuspenseWrapper><HistoryPage /></SuspenseWrapper> },
{ path: 'alerts/rules', element: <SuspenseWrapper><RulesListPage /></SuspenseWrapper> },
{ path: 'alerts/rules/new', element: <SuspenseWrapper><RuleEditorWizard /></SuspenseWrapper> },
{ path: 'alerts/rules/:id', element: <SuspenseWrapper><RuleEditorWizard /></SuspenseWrapper> },
{ path: 'alerts/silences', element: <SuspenseWrapper><SilencesPage /></SuspenseWrapper> },
// Admin (ADMIN role required)
{
element: <RequireAdmin />,