M9 – QR-Tags, Geräteseite, Etiketten, Scanner #14

Closed
opened 2026-09-24 20:44:43 +00:00 by florian.wilde · 0 comments
Owner

Status: offen
Meilenstein: v0.1.0
Labels: phase-1, backend, frontend
Geschätzt: 12 h Tatsächlich: –

Ziel

Der Einstieg für den Techniker, der am Gerät steht: scannen, sehen was zu tun ist, loslegen.

Aufgaben

  • Stapel-Erzeugung von N unregistrierten Tags (Standard 50) für vorgedruckte Aufkleber
  • Route /t/[tagCode] mit Anmeldepflicht und Rücksprung; drei Fälle: registriert → Geräteseite; existiert unregistriert → Registrierformular; unbekannt → Hinweis „Kein Laufzettel-Tag" mit Link zur Suche
  • Registrierformular: Typ, Hostname oder Bezeichnung, Seriennummer, Inventarnummer, optional Besitzer per Mitarbeitersuche; danach Geräteseite
  • Geräteseite /geraete/[id], handyoptimiert: Kopf mit Hostname bzw. Bezeichnung, Typ, Besitzer mit Abteilung, Seriennummer, tagCode in JetBrains Mono
  • Abschnitt „Zugewiesen": alle Läufe zu diesem Gerät in OFFEN und IN_ARBEIT mit Fortschritt, Zuweisung und Fälligkeit, Knopf „Starten" bzw. „Weiter"
  • Abschnitt „Schnellstart": Vorlagen aus GeraetetypVorlage für diesen Gerätetyp, ein Tipp startet den Lauf mit vorbelegtem Gerät und Besitzer
  • Abschnitt „Vorlage zuweisen": Vorlage wählen, optional Techniker und Fälligkeit, erzeugt einen Lauf in OFFEN
  • Abschnitt „Historie": abgeschlossene und archivierte Läufe chronologisch
  • QR-Erzeugung serverseitig als SVG mit qrcode, Fehlerkorrektur M, Inhalt ausschließlich {APP_URL}/t/{tagCode}, keine Personendaten, keine externe API
  • Etikettendruck mit Print-CSS in zwei Layouts: Etikettendrucker 62 × 29 mm (ein Etikett pro Seite) und A4-Bogen 3 × 8 à 70 × 37 mm; je Etikett QR, tagCode lesbar darunter, optional Hostname und Besitzer, kleines Laufzettel-Logo; immer hell
  • Im Modus DIENSTLEISTUNG zeigt das Etikett zusätzlich das Kundenkürzel, im Modus INTERN nie
  • Knopf „Etikett drucken" auf der Geräteseite, Stapeldruck für unregistrierte Tags
  • „Scannen" in der App: barcode-detector (native BarcodeDetector-API mit Polyfill-Fallback), Kamera im Browser, direkter Sprung zur Geräteseite
  • Screenshots Geräteseite Handy, Registrierformular, Etikett 62 × 29, A4-Bogen, Scanner in docs/screenshots/m9/

Akzeptanzkriterien

  • Test: /t/LZ-7K3F9Q ohne Anmeldung leitet zum Login und danach auf die Geräteseite von PC-001
  • Test: „Vorlage zuweisen" erzeugt einen Lauf in OFFEN, der unter „Zugewiesen" erscheint; „Starten" öffnet ihn und setzt IN_ARBEIT
  • Test: unregistrierter Tag führt zum Registrierformular, danach zur Geräteseite; unbekannter Tag zeigt den Hinweis
  • Test: mehrere Zuweisungen je Gerät sind gleichzeitig möglich
  • Test: der QR-Inhalt ist genau {APP_URL}/t/{tagCode} und enthält keine Personendaten
  • Test: ein bei 300 dpi gerastertes 62 × 29-mm-Etikett wird von einem QR-Decoder korrekt zurückgelesen
  • Beide Druckbilder sind sauber, ohne Sidebar, ohne dunkle Flächen, ohne abgeschnittene Etiketten
  • Die Geräteseite ist bei 390 px ohne horizontales Scrollen bedienbar

Quelle: docs/issues/014-qr-tags-geraeteseite.md — dort gepflegt, hierher gespiegelt.

