diff --git a/frontend/src/app/findings/[id]/page.tsx b/frontend/src/app/findings/[id]/page.tsx index f15bf00..a74af1b 100644 --- a/frontend/src/app/findings/[id]/page.tsx +++ b/frontend/src/app/findings/[id]/page.tsx @@ -18,11 +18,21 @@ export default function FindingDetailPage() { const [asking, setAsking] = useState(false); const [resolveNote, setResolveNote] = useState(""); const [updating, setUpdating] = useState(false); + const [aiGenerating, setAiGenerating] = useState(false); useEffect(() => { if (!ready || !id) return; api.finding(id).then(f => { setFinding(f); + + // If AI translation is not available, attempt to retrieve/generate it + if (!f.ai_summary) { + setAiGenerating(true); + api.aiExplainFinding(id).catch(err => { + console.warn("AI translation unavailable:", err); + }).finally(() => setAiGenerating(false)); + } + return api.attackPaths(id).then(setAttackPaths).catch(() => {}); }).finally(() => setLoading(false)); }, [ready, id]); @@ -95,25 +105,32 @@ export default function FindingDetailPage() { {/* Executive (AI) view */}
{finding.ai_summary}
-Why it matters
-{finding.ai_business_impact}
-Remediation Steps
-
- {finding.ai_remediation_steps}
-
+ {finding.ai_summary ? (
+ <>
+ {finding.ai_summary}
+Why it matters
+{finding.ai_business_impact}
+Remediation Steps
+
+ {finding.ai_remediation_steps}
+
+