ADR-0058: Anzeigemuster (Display pattern) für Entitäts-Labels
Kontext
Datensatzlisten und Relationsfelder zeigten oft den Kind-Code, ein einzelnes Namensfeld oder die UUID. Nutzer brauchen ein Anzeigemuster je Entität: Felder mit Präfix, Suffix und Trenner, optional nur wenn verschachtelte Und/Oder/Nicht-Bedingungen zutreffen.
Entscheidung
- JSONB
display_patternaufentity_kindsundcheckout_entity_kinds({ "parts": [...] }). Jeder Teil:field_code,prefix,suffix,separator, optionaleswhen(Bedingungsgruppe). - Auswertung serverseitig für
EntityRecordOut.labelundsearch_text. Ohne Treffer: bisherige Namensheuristik, sonstnull(UI zeigt die Datensatz-ID). - Web-UI: Icon am Dialog Entität bearbeiten; Muster gilt nach Katalog-Speichern. Relationsfelder: Autocomplete über Label, sonst ID.
| Gate | Recommendation | Why it fits here | Rejected alternative and why |
|---|---|---|---|
| Speicherort | Kind-JSONB | Ein Muster pro Entität, Checkout wie andere Kind-Metadaten | Spalte je Feld — Label ist kein Feldwert |
| Auswertung | Server | Listen, Suche und Picker bleiben konsistent | Nur Frontend — API-Clients sähen UUIDs |
| Bedingungen | nested And/Or/Not | Gleiche Semantik wie der Editor | Ein flaches Flag — zu wenig für Alias/Typ |
Begründung
Das Label ist Katalog-Vertrag, nicht Record-Inhalt. JSONB hält Verschachtelung ohne Extra-Tabellen; Checkout kopiert die Spalte mit.
Folgen
- Alembic public
0040_kind_display_pattern/ Tenant0025_kind_display_pattern. POST/PUT/entity-kindstragendisplay_pattern;GET /entities?q=sucht auch in zusammengesetztem Label und Record-ID.