From 6e71996733773838ea090f58f055fc5a321eef5e Mon Sep 17 00:00:00 2001 From: Benjamin Admin Date: Thu, 7 May 2026 15:41:25 +0200 Subject: [PATCH] fix: ComplianceAlerts API-Format Mapping API liefert verschachteltes Format (trigger.regulation), Frontend erwartete flaches Format. Mapping eingefuegt. Co-Authored-By: Claude Opus 4.6 (1M context) --- .../_components/ComplianceAlerts.tsx | 21 +++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/admin-compliance/app/sdk/iace/[projectId]/_components/ComplianceAlerts.tsx b/admin-compliance/app/sdk/iace/[projectId]/_components/ComplianceAlerts.tsx index 1143ccd..dcb403c 100644 --- a/admin-compliance/app/sdk/iace/[projectId]/_components/ComplianceAlerts.tsx +++ b/admin-compliance/app/sdk/iace/[projectId]/_components/ComplianceAlerts.tsx @@ -86,8 +86,25 @@ export function ComplianceAlerts({ projectId }: { projectId: string }) { fetch(`/api/sdk/v1/iace/projects/${projectId}/compliance-triggers`) .then((r) => (r.ok ? r.json() : null)) .then((json) => { - if (json?.triggers) setData(json) - else if (Array.isArray(json)) setData({ triggers: json, total: json.length }) + if (!json) return + // Map API format (nested trigger object) to flat frontend format + const raw = json.triggers || [] + const mapped: ComplianceTrigger[] = raw.map((t: Record, i: number) => { + const inner = (t.trigger || t) as Record + const reg = (inner.regulation || '') as string + return { + id: (t.hazard_id as string) || `trigger-${i}`, + regulation: reg.split(' ')[0] || reg, + article: reg.includes(' ') ? reg.split(' ').slice(1).join(' ') : '', + title: (inner.action_de || inner.trigger_cond_de || '') as string, + severity: ((inner.severity || 'medium') as string) as 'high' | 'medium' | 'low', + reason: (inner.trigger_cond_de || '') as string, + affected_hazard_count: 1, + module_path: (inner.module_link || '/sdk') as string, + module_label: ((inner.module || 'Modul') as string).toUpperCase(), + } + }) + setData({ triggers: mapped, total: mapped.length }) }) .catch(() => {}) .finally(() => setLoading(false))