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 +
|
||||
|
||||
---
|
||||
## 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).
|
||||
- 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 (~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