Implement stage 1 tray app scaffold

This commit is contained in:
2026-05-07 13:39:29 +02:00
parent 7f3592682c
commit 412afa3ad3
14 changed files with 77 additions and 846 deletions
+26 -34
View File
@@ -1,52 +1,44 @@
# LabelPrintAgent
Windows-Tray-Anwendung zum Rendern und Drucken von Etiketten aus JSON-Layouts.
Windows-Tray-Anwendung für den späteren Etikettendruck aus JSON-Layouts.
## Stand
## Etappe 1
Der erste lauffähige Schritt enthält:
Dieser Stand ist ein lauffähiges Grundgerüst:
- .NET-9-Windows-Forms-Projekt mit Tray-Icon
- Einstellungsdialog mit Tabs für Allgemein, Datenbank, Drucker, Layout und Fehlerjobs
- .NET-9-Windows-Forms-Projekt
- Tray-Icon mit Kontextmenü
- Einstellungsdialog mit Tabs:
- Allgemein
- Datenbank
- Drucker
- Layout
- Fehlerhafte Druckaufträge
- lokale Konfiguration unter `C:\ProgramData\LabelPrintAgent\settings.json`
- automatische Anlage von `C:\ProgramData\LabelPrintAgent`
- Layout-Ordner unter `C:\ProgramData\LabelPrintAgent\layouts`
- Log-Ordner unter `C:\ProgramData\LabelPrintAgent\logs`
- verschlüsselte Passwortspeicherung per Windows DPAPI
- Druckerauswahl über installierte Windows-Drucker
- Layout-JSON unter `C:\ProgramData\LabelPrintAgent\layouts`
- Auflistung installierter Windows-Drucker
- Beispiel-Layout `dymo_57x32_standard`
- Rendering mit 300 dpi als Bitmap
- Vorschau und Testdruck über `PrintDocument`
- Serilog-Dateilogs unter `C:\ProgramData\LabelPrintAgent\logs`
- vorbereiteter MySQL-Worker ohne automatischen Retry
- Layout-JSON laden, validieren und speichern
## Öffnen und Starten
Noch nicht enthalten sind MySQL-Worker, echtes Drucken, QR-Code-Rendering und die vollständige Rendering-Engine.
## Startanleitung
1. `LabelPrintAgent.sln` in Visual Studio oder Rider öffnen.
2. Auf einem Windows-Rechner bauen und starten.
3. Tray-Symbol anklicken, um die Einstellungen zu öffnen.
4. Im Tab `Drucker` den Dymo LabelWriter auswählen.
5. Im Tab `Layout` das Beispiel-Layout öffnen, `Vorschau` klicken und danach `Testdruck`.
3. Das Tray-Symbol anklicken oder per Kontextmenü `Einstellungen` öffnen.
4. Im Tab `Drucker` einen installierten Windows-Drucker auswählen und speichern.
5. Im Tab `Layout` das Beispiel-Layout prüfen, bearbeiten und speichern.
## Datenbank
Beim ersten Start werden die Programmdatenordner und das Beispiel-Layout automatisch angelegt.
Die Tabelle kann mit folgendem Skript angelegt werden:
## Spätere Etappen
```sql
sql/create_label_print_queue.sql
```
Der Worker lädt nur Jobs mit `status = 'pending'`. Vor dem Druck wird der Job auf `printing` gesetzt. Bei Erfolg setzt er `printed`, `printed_at` und `printer_name`. Bei Fehlern setzt er `error`, speichert `error_message` und erhöht `attempts`.
Fehlerhafte Jobs werden nicht automatisch wiederholt. Im Tab `Fehlerhafte Druckaufträge` können sie manuell erneut auf `pending` gesetzt oder als `deleted` markiert werden.
## Layout-Platzhalter
Text- und QR-Werte unterstützen Platzhalter aus `payload_json`:
Die SQL-Datei für die spätere Druckwarteschlange liegt bereits unter:
```text
{titel}
{nummer}
{datum:dd.MM.yyyy}
{menge:0.00}
sql/create_label_print_queue.sql
```
Formatangaben werden über C#-Formatstrings ausgewertet.