'use client' import { useState } from 'react' type RiskFlag = { zone: string site: string risk_level: 'low' | 'medium' | 'high' rationale: string recommended_action: string } const LEVEL_COLORS: Record = { low: 'bg-yellow-50 text-yellow-700 border-yellow-200', medium: 'bg-orange-50 text-orange-700 border-orange-200', high: 'bg-red-50 text-red-700 border-red-200', } export function RiskFlagsPanel() { const [flags, setFlags] = useState(null) const [summary, setSummary] = useState('') const [loading, setLoading] = useState(false) const [error, setError] = useState(null) const analyze = async () => { setLoading(true) setError(null) try { const res = await fetch('/api/dashboard/ai/risk-flags', { method: 'POST' }) if (!res.ok) { const data = await res.json().catch(() => ({})) setError(data.error ?? 'Analysis failed') return } const data: { flags: RiskFlag[]; summary: string } = await res.json() setFlags(data.flags) setSummary(data.summary) } catch { setError('Analysis failed') } finally { setLoading(false) } } return (

Rising-Risk Zones (AI)

AI suggestion from 90-day incident aggregates — review before acting.

{error &&

{error}

} {flags && flags.length === 0 && !error && (

No zones flagged — no rising-risk pattern detected.

)} {flags && flags.length > 0 && ( <>

{summary}

{flags.map(f => (
{f.zone} · {f.site} {f.risk_level}

{f.rationale}

Recommended: {f.recommended_action}

))}
)}
) }