fix(identity): Label-Design vergrößert (QR + Name)
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:
1 parent
536b2edc4d
commit
aceef65418
2 files changed
+20
-8
No files matched your search
@@ -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
|
||||
|
||||
|
||||
@@ -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()
|
||||
|
||||
Reference in new issue
Block a user