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
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
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
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
/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/geraete/[id], handyoptimiert: Kopf mit Hostname bzw. Bezeichnung, Typ, Besitzer mit Abteilung, Seriennummer,tagCodein JetBrains MonoOFFENundIN_ARBEITmit Fortschritt, Zuweisung und Fälligkeit, Knopf „Starten" bzw. „Weiter"GeraetetypVorlagefür diesen Gerätetyp, ein Tipp startet den Lauf mit vorbelegtem Gerät und BesitzerOFFENqrcode, Fehlerkorrektur M, Inhalt ausschließlich{APP_URL}/t/{tagCode}, keine Personendaten, keine externe APItagCodelesbar darunter, optional Hostname und Besitzer, kleines Laufzettel-Logo; immer hellDIENSTLEISTUNGzeigt das Etikett zusätzlich das Kundenkürzel, im ModusINTERNniebarcode-detector(native BarcodeDetector-API mit Polyfill-Fallback), Kamera im Browser, direkter Sprung zur Geräteseitedocs/screenshots/m9/Akzeptanzkriterien
/t/LZ-7K3F9Qohne Anmeldung leitet zum Login und danach auf die Geräteseite vonPC-001OFFEN, der unter „Zugewiesen" erscheint; „Starten" öffnet ihn und setztIN_ARBEIT{APP_URL}/t/{tagCode}und enthält keine PersonendatenQuelle:
docs/issues/014-qr-tags-geraeteseite.md— dort gepflegt, hierher gespiegelt.