- Verschifft
- 10. Mai 2026 um 04:33 UTC
- Autor
- Kamo
- Ausschuss
- c0a87b7
Zwei Ausfall-Modi waren in der Antwort nicht zu unterscheiden, so dass das Skript konnte sie nicht auseinanderhalten und "übersetzen" die gleichen Schlüssel zu Englisch auf jedem Sync-Lauf, mit zufälligen Untersätzen erfolgreich, aufgrund der genauen LibreTranslate Anfrage zufällig zu landen während eines Arbeiter-Neustarts: 1. Provider fehlerbedingt (Timeout, 5xx, Verbindung verweigert Mitte Neustart) 2. Provider erfolgreich, aber zurückgegeben Quelle unverändert (legit "nein Übersetzung erforderlich" - richtige Substantade, Markennamen, etc.) Beide schrieben schließlich die Quelle als Übersetzung. Änderungen: * LibreTranslateProvider / BergamotProvider: 3 Versuche mit 1s/3s Rücklauf für vorübergehende Ausfälle (5xx, 429, Timeout, Verbindung 4xx (nicht-429) propagiert sich sofort, weil erneute Versuche Missgebildete Anfrage wird nie helfen. Pro-Anruf-Timeout = 30s. Wirft auf erneute Erschöpfung, anstatt den Quelltext zurückzugeben. * ProviderRouter: zeichnet jetzt "jeder unterstützende Anbieter aus errord" (Werfeger) von "mindestens einer gelungenen, aber zurückgegebenen Quelle" (legitimer Passthrough - gibt Text zurück). No-supports unverändert. * ************ fängt pro Schlüssel Ausnahmen, sammelt sie in einer neuen failedKeys-Liste auf der Antwort, und lässt sie aus Ausgefallene Schlüssel aus Nachrichten. * BatchTranslateResponse: fügt failedKeys Feld hinzu. * übersetzen: liest failedKeys, schreibt diese Schlüssel nie zurück, also die apiTranslated[key] ?? vorhanden[Taste] Fallback verlässt die vorherige Englischer Wert an Ort und Stelle - der auf der nächsten Strecke zufrieden ist cur===enVal und re-queues genau die Tasten für die Wiederholung. Tests: zusätzliche Regressionstests für "alle Anbieter fehlerbehaftete Würfe", "bei Mindestens ein gelungen mit unverändertem Text gibt Text zurück", "Router fallthrough auf transienten Primärfehler" und TranslationService korrekte Partitionierung in Nachrichten vs failedKeys.