WIP: fix: "Failed to fetch" auf Hetzner — Job-Polling statt Langläufer-Request #10

Draft
Kenearos wants to merge 1 commit from claude/hetzner-fetch-failure-hlljm0 into main

1 commit

Author SHA1 Message Date
Claude
a3b36d5c74
fix: Job-Polling statt Langläufer-Request gegen "Failed to fetch"
POST /api/process hielt die HTTP-Verbindung 30–120s+ offen, während
claude -p lief. Jeder Reverse-Proxy (und kurze Netz-Hänger) kappt so
eine Verbindung, der Browser sieht nur "Failed to fetch" — ununterscheidbar
von einem echten Claude-Fehler.

- Server: POST registriert einen Job und antwortet sofort mit 202 {jobId};
  claude läuft im Hintergrund, Ergebnis/Fehler landen im Job-Store
  (TTL 15min, periodische Bereinigung). Neuer GET /api/process/:jobId
  liefert pending/done/error in kurzen, proxy-sicheren Requests.
- Frontend: pollt den Job alle 2s; ein transienter Netzfehler beim Pollen
  wird erneut versucht statt die ganze Analyse abzubrechen. Echte
  Claude-Fehler werden jetzt mit Klartext angezeigt statt "Failed to fetch".

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01P7fRh8N5kQsicT7q4gSnua
2026-06-19 10:15:36 +00:00