feat(worker): Worker mit pg-boss, Vorgaenge und Docker-Betrieb (#007)
Die Oberflaeche legt einen Vorgang an und schickt nur dessen ID in die Warteschlange; der Worker fuehrt ihn aus und haelt Status, Ergebnis oder Fehler fest. So bleiben lange SSH-Vorgaenge aus dem Webprozess heraus, und der Fortschritt ist ohne Job-Interna sichtbar. Kein automatisches Wiederholen: ein halb ausgefuehrter Schreibvorgang auf einem Host gehoert vor einen Menschen. Fehlertexte aus fremden Bibliotheken erreichen die Oberflaeche nie. Dockerfile und Compose fuer den Betrieb: Master-Key als Secret nur im Worker, Datenbank in einem internen Netz. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -1,22 +1,27 @@
|
||||
# #007 Worker und Vorgänge
|
||||
**Status:** offen
|
||||
**Status:** erledigt
|
||||
**Meilenstein:** v0.1.0
|
||||
**Labels:** backend
|
||||
**Geschätzt:** 3 h **Tatsächlich:** –
|
||||
**Geschätzt:** 3 h **Tatsächlich:** 0 h 15 min
|
||||
|
||||
## Ziel
|
||||
Eigener Worker-Prozess mit pg-boss; die Oberfläche legt Vorgänge an und zeigt deren Fortschritt.
|
||||
|
||||
## Aufgaben
|
||||
- [ ] Worker-Einstieg, gebündelt per esbuild
|
||||
- [ ] pg-boss-Queues je Vorgangsart, Zeitpläne
|
||||
- [ ] Modell `Vorgang` für Status/Ergebnis in der Oberfläche
|
||||
- [ ] Docker-Compose produktiv: web, worker, db, migrate; Master-Key nur im Worker
|
||||
- [x] Worker-Einstieg, gebündelt per esbuild
|
||||
- [x] pg-boss-Queues je Vorgangsart, Zeitpläne
|
||||
- [x] Modell `Vorgang` für Status/Ergebnis in der Oberfläche
|
||||
- [x] Docker-Compose produktiv: web, worker, db, migrate; Master-Key nur im Worker
|
||||
|
||||
## Akzeptanzkriterien
|
||||
- [ ] Vorgang wird im Web angelegt, im Worker ausgeführt, Ergebnis sichtbar
|
||||
- [x] Vorgang wird im Web angelegt, im Worker ausgeführt, Ergebnis sichtbar
|
||||
|
||||
## Abhängigkeiten
|
||||
#003
|
||||
|
||||
## Notizen / Entscheidungen
|
||||
- **Eine Warteschlange `sshkv-vorgang` statt einer je Art:** Der Job trägt nur die Vorgangs-ID; die Art steht im `Vorgang`. Eine Handler-Tabelle (`src/worker/handler.ts`) wächst mit den Issues.
|
||||
- **Kein automatisches Wiederholen** (`retryLimit: 0`): Ein halb ausgeführter Schreibvorgang auf einem Host soll ein Mensch ansehen.
|
||||
- **Start nur aus WARTEND** per bedingtem Update – zugleich die Sperre gegen doppelte Ausführung.
|
||||
- **Fehlermeldungen:** Nur `VorgangsFehler` erreichen die Oberfläche, alles andere wird „Interner Fehler“; ins Log nur Name und Meldung.
|
||||
- **Compose:** Datenbank in einem `internal`-Netz; Master-Key als Secret ausschließlich im Worker. Docker-Secrets ohne Swarm sind Bind-Mounts mit den Rechten der Host-Datei – deshalb `chown 1001:1001` und `chmod 400` (siehe Kopf von `docker-compose.yml`).
|
||||
|
||||
Reference in New Issue
Block a user