Karte 10: Test-Label-Skript + Druck-/Scan-Testcheckliste
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:
@@ -2623,3 +2623,35 @@ Keine Commits in dieser Session.
|
|||||||
- flutter_app/pubspec.yaml | 1 +
|
- 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 ++++++++++++++++++++++++++++
|
||||||
|
|
||||||
|
---
|
||||||
|
|||||||
@@ -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).
|
- 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.
|
- 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.
|
- 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 (~15–20 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.
|
||||||
|
|||||||
@@ -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()
|
||||||
Reference in New Issue
Block a user