Auftragsbuch: Ergebnis-Panel klebt nicht mehr auf Fehler (nochmal versuchen)

Fiel der erste Ladeversuch in ein Deploy-Fenster (Zentrale startet nach
Karten-Annahme kurz neu), blieb "Ergebnis nicht ladbar" dauerhaft stehen,
obwohl die API das Ergebnis liefert (Vorfall 16.07., t_2a7cfd46). Die
Fehlzeile ist jetzt ein Klick-Retry.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Hitonabi
2026-07-16 11:08:19 +02:00
parent 77dfac79ee
commit 0890698750
23 changed files with 44 additions and 33 deletions
+13 -2
View File
@@ -364,13 +364,18 @@ function IdeenSection() {
function ErgebnisPanel({ id }: { id: string }) {
const [erg, setErg] = useState<IdeenErgebnis | null>(null)
const [fehler, setFehler] = useState(false)
// Fehler darf nicht kleben: fällt der erste Versuch in ein Deploy-Fenster
// (Zentrale startet gerade neu), muss ein Klick neu laden können (Vorfall 16.07.).
const [versuch, setVersuch] = useState(0)
useEffect(() => {
let weg = false
setFehler(false)
setErg(null)
api<IdeenErgebnis>(`/api/ideen/${id}/ergebnis`)
.then((r) => { if (!weg) setErg(r) })
.catch(() => { if (!weg) setFehler(true) })
return () => { weg = true }
}, [id])
}, [id, versuch])
const text = erg ? (erg.summary || erg.result) : ""
return (
<div className="ml-2 -mt-1">
@@ -379,7 +384,13 @@ function ErgebnisPanel({ id }: { id: string }) {
<ClipboardCheck className="h-3 w-3" /> Ergebnis des Workers
</p>
{fehler ? (
<p className="text-[10px] text-red-400">Ergebnis nicht ladbar</p>
<button
type="button"
onClick={() => setVersuch((v) => v + 1)}
className="text-[10px] text-red-400 underline decoration-dotted underline-offset-2 hover:text-red-300"
>
Ergebnis nicht ladbar nochmal versuchen
</button>
) : erg === null ? (
<p className="text-[10px] text-muted-foreground animate-pulse">Wird geladen </p>
) : text ? (