bilder gen

This commit is contained in:
2026-08-17 23:41:49 +02:00
parent 9ecb292c26
commit f4aac46ea0
9 changed files with 1381 additions and 93 deletions

View File

@@ -17,22 +17,40 @@ npm --prefix client run web
## Bildgenerierung
Die Warteschlange aus `jobs` arbeitet der Dispatcher ab **serverseitig**, weil
der Anbieter-Schlüssel nicht ins Client-Bundle darf:
Zwei Job-Typen arbeitet der Dispatcher ab **serverseitig**, weil der
Anbieter-Schlüssel nicht ins Client-Bundle darf:
| Job | Entsteht bei | Ergebnis |
|---|---|---|
| `modell_gen` | Modell anlegen (Person, Produkt, Kulisse) | 4 Varianten als Entwurfs-Versionen, eine wird freigegeben |
| `bild_gen` | Post erstellen | Bilderkette in `post_images` |
**Logo-Sonderfall:** Wer eine Datei hochlädt, bekommt sie unverändert als
freigegebene Version ab da wird sie nie neu generiert. Wer keine hat, bekommt
Entwürfe. Sobald etwas freigegeben ist, weist der Dispatcher jede weitere
Generierung auf dieses Asset ab. So bleibt die Brand-Regel gewahrt, ohne Marken
ohne Logo auszusperren.
```bash
BILD_ANBIETER=stub node scripts/job-dispatcher.mjs
node scripts/job-dispatcher.mjs
```
`stub` erzeugt Platzhalterbilder und macht die ganze Kette prüfbar, ohne Kosten.
`ark` und `openrouter` sprechen die echten Modelle an beide setzen voraus,
dass das jeweilige Konto freigeschaltet bzw. aufgeladen ist:
Ohne Angabe läuft er auf `auto` und probiert der Reihe nach **Ark → OpenRouter →
Platzhalter**. Ark steht vorn, weil Seedream mit 0,0450,090 $ je Bild günstiger
ist als Gemini mit 0,14 $ und in `eu-west` läuft. Ist Ark nicht freigeschaltet,
fällt die Kette still auf OpenRouter zurück; jede Zeile im Log nennt den
Anbieter, der geliefert hat.
- **BytePlus Ark:** Modell in der Konsole unter Model Service aktivieren
- **OpenRouter:** Guthaben aufladen
Unterschieden wird zwischen „Anbieter nicht verfügbar" (Konto zu, kein Guthaben)
und einem echten Fehler nur beim ersten Fall wird weitergereicht, damit ein
inhaltlicher Fehler nicht stillschweigend überdeckt wird.
Danach reicht `BILD_ANBIETER=ark node scripts/job-dispatcher.mjs` am Code
ändert sich nichts.
Fest wählen geht weiterhin: `BILD_ANBIETER=stub|ark|openrouter`.
**Voraussetzungen je Anbieter:** OpenRouter braucht gekauftes Guthaben (eine
hinterlegte Karte genügt nicht es ist ein Prepaid-Konto). BytePlus Ark braucht
die Aktivierung je Modell in der Konsole unter *Model activation*; das ist keine
Zahlungsfrage, verlangt aber die Zustimmung zu mehreren Verträgen.
## Demo-Daten