Alle Pairs eines Bildes (de/en/sv) gehen zusammen mit dem Bild an Sonnet
zur Prüfung von Rechtschreibung, Übersetzungs-Konsistenz und Plausibilität.
Korrekturen werden vor der Audio-Erzeugung angewendet; vorhandene Audios
korrigierter Zellen werden invalidiert. Review-Fehler sind nicht fatal.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- callClaude: Retry mit Backoff bei Überlast/Rate-Limit/Netzfehler
(429/500/503/529) — wahrscheinliche Ursache der fehlenden SV-Übersetzung
- Translate-Step pro Pair gekapselt: ein Fehler reißt nicht mehr den ganzen
Lauf ab, Fehlversuche werden gezählt (pipeline_progress.translateFailures)
- translatePair als wiederverwendbarer Helfer extrahiert
- POST /pipeline/picture/:id/translate-fill: fehlende Übersetzungen
(Sätze + Antwort-Wörter) eines Bildes nachholen
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- Übersetzungs-Modell auf Sonnet (env TRANSLATE_MODEL, Default claude-sonnet-4-5).
- Neue translateWords(): übersetzt die Wörter eines word-Pairs gemeinsam in
einem Call, mit der Frage als Kontext → korrekte Bedeutung mehrdeutiger
Wörter (z.B. 'Ranke' → 'ranka' statt 'klänge'), konsistente Gruppe.
- POST /pairs/:id/translate nutzt translateWordGroup für word-Typ und nimmt
{ overwrite:true } entgegen, um falsche bestehende Zielsprachen neu zu
übersetzen (Quellsprache bleibt unangetastet); fillMissingRow erhält
overwrite-Flag.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- Übersetzungs-Kern (Claude + Platzhalter-Schutz) nach src/lib/translate.js
ausgelagert; claude.js importiert von dort (Endpoints unverändert).
- Neuer Endpoint POST /pairs/:id/translate: füllt fehlende Sprachen für
Frage, Statements bzw. (bei word-Typ) verlinkte Wörter und liefert das
3-sprachige Inhalts-Bündel fürs Review-Modal.
- POST /pairs/:id/review hebt verlinkte Objekte + Bilder zusätzlich auf
'reviewed' (idempotent).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>