Karte 10: Test-Label-Skript + Druck-/Scan-Testcheckliste
CI / backend-tests (push) Successful in 1m3s
CI / frontend-build (push) Successful in 56s

Label-Druck-Test mit echten Geräten ist ein physischer Schritt, nicht per
Code erledigbar. Stattdessen: scripts/test_label_erzeugen.py erzeugt lokal
ein Test-PDF ohne DB-Verbindung, Karte 10 um 5-Schritt-Checkliste ergänzt.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CVgbozhYmuEhiEJHffRXCV
This commit is contained in:
2026-09-04 18:01:36 +02:00
co-authored by Claude Sonnet 5
parent 66757e4cd6
commit 7f06d1cecc
3 changed files with 81 additions and 0 deletions
+32
View File
@@ -2623,3 +2623,35 @@ Keine Commits in dieser Session.
- flutter_app/pubspec.yaml | 1 +
---
## 2026-09-04 17:59 17:59 (0m)
**Beschreibung:** Claude Code Session
**Projekt:** backend
### Commits
- 66757e4 Karte 10: Code128-Label als PDF (Objekt + Geräte-Exemplar)
### Geänderte Dateien
- DEVLOG.md | 16 +++++++++
- backend/DEVLOG.md | 16 +++++++++
- backend/app/api/v1/endpoints/objekte.py | 40 ++++++++++++++++++++++-
- backend/app/services/label.py | 57 +++++++++++++++++++++++++++++++++
- backend/pyproject.toml | 2 ++
- backend/tests/test_objekte.py | 49 ++++++++++++++++++++++++++++
---
## 2026-09-04 18:00 18:01 (1m)
**Beschreibung:** Claude Code Session
**Projekt:** asb-material
### Commits
Keine Commits in dieser Session.
### Geänderte Dateien
- DEVLOG.md | 16 +++++++++
- backend/DEVLOG.md | 16 +++++++++
- backend/app/api/v1/endpoints/objekte.py | 40 ++++++++++++++++++++++-
- backend/app/services/label.py | 57 +++++++++++++++++++++++++++++++++
- backend/pyproject.toml | 2 ++
- backend/tests/test_objekte.py | 49 ++++++++++++++++++++++++++++
---
+15
View File
@@ -25,3 +25,18 @@ QR/Barcode-Scan ist gewünschte spätere Funktion:
- Anforderungen an Label aus Einsatzumfeld: witterungsbeständig/abriebfest (Rucksäcke/Fahrzeuge im Rettungsdiensteinsatz), Kontrast/Größe für zuverlässigen Kamera-Scan (siehe oben).
- Klartext-Fallback auf Label empfohlen (Code + lesbare Objekt-ID), falls Scan mal ausfällt.
- Konkretes Layout/Material erst bei Umsetzung (Prompt 24) final festlegen, hier nur als Anforderung vermerkt.
## Umsetzungsstand (2026-09-04)
- Backend: `objektposition.code`-Feld, Lookup-/Vorschlag-Endpunkte, PDF-Label-Erzeugung (`app/services/label.py`) fertig.
- Frontend/Flutter: Kamera-Scan (Objekt-Code, Scan-First) fertig.
- **Offen: Label-Druck-Test mit echten Geräten** (physischer Schritt, nicht per Code erledigbar). Test-PDF erzeugen: `python -m scripts.test_label_erzeugen` im Backend-venv.
### Test-Checkliste (pro Labelgröße/-material einmal durchgehen)
1. Test-Label drucken (`test_label_erzeugen.py`, mind. eine Größe pro geplantes Labelformat).
2. Auf Ziel-Untergrund kleben/befestigen (Rucksack-Stoff, Fahrzeuglack o. Ä. reale Anbringung testen, nicht nur Tisch/Papier).
3. Mit jedem vorgesehenen Scan-Gerät testen (PWA im Handy-/Tablet-Browser, Flutter-App auf Android):
- Normalabstand (~1520 cm) und Winkel 0°
- Schräger Winkel (~30°)
- Schwaches Licht / Gegenlicht
4. Bei Fehlschlag: Modulbreite/Ruhezone in `_BARCODE_OPTIONEN` (`app/services/label.py`) erhöhen, neues Test-Label drucken, erneut testen.
5. Ergebnis (Gerät, Abstand/Winkel, Erfolg/Fehlschlag) hier oder in einer neuen Notiz festhalten, bevor Seriendruck freigegeben wird.
+34
View File
@@ -0,0 +1,34 @@
"""Test-Label-PDF für den Karte-10-Druck-/Scan-Test (keine DB-Verbindung nötig).
Deployment-Regel (Prompt 19): nur Skript-Datei hier, Ausführung auf Zielsystem
oder jeder Umgebung mit installierten Backend-Dependencies.
Aufruf (im aktivierten venv):
python -m scripts.test_label_erzeugen
python -m scripts.test_label_erzeugen --code RK-99999 --zusatz "Test-Rucksack"
"""
from __future__ import annotations
import argparse
from pathlib import Path
from app.services.label import generiere_code128_label_pdf
def main() -> None:
parser = argparse.ArgumentParser()
parser.add_argument("--code", default="TEST-00001")
parser.add_argument("--zusatz", default="Testobjekt Druck-/Scan-Check")
parser.add_argument("--ausgabe", default="test-label.pdf")
args = parser.parse_args()
pdf = generiere_code128_label_pdf(args.code, args.zusatz)
pfad = Path(args.ausgabe)
pfad.write_bytes(pdf)
print(f"Label geschrieben: {pfad.resolve()} (Code: {args.code})")
if __name__ == "__main__":
main()