Kontext
Phase 1k.1a hat die TAPE_GEOMETRY-Tabelle in backend/app/schemas/tape_geometry.py eingeführt — aktuell mit 7 Einträgen, alle aus der PT-Series (Brother P-touch TZe-Tapes): 3.5mm, 6mm, 9mm, 12mm, 18mm, 24mm sowie die Samla-Sondergrößen.
Die QL-Series (Brother QL820NWB, DK-Endlos-Etiketten) wurde in Phase 1k.1a bewusst out-of-scope gelassen, weil sie nicht laminiert ist, nur 62mm Endlos-Default braucht und andere Druckmechanik nutzt (Endlos statt geschnitten).
Auslöser
Im Rahmen von Phase 1k.1b (Hangar API-Migration) wurde festgestellt: die Category Samla (heute aktiv im Hangar-Generator print_ql820.go als Samla-Stirntag + Samla-Deckel-Tag) braucht eine TAPE_GEOMETRY-Entry für QL820 62mm. Ohne Geometry-Entry:
- Hub rendert keine Preview für QL820-Templates
LayoutEngine.render() schlägt mit UnsupportedTapeError fehl
- Hangar-Category
Samla ist nicht mehr druckbar
Workaround in Phase 1k.1b: Samla wird strukturell migriert (template_id → content_type), nutzt aber weiter die existierenden Render-Pfade samla-stirntag-62mm/samla-deckel-62mm. Hub-Erweiterung um 62mm steht noch aus.
Faktencheck-Korrektur (2026-06-06)
Frühere Annahme: Möbel-Hauptschild AK läuft auf QL820 62mm. Das war falsch.
Verifikation gegen Live-YAML /docker/stacks/hangar-print-hub/config/hub-layouts.yaml auf hhdocker03:
| Category |
Live-Printer |
Live-Tape |
| Möbel-Hauptschild AK |
brother-p750w |
hangar-furniture-18mm |
| Möbel-Hauptschild VK |
brother-p750w |
hangar-furniture-18mm |
| Samla-Deckel-Tag |
brother-ql820nwb |
samla-deckel-62mm |
| Samla-Stirntag |
brother-ql820nwb |
samla-stirntag-62mm |
Möbel-Hauptschild AK ist nicht auf QL820 — der Cut für Phase 1k.1e betrifft nur die Samla-Category. AK wird in Phase 1k.1b normal auf qr_two_lines (P750W 18mm) migriert.
Zu klärende Fragen
-
Welche QL-DK-Größen sind relevant?
- DK-22205 (62mm Endlos, weiß) — primärer Use-Case für Samla
- DK-22113 (62mm Endlos, transparent)
- DK-11201 (29×90mm Address)
- DK-11209 (29×62mm Standard Address)
- Weitere?
-
Endlos-Etiketten ContentType:
- QL-Tapes haben keine feste Länge (im Gegensatz zu PT).
qr_with_listing mit dynamischer Länge ist der naheliegende Use-Case für 62mm Endlos. Wie passt das in das tape-unabhängige Layout-Engine-Modell?
- Braucht es einen neuen
ContentType (z.B. qr_endless)?
- Oder erweitern wir bestehende ContentTypes um endlos-Variante?
- Heutige Samla-Templates:
samla-stirntag-62mm (qr+text) und samla-deckel-62mm (qr+text+secondary[0]) — beide passen auf qr_two_lines bzw. qr_three_lines nach einer 62mm-Geometry-Erweiterung.
-
Druckbreite vs. physische Tape-Breite:
- QL820 62mm hat ~58mm bedruckbare Höhe (Marge)
- DPI: 300 (vs. PT-P750W 180dpi)
- Endlos-Länge: variabel
-
Hangar-Integration:
Samla-Category wird in 1k.1b als unified Eintrag (Stirntag + Deckel) migriert
- Eventuell neue Use-Cases: Adressetiketten, Versandlabel, größere QR-Codes (1k.1e Folge-Scope)
Implementation-Skizze
# backend/app/schemas/tape_geometry.py — Erweiterung
TAPE_GEOMETRY: dict[int, TapeGeometry] = {
# ... bestehende PT-Series ...
62: TapeGeometry(
tape_mm=62,
print_width_px=696, # 58mm bei 300dpi
dpi=300,
printer_series="QL",
is_endless=True, # NEU
# ...
),
}
Mögliche neue Felder im TapeGeometry:
printer_series: Literal["PT", "QL"]
is_endless: bool
max_length_mm: int | None (für endlos = None, sonst feste Länge)
Abhängigkeiten
- Phase 1k.1b (Hangar API-Migration) muss gemerged sein
- Brother QL820NWB physisch verfügbar für Hardware-Smoke-Test
- DK-Tape-Sortiment im HomeLab vorhanden (DK-22205 für Samla bestätigt)
DoD (vorläufig)
Referenzen
Priorität
Niedrig — Samla ist der einzige produktive QL820-Use-Case. In 1k.1b wird Samla strukturell auf content_type migriert, nutzt aber weiter den Legacy-Template-Pfad (samla-*-62mm). Hub-Geometry-Erweiterung blockiert nichts Akutes, aber ohne sie kann Samla nicht über LayoutEngine gerendert werden.
Kontext
Phase 1k.1a hat die
TAPE_GEOMETRY-Tabelle inbackend/app/schemas/tape_geometry.pyeingeführt — aktuell mit 7 Einträgen, alle aus der PT-Series (Brother P-touch TZe-Tapes): 3.5mm, 6mm, 9mm, 12mm, 18mm, 24mm sowie die Samla-Sondergrößen.Die QL-Series (Brother QL820NWB, DK-Endlos-Etiketten) wurde in Phase 1k.1a bewusst out-of-scope gelassen, weil sie nicht laminiert ist, nur 62mm Endlos-Default braucht und andere Druckmechanik nutzt (Endlos statt geschnitten).
Auslöser
Im Rahmen von Phase 1k.1b (Hangar API-Migration) wurde festgestellt: die Category
Samla(heute aktiv im Hangar-Generatorprint_ql820.goalsSamla-Stirntag+Samla-Deckel-Tag) braucht eineTAPE_GEOMETRY-Entry für QL820 62mm. Ohne Geometry-Entry:LayoutEngine.render()schlägt mitUnsupportedTapeErrorfehlSamlaist nicht mehr druckbarWorkaround in Phase 1k.1b:
Samlawird strukturell migriert (template_id→content_type), nutzt aber weiter die existierenden Render-Pfadesamla-stirntag-62mm/samla-deckel-62mm. Hub-Erweiterung um 62mm steht noch aus.Faktencheck-Korrektur (2026-06-06)
Frühere Annahme:
Möbel-Hauptschild AKläuft auf QL820 62mm. Das war falsch.Verifikation gegen Live-YAML
/docker/stacks/hangar-print-hub/config/hub-layouts.yamlauf hhdocker03:Möbel-Hauptschild AKist nicht auf QL820 — der Cut für Phase 1k.1e betrifft nur dieSamla-Category. AK wird in Phase 1k.1b normal aufqr_two_lines(P750W 18mm) migriert.Zu klärende Fragen
Welche QL-DK-Größen sind relevant?
Endlos-Etiketten ContentType:
qr_with_listingmit dynamischer Länge ist der naheliegende Use-Case für 62mm Endlos. Wie passt das in das tape-unabhängige Layout-Engine-Modell?ContentType(z.B.qr_endless)?samla-stirntag-62mm(qr+text) undsamla-deckel-62mm(qr+text+secondary[0]) — beide passen aufqr_two_linesbzw.qr_three_linesnach einer 62mm-Geometry-Erweiterung.Druckbreite vs. physische Tape-Breite:
Hangar-Integration:
Samla-Category wird in 1k.1b als unified Eintrag (Stirntag + Deckel) migriertImplementation-Skizze
Mögliche neue Felder im
TapeGeometry:printer_series: Literal["PT", "QL"]is_endless: boolmax_length_mm: int | None(für endlos = None, sonst feste Länge)Abhängigkeiten
DoD (vorläufig)
brainstorming+writing-plans)TapeGeometry-Schema um QL-Felder erweitertTAPE_GEOMETRYum mindestens 62mm DK-22205 ergänztLayoutEngine.render()rendert QL-Use-Cases (mindestensqr_two_lines62mm für Samla)example-layouts.yamlSamla-Category geht über LayoutEngine statt Legacy-Template-PfadReferenzen
Priorität
Niedrig —
Samlaist der einzige produktive QL820-Use-Case. In 1k.1b wird Samla strukturell aufcontent_typemigriert, nutzt aber weiter den Legacy-Template-Pfad (samla-*-62mm). Hub-Geometry-Erweiterung blockiert nichts Akutes, aber ohne sie kann Samla nicht über LayoutEngine gerendert werden.