feat: KI-Review-Schritt in der Pipeline (Korrekturlesen vor Audio)
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>
This commit is contained in:
@@ -1,10 +1,11 @@
|
||||
// Automatische Content-Pipeline pro Bild: Pairs generieren → übersetzen → Audio → ready.
|
||||
// Automatische Content-Pipeline pro Bild: Pairs generieren → übersetzen → KI-Review → Audio → ready.
|
||||
// In-Process-Queue mit einem Worker (rate-limit-freundlich). Jeder Schritt ist idempotent,
|
||||
// d.h. ein Resume nach Crash/Redeploy überspringt bereits Erledigtes.
|
||||
const { query } = require('../db');
|
||||
const { LANGS, fillMissingRow } = require('./translate');
|
||||
const { translateWordGroup } = require('./pairContent');
|
||||
const { generatePairsForObject, persistPair } = require('./generatePairs');
|
||||
const { reviewPicturePairs } = require('./reviewPairs');
|
||||
const { generateAndStore, describeError } = require('../routes/audios');
|
||||
|
||||
const queue = [];
|
||||
@@ -153,6 +154,25 @@ async function runPicture(pictureId) {
|
||||
await setStep(pictureId, 'translate', progress);
|
||||
}
|
||||
|
||||
// ── Step 2.5: KI-Review — alle Pairs + Bild an Sonnet zum Korrekturlesen ────
|
||||
// (Rechtschreibung, Übersetzungs-Konsistenz, Plausibilität zum Bild). Korrekturen
|
||||
// landen vor der Audio-Erzeugung in der DB; Fehler sind wie beim Übersetzen nicht
|
||||
// fatal — Audio läuft trotzdem, der Lauf wird nicht abgebrochen.
|
||||
progress.reviewedPairs = 0;
|
||||
progress.correctionsApplied = 0;
|
||||
progress.reviewFailures = 0;
|
||||
await setStep(pictureId, 'review', progress);
|
||||
try {
|
||||
await reviewPicturePairs({
|
||||
pictureId, pictureUrl: picture.picture_link, pairs, progress,
|
||||
onProgress: () => setStep(pictureId, 'review', progress),
|
||||
});
|
||||
} catch (err) {
|
||||
progress.reviewFailures++;
|
||||
console.error(`Review-Fehler bei Bild ${pictureId}:`, err.message);
|
||||
}
|
||||
await setStep(pictureId, 'review', progress);
|
||||
|
||||
// ── Step 3: Audio für alle Sätze + Wörter des Bildes in allen Sprachen ──────
|
||||
try {
|
||||
const units = await collectAudioUnits(pictureId, pairs);
|
||||
|
||||
Reference in New Issue
Block a user