**Status:** offen **Meilenstein:** v0.1.0 **Labels:** phase-1, backend, frontend **Geschätzt:** 12 h **Tatsächlich:** – ## Ziel Der Einstieg für den Techniker, der am Gerät steht: scannen, sehen was zu tun ist, loslegen. ## Aufgaben - [ ] Stapel-Erzeugung von N unregistrierten Tags (Standard 50) für vorgedruckte Aufkleber - [ ] Route `/t/[tagCode]` mit Anmeldepflicht und Rücksprung; drei Fälle: registriert → Geräteseite; existiert unregistriert → Registrierformular; unbekannt → Hinweis „Kein Laufzettel-Tag" mit Link zur Suche - [ ] Registrierformular: Typ, Hostname oder Bezeichnung, Seriennummer, Inventarnummer, optional Besitzer per Mitarbeitersuche; danach Geräteseite - [ ] Geräteseite `/geraete/[id]`, handyoptimiert: Kopf mit Hostname bzw. Bezeichnung, Typ, Besitzer mit Abteilung, Seriennummer, `tagCode` in JetBrains Mono - [ ] Abschnitt „Zugewiesen": alle Läufe zu diesem Gerät in `OFFEN` und `IN_ARBEIT` mit Fortschritt, Zuweisung und Fälligkeit, Knopf „Starten" bzw. „Weiter" - [ ] Abschnitt „Schnellstart": Vorlagen aus `GeraetetypVorlage` für diesen Gerätetyp, ein Tipp startet den Lauf mit vorbelegtem Gerät und Besitzer - [ ] Abschnitt „Vorlage zuweisen": Vorlage wählen, optional Techniker und Fälligkeit, erzeugt einen Lauf in `OFFEN` - [ ] Abschnitt „Historie": abgeschlossene und archivierte Läufe chronologisch - [ ] QR-Erzeugung serverseitig als SVG mit `qrcode`, Fehlerkorrektur M, Inhalt ausschließlich `{APP_URL}/t/{tagCode}`, keine Personendaten, keine externe API - [ ] Etikettendruck mit Print-CSS in zwei Layouts: Etikettendrucker 62 × 29 mm (ein Etikett pro Seite) und A4-Bogen 3 × 8 à 70 × 37 mm; je Etikett QR, `tagCode` lesbar darunter, optional Hostname und Besitzer, kleines Laufzettel-Logo; immer hell - [ ] Im Modus `DIENSTLEISTUNG` zeigt das Etikett zusätzlich das Kundenkürzel, im Modus `INTERN` nie - [ ] Knopf „Etikett drucken" auf der Geräteseite, Stapeldruck für unregistrierte Tags - [ ] „Scannen" in der App: `barcode-detector` (native BarcodeDetector-API mit Polyfill-Fallback), Kamera im Browser, direkter Sprung zur Geräteseite - [ ] Screenshots Geräteseite Handy, Registrierformular, Etikett 62 × 29, A4-Bogen, Scanner in `docs/screenshots/m9/` ## Akzeptanzkriterien - [ ] Test: `/t/LZ-7K3F9Q` ohne Anmeldung leitet zum Login und danach auf die Geräteseite von `PC-001` - [ ] Test: „Vorlage zuweisen" erzeugt einen Lauf in `OFFEN`, der unter „Zugewiesen" erscheint; „Starten" öffnet ihn und setzt `IN_ARBEIT` - [ ] Test: unregistrierter Tag führt zum Registrierformular, danach zur Geräteseite; unbekannter Tag zeigt den Hinweis - [ ] Test: mehrere Zuweisungen je Gerät sind gleichzeitig möglich - [ ] Test: der QR-Inhalt ist genau `{APP_URL}/t/{tagCode}` und enthält keine Personendaten - [ ] Test: ein bei 300 dpi gerastertes 62 × 29-mm-Etikett wird von einem QR-Decoder korrekt zurückgelesen - [ ] Beide Druckbilder sind sauber, ohne Sidebar, ohne dunkle Flächen, ohne abgeschnittene Etiketten - [ ] Die Geräteseite ist bei 390 px ohne horizontales Scrollen bedienbar --- Quelle: `docs/issues/014-qr-tags-geraeteseite.md` — dort gepflegt, hierher gespiegelt.
florian.wilde added this to the v0.1.0 milestone 2026-09-24 20:44:43 +00:00
florian.wilde added the phase-1backendfrontend labels 2026-09-24 20:44:43 +00:00
Sign in to join this conversation.