/* Results / status view for a single evaluation */
(() => {
const { useEffect: useEffectR, useState: useStateR } = React;
function Results({ publicKey, onReset }) {
const [ev, setEv] = useStateR(null);
const [err, setErr] = useStateR('');
useEffectR(() => {
let stopped = false;
async function poll() {
try {
const data = await api.getEvaluation(publicKey);
if (stopped) return;
setEv(data);
if (data.status === 'pending' || data.status === 'researching' || data.status === 'scoring') {
setTimeout(poll, 3000);
}
} catch (e) {
if (!stopped) setErr(e.message);
}
}
poll();
return () => { stopped = true; };
}, [publicKey]);
if (err) return (
โ {err}
);
if (!ev) return Loadingโฆ
;
const statusEmoji = {
pending: 'โณ', researching: '๐', scoring: '๐งฎ', complete: 'โ
', failed: 'โ ๏ธ',
}[ev.status] || 'ยท';
const verdictClass =
ev.score_tier === 'sign' ? 'verdict-sign' :
ev.score_tier === 'review' ? 'verdict-review' :
ev.score_tier === 'decline' ? 'verdict-decline' :
ev.score_tier === 'reject' ? 'verdict-reject' : 'bg-gray-100 text-ink-3';
return (
Case
{ev.public_key}
{ev.defendant_name || 'โ'} vs. {ev.client_name || 'โ'}
Status
{statusEmoji} {ev.status}
{ev.status === 'researching' &&
}
{ev.status === 'scoring' &&
}
{ev.status === 'failed' && (
Pipeline failed: {ev.error || 'unknown error'}
)}
{ev.status === 'complete' && (
<>
{ev.score?.toFixed(1)}
/ 10
{ev.score_tier?.toUpperCase()}
{ev.score_factors && (
{ev.score_factors.map((f, i) => (
{f.label}
= 0 ? 'text-green-700 font-mono' : 'text-red-700 font-mono'}>
{f.delta >= 0 ? '+' : ''}{f.delta}
))}
)}
{ev.case_summary && (
Full case summary
{ev.case_summary}
)}
>
)}
);
}
function Card({ children }) {
return {children}
;
}
function ProgressCard({ label }) {
return (
);
}
function DocButton({ href, label, icon, sub }) {
return (
{icon}
{label}
{sub} โ
);
}
window.Results = Results;
})();