diff --git a/arbeitskacheln/02_identity.md b/arbeitskacheln/02_identity.md index 7b78863..e0eb87f 100644 --- a/arbeitskacheln/02_identity.md +++ b/arbeitskacheln/02_identity.md @@ -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 diff --git a/backend/app/services/label.py b/backend/app/services/label.py index ba06edd..61c300e 100644 --- a/backend/app/services/label.py +++ b/backend/app/services/label.py @@ -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()