45 lines
1.8 KiB
Markdown
45 lines
1.8 KiB
Markdown
# 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.
|