fix(identity): Label-Design vergrößert (QR + Name)
CI / backend-tests (push) Successful in 3m14s
CI / frontend-build (push) Successful in 20s

Nutzer-Feedback: QR-Code (25mm) und Klartext-Name (9pt) auf gedruckten
Etiketten waren zu klein. QR-Zielgröße auf 38mm, Klartext-Zeile auf
13pt fett angehoben - gilt für Code128- und QR-Label gleichermaßen.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CVgbozhYmuEhiEJHffRXCV
This commit is contained in:
patrickandClaude Sonnet 5 committed 2026-09-10 20:02:46 +02:00
1 parent 536b2edc4d
commit aceef65418
2 files changed
+20 -8

No files matched your search

+7
View File
@@ -134,6 +134,13 @@ siehe `00_index.md`-Tabelle.
- **Akzeptanzkriterien:** PDF enthält scanbaren QR + korrekten Klartext.
- **Tests:** Label-Erzeugungstest (Snapshot/Struktur, nicht Pixel).
- **DoD:** auf echtem Etikettendrucker test-gedruckt und scanbar.
**Update 2026-09-10 (Nutzer-Feedback):** QR-Zielgröße und Klartext-Name auf
dem Label waren zu klein — `app/services/label.py` angepasst: QR-Zielgröße
25mm → 38mm (`_QR_ZIELGROESSE`, Mindestbreite 30mm → 45mm), Klartext-Zeile
(Objekt-/Materialname) 9pt normal → 13pt fett (`_ZUSATZ_SCHRIFTGROESSE`,
gilt für Code128- UND QR-Label gleichermaßen). Nicht auf echtem Drucker
verifiziert (kein Drucker/Browser-Tool in dieser Umgebung verfügbar) —
Nutzer bittet um erneuten Blick nach dem nächsten Testdruck.
## IDENT-008 — QR-Scan → Akte öffnen
+13 -8
View File
@@ -25,6 +25,11 @@ _BARCODE_OPTIONEN = {
}
_RAND = 5 * mm
_MINDESTBREITE = 60 * mm
# Nutzer-Feedback 2026-09-10: QR-Code UND Klartext-Zeile waren zu klein zum
# bequemen Scannen/Lesen aus etwas Abstand (z.B. Fahrzeug-Kennzeichnung) -
# deutlich vergrößert statt nur leicht.
_ZUSATZ_SCHRIFTGROESSE = 13
_ZUSATZ_ZEILENHOEHE = 20
def generiere_code128_label_pdf(code: str, klartext_zusatz: str | None = None) -> bytes:
@@ -41,7 +46,7 @@ def generiere_code128_label_pdf(code: str, klartext_zusatz: str | None = None) -
hoehe_pt = bild.height / dpi * 72
label_breite = max(breite_pt + 2 * _RAND, _MINDESTBREITE)
zusatz_hoehe = 14 if klartext_zusatz else 0
zusatz_hoehe = _ZUSATZ_ZEILENHOEHE if klartext_zusatz else 0
label_hoehe = hoehe_pt + zusatz_hoehe + 2 * _RAND
pdf_puffer = io.BytesIO()
@@ -52,16 +57,16 @@ def generiere_code128_label_pdf(code: str, klartext_zusatz: str | None = None) -
c.drawImage(ImageReader(barcode_puffer), bild_x, bild_y, width=breite_pt, height=hoehe_pt)
if klartext_zusatz:
c.setFont("Helvetica", 9)
c.drawCentredString(label_breite / 2, _RAND - 2, klartext_zusatz)
c.setFont("Helvetica-Bold", _ZUSATZ_SCHRIFTGROESSE)
c.drawCentredString(label_breite / 2, _RAND, klartext_zusatz)
c.showPage()
c.save()
return pdf_puffer.getvalue()
_QR_ZIELGROESSE = 25 * mm
_QR_MINDESTBREITE = 30 * mm
_QR_ZIELGROESSE = 38 * mm
_QR_MINDESTBREITE = 45 * mm
def generiere_qr_label_pdf(code: str, klartext_zusatz: str | None = None) -> bytes:
@@ -81,7 +86,7 @@ def generiere_qr_label_pdf(code: str, klartext_zusatz: str | None = None) -> byt
zeichnung.add(qr_code)
label_breite = max(qr_breite_pt + 2 * _RAND, _QR_MINDESTBREITE)
zusatz_hoehe = 14 if klartext_zusatz else 0
zusatz_hoehe = _ZUSATZ_ZEILENHOEHE if klartext_zusatz else 0
label_hoehe = qr_hoehe_pt + zusatz_hoehe + 2 * _RAND
pdf_puffer = io.BytesIO()
@@ -91,8 +96,8 @@ def generiere_qr_label_pdf(code: str, klartext_zusatz: str | None = None) -> byt
renderPDF.draw(zeichnung, c, zeichnung_x, zeichnung_y)
if klartext_zusatz:
c.setFont("Helvetica", 9)
c.drawCentredString(label_breite / 2, _RAND - 2, klartext_zusatz)
c.setFont("Helvetica-Bold", _ZUSATZ_SCHRIFTGROESSE)
c.drawCentredString(label_breite / 2, _RAND, klartext_zusatz)
c.showPage()
c.save()