fix: auto-compute environment slug + respect environment filter globally
Part A: Environment creation slug is now auto-derived from display name and shown read-only (matching app creation pattern). Removes manual slug input. Part B: All data queries now pass the selected environment to backend: - Exchanges search, Dashboard L1/L2/L3 stats, Routes metrics, Route detail, correlation chains, and processor metrics all filter by selected environment. - Backend RouteMetricsController now accepts environment parameter for both route and processor metrics endpoints. Closes #XYZ Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -14,6 +14,7 @@ import { useGlobalFilters } from '@cameleer/design-system';
|
||||
import { useExecutionStats, useStatsTimeseries } from '../../api/queries/executions';
|
||||
import { useProcessorMetrics } from '../../api/queries/processor-metrics';
|
||||
import { useTopErrors, useAppSettings } from '../../api/queries/dashboard';
|
||||
import { useEnvironmentStore } from '../../api/environment-store';
|
||||
import type { TopError } from '../../api/queries/dashboard';
|
||||
import { useDiagramByRoute } from '../../api/queries/diagrams';
|
||||
import { ProcessDiagram } from '../../components/ProcessDiagram';
|
||||
@@ -244,16 +245,17 @@ function buildKpiItems(
|
||||
|
||||
export default function DashboardL3() {
|
||||
const { appId, routeId } = useParams<{ appId: string; routeId: string }>();
|
||||
const selectedEnv = useEnvironmentStore((s) => s.environment);
|
||||
const { timeRange } = useGlobalFilters();
|
||||
const timeFrom = timeRange.start.toISOString();
|
||||
const timeTo = timeRange.end.toISOString();
|
||||
const windowSeconds = (timeRange.end.getTime() - timeRange.start.getTime()) / 1000;
|
||||
|
||||
// ── Data hooks ──────────────────────────────────────────────────────────
|
||||
const { data: stats } = useExecutionStats(timeFrom, timeTo, routeId, appId);
|
||||
const { data: timeseries } = useStatsTimeseries(timeFrom, timeTo, routeId, appId);
|
||||
const { data: processorMetrics } = useProcessorMetrics(routeId ?? null, appId);
|
||||
const { data: topErrors } = useTopErrors(timeFrom, timeTo, appId, routeId);
|
||||
const { data: stats } = useExecutionStats(timeFrom, timeTo, routeId, appId, selectedEnv);
|
||||
const { data: timeseries } = useStatsTimeseries(timeFrom, timeTo, routeId, appId, selectedEnv);
|
||||
const { data: processorMetrics } = useProcessorMetrics(routeId ?? null, appId, selectedEnv);
|
||||
const { data: topErrors } = useTopErrors(timeFrom, timeTo, appId, routeId, selectedEnv);
|
||||
const { data: diagramLayout } = useDiagramByRoute(appId, routeId);
|
||||
const { data: appSettings } = useAppSettings(appId);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user