Files
LabelPrintAgent/README.md
T

144 lines
3.5 KiB
Markdown

# LabelPrintAgent
Windows-Tray-Anwendung zum Rendern und Drucken von Etiketten über installierte Windows-Drucker, z. B. einen Dymo LabelWriter.
## Aktueller Stand
Der Agent arbeitet jetzt mit lokalen `LabelTemplates` in `C:\ProgramData\LabelPrintAgent\settings.json`.
Ein Queue-Job enthält nur noch:
- `barcode_template_id`
- `payload_json`
Die alte Zuordnung über `layout_key` gibt es nicht mehr. Stattdessen gilt:
```text
label_print_queue.barcode_template_id
-> lokales LabelTemplate im LabelPrintAgent
-> darin enthaltenes Layout rendern
```
Die Tabelle `barcode_templates` wird nicht verändert. Sie bleibt nur die fachliche Referenz für die `barcode_template_id`.
## LabelTemplates
Ein lokales LabelTemplate enthält:
- `barcodeTemplateId`
- `name`
- `getNumberUrl`
- `numberPrintedUrl`
- `reservedNumberPayloadKey`
- `qrTemplate`
- `layout`
Das Layout liegt vollständig eingebettet im Template. Es gibt keine separate Layout-Datei und keinen `layoutKey` mehr.
## Nummernserver
`getNumberUrl` wird per HTTP GET aufgerufen und gibt Plain Text zurück, z. B.:
```text
123
```
Der Nummernserver liefert keine führenden Nullen. Die Datenbank speichert `reserved_number` als `BIGINT`, also z. B. `123`.
Führende Nullen entstehen nur über Formatierung im Template:
```text
{reservedNumber:0000000} -> 0000123
{nummer:0000000} -> 0000123
```
Nach erfolgreichem Windows-Druck wird `numberPrintedUrl` aufgerufen. Erst wenn diese Bestätigung erfolgreich war, darf der Job als `printed` markiert werden.
Wenn der Druck erfolgreich war, aber `numberPrintedUrl` fehlschlägt, bleibt `reserved_number` erhalten und der Job geht auf `error`. Beim erneuten Drucken wird dieselbe Nummer wiederverwendet; es wird keine neue Nummer reserviert.
## Payload-Erweiterung
Vor dem Rendern wird `payload_json` erweitert:
- `reservedNumber`
- der konfigurierte `reservedNumberPayloadKey`, z. B. `nummer`
- `qr`, wenn `qrTemplate` gesetzt ist
- `jobId`
- `barcodeTemplateId`
Beispiel:
```json
{
"reservedNumber": 123,
"nummer": 123,
"qr": "bjoernprivat 0000123"
}
```
## Oberfläche
Im Einstellungsdialog gibt es den Tab `Label-Templates`.
Dort kannst du:
- Templates anlegen
- Templates löschen
- `barcodeTemplateId` bearbeiten
- Nummernserver-URLs bearbeiten
- QR-Template bearbeiten
- eingebettetes Layout-JSON bearbeiten
- validieren
- Vorschau erzeugen
- Testdruck auslösen
Die Vorschau verwendet eine Dummy-Nummer `123` und reserviert keine Nummer beim Nummernserver.
## Dymo-Testdruck
Für den Dymo LabelWriter muss der Drucker in Windows als normaler Drucker eingerichtet sein. Stelle im Dymo-Treiber möglichst das passende Etikettenformat `57 x 32 mm` ein.
Testdruck:
1. Im Tab `Drucker` den Dymo LabelWriter auswählen.
2. `Speichern` klicken.
3. Im Tab `Label-Templates` ein Template auswählen.
4. `Vorschau` prüfen.
5. `Testdruck` klicken.
Typische Fehler:
- Falscher Drucker gewählt.
- Falsches Etikettenformat im Dymo-Treiber.
- Treiber skaliert auf A4/Letter.
- Etikett ist gedreht: Dymo-Treiber-Labelgröße und physische Orientierung prüfen.
## Datenbank
Die SQL-Datei liegt unter:
```text
sql/create_label_print_queue.sql
```
Beispiel-Insert:
```sql
INSERT INTO label_print_queue
(barcode_template_id, payload_json, status)
VALUES
(
1,
JSON_OBJECT(
'titel', 'Beleg privat',
'beschreibung', 'Tankbeleg',
'datum', '2026-05-07'
),
'pending'
);
```
## Noch offen
Der automatische MySQL-Worker ist noch nicht aktiv verdrahtet. Die dafür benötigten Modell-, Repository-, Nummernserver- und Druckprozessor-Klassen sind vorbereitet.