Files
skrift-agent/README.md
2026-08-24 12:13:58 +02:00

45 lines
1.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Skrift Produktions-Agent
Schlanker lokaler Agent (Windows) neben dem Plotter. Steuerung läuft über
Directus – der Agent macht nur: **Heartbeat → Job holen → drucken → melden**.
## Einrichtung
1. In Directus einen Nutzer der Rolle **Service** anlegen und einen **statischen
Token** erzeugen.
2. Die Maschine in Directus unter **Einstellungen → Maschinen** anlegen
(`base_url`, ggf. `mid`/Login). Die numerische ID der Maschine ist die
`machine_id` für die Agent-Config.
3. `config.example.json` → `config.json` kopieren und ausfüllen
(`directus_url`, `directus_token`, `machine_id`).
4. Abhängigkeiten installieren und starten:
```bat
python -m venv .venv
.venv\Scripts\pip install -r requirements.txt
.venv\Scripts\python agent.py
```
## Ablauf
- Der Agent meldet zyklisch `machines.status` + `last_seen` (Heartbeat).
- Er zieht den nächsten `jobs`-Eintrag seiner Maschine mit `status=queued`
(sortiert nach `priority`, dann Alter).
- Er lädt die SVGs des Auftrags passend zum Job-Typ (Schriftstück/Umschlag)
über den Directus-Datei-Endpoint (`/skrift-orders/files/...`) und schickt sie
mit den Template-Werten (Maße/Position/Rotation) an den Plotter.
- Status zurück: `printing → printed` bzw. `failed` (+ Fehlermeldung).
- Bei Maschinenfehler (z. B. Papierende) ruft er `recover_write` auf.
## Jobs entstehen
Über den Admin-Trigger `POST /skrift-orders/enqueue { order, machine }`
(bzw. später ein Button in der Webapp). Pro Auftrag entsteht ein Brief-Job und
– falls Kuvert beschriftet – ein Umschlag-Job, jeweils mit aufgelöstem Template.
## Signaturen / AutoRecover
Der Signatur-Service bleibt vorerst unberührt. Das win32-`AutoRecover`
(klickt das Java-Fenster) kann weiter separat laufen; der Agent nutzt zusätzlich
den API-`recover_write` der Maschine.