{#- **Die BREITE Spalte steht links, die Angaben rechts** — die Regel
dazu steht in `docs/gestaltung.md`: Wo die grosse Fläche eine
Arbeitsfläche ist (Verlauf, Antwortfeld), steht sie links; nur wo
sie ein Dokument ist, steht sie rechts. Bis zum 05.09.2026 war es
hier umgekehrt und damit gespiegelt zum Backoffice-Ticket, das
denselben Vorgang zeigt.
Die Beschreibung gehört in diese Spalte, weil sie bis 10 000
Zeichen lang sein darf; in der 22 rem schmalen Nebenspalte stünde
sie mehrere Bildschirme hoch. Die Eckwerte dort bleiben, was sie
sind: kurz. -#}
{#- **Im Kasten «Ihre Meldung» steht, was SIE geschrieben haben.** Der
«Stand der Dinge» stand bis zum 05.09.2026 hier ganz oben — vor dem
eigenen Text. Der Laientest desselben Tages: «Im Kasten ‹Ihre
Meldung› erwarte ich meinen Text, nicht die Antwort der
Verwaltung.»
**Und er ist ganz weg, nicht bloss verschoben.** Der Stand IST der
neueste Statuseintrag des Verlaufs; die API liefert ihn zweimal,
einmal als eigenes Feld und einmal in `kommentare`. Ihn über den
Verlauf zu setzen hätte denselben Satz zweimal untereinander
gezeigt — was der Laientest auch so gemeldet hat (Code-Review
05.09.2026). Im Verlauf trägt er seine Statuskapsel und ist damit
auffindbar.
**`stand.html` ist weggefallen** (10.09.2026): Die Datei gibt es
nicht mehr. Beide Seiten zeigen die ganze Statusgeschichte
(`bausteine/statusverlauf.html`), hier in der rechten Spalte, auf
`/v` als eigene Karte. Der Satz darüber, `/v` benutze den Stand
weiter, stimmte danach nicht mehr und ist im Code-Review desselben
Tages aufgefallen.
**Ohne Beschreibung und ohne Anhang gibt es den Kasten nicht.**
Beides ist freiwillig; übrig bliebe sonst eine Überschrift über
nichts. -#}
{%- if m.get('beschreibung') or m.get('anhaenge') %}
{#- **Dasselbe Zeichen wie der Verlauf darunter, und das ist hier
richtig.** Beide Kästen gehören zu einer Sache: Ihr Text und was
daraus wurde. Der Unterschied steht in der Überschrift, nicht im
Zeichen. Anders als in der rechten Spalte, wo das Zeichen eine
eigene Kategorie behauptet hätte (siehe dort). -#}
{%- call b.kasten("Ihre Meldung", klasse="bereichskarte", icon="sprechblase") %}
{%+ if m.get('beschreibung') %}
{{ m.get('beschreibung')|formatiert }}
{% endif +%}
{#- **Die Dateien stehen als Vorschau da, nicht als Aufzählung.** Bis
zum 10.09.2026 war das eine Zeile mit Verweisen, und jeder Verweis
lud herunter; der Befund des Auftraggebers war entsprechend: «Jetzt muss ich diese
herunterladen.» Derselbe Baustein wie auf der Verfolgungsseite. -#}
{%+ if m.get('anhaenge') %}{% with dateien = m.anhaenge,
dateien_basis = "/b/meldung/" ~ (m.get('id', '')|pfadteil) ~ "/anhang" %}{% include "bausteine/dateiliste.html" %}{% endwith %}{% endif +%}
{%- endcall %}
{%- endif %}
{#- **Derselbe Strang wie auf der Verfolgungsseite** (`bausteine/strang.html`),
seit dem 10.09.2026. Vorher setzte diese Seite ihn selbst zusammen und
bekam fertiges Markup durchgereicht; der EINTRAG war schon geteilt, die
Hülle darum nicht. Reihenfolge, Schwelle und Filter hätten sonst
zweimal gebaut werden müssen. -#}
{%- call b.kasten("Verlauf", verlauf_gesamt if verlauf_gesamt else "",
klasse="bereichskarte", icon="sprechblase") %}
{% include "bausteine/strang.html" %}
{%- endcall %}
{#- **Antworten UNTER dem Verlauf.** Die Reihenfolge muss auf BEIDEN
Seiten dieselbe sein — der Code-Review vom 10.09.2026 hat gemessen,
dass sie es einmal nicht war. -#}
{%- call b.kasten("Antworten", klasse="bereichskarte", icon="pfeil") %}
{% include "bausteine/antwortformular.html" %}
{%- endcall %}
{#- **Ohne Zeichen.** Es trug `werkzeug`, dasselbe, das jetzt die
Meldung selbst trägt, und beide stehen nebeneinander. Von den
beiden gehört es der Meldung: Die rechte Spalte ist der Rand des
Vorgangs, keine eigene Sache, und ein Zeichen dort behauptet eine
Kategorie, die es nicht gibt. -#}
{#- **Was hier steht, beantwortet Fragen, die man sonst durch Scrollen
beantwortet** (Vorgabe des Auftraggebers, 10.09.2026: «hätten bei Angaben zur
Meldung nicht noch mehr Angaben Platz, die für den Nutzer hilfreich
sind?»). Vier kamen dazu: Ort und Einheit sagen, WORUM es geht;
«Zuletzt» beantwortet «kümmert sich jemand?»; und die Zahl der
Nachrichten und Dateien sagt, was einen im Verlauf erwartet, bevor
man hineingeht.
Jede Zeile steht nur, wenn sie etwas trägt. Ein «Zuständig: —» ist
keine Auskunft, sondern eine Zeile. -#}
{%- call b.kasten("Angaben zur Meldung", klasse="bereichskarte") %}
{%- if m.get('nummer') %}- Nummer
- {{ m.nummer }}
{% endif %}
{%- if status %}- Status
- {{ b.kapsel(status, statuston) }}
{% endif %}
{%- if m.get('bearbeiter_vorname') %}- Zuständig
- {{ m.bearbeiter_vorname }}
{% endif %}
{%- if m.get('liegenschaft') %}- Liegenschaft
- {{ m.liegenschaft }}
{% endif %}
{%- if m.get('einheit') %}- Einheit
- {{ m.einheit }}
{% endif %}
{%- if erfasst %}- Eingegangen
- {{ erfasst }}
{% endif %}
{#- **«Letzte Rückmeldung» und nicht «Zuletzt».** Das Feld misst,
wann jemand zuletzt GESCHRIEBEN hat; ein Statuswechsel ohne
Statusmeldung schreibt keine Zeile und wäre darin nicht
enthalten. Eine kleinere, wahre Auskunft schlägt eine grössere,
die manchmal lügt (Code-Review 10.09.2026). Ohne Rückmeldung
entfällt die Zeile. -#}
{%- if rueckmeldung %}- Letzte Rückmeldung
- {{ rueckmeldung }}
{% endif %}
{#- `or []` ist kein Zierrat: `m.get(...)` liefert `None`, wenn das
Feld fehlt, und `|length` bricht darauf ab. Der Fall tritt ein,
solange irgendwo eine ältere Antwort im Umlauf ist. -#}
{%- set n = (m.get('kommentare') or [])|length %}
{%- set d = (m.get('anhaenge') or [])|length %}
{#- **«0 Nachrichten» wird nicht geschrieben.** Eine Meldung kann
Zustandswechsel und eine Datei haben und trotzdem kein Gespräch;
dann stand dort «0 Nachrichten · 1 Datei» (Code-Review
10.09.2026). Was null ist, fällt weg. -#}
{%- if n or d %}- Umfang
-
{%- if n %}{{ n }} {{ "Nachricht" if n == 1 else "Nachrichten" }}{% endif -%}
{%- if n and d %} · {% endif -%}
{%- if d %}{{ d }} {{ "Datei" if d == 1 else "Dateien" }}{% endif -%}
{% endif %}
{%- endcall %}
{#- Die Statusgeschichte steht in der RECHTEN Spalte (Vorschlag des Auftraggebers,
10.09.2026) und nicht mehr im Verlauf: Der Verlauf in der Mitte ist
damit reines Gespräch. Ohne Zustandswechsel gibt es die Karte
nicht — eine Überschrift über nichts ist schlechter als keine. -#}
{#- `statusverlauf` kommt aus dem Kontext und NICHT aus `m`, weil
`_verlauf_aufbereiten` die Liste normalisiert (fehlendes Feld wird
eine leere Liste). GEFILTERT wird sie ausdrücklich nicht — der
Filter gehört zur Verlaufskarte, siehe die Begründung dort. -#}
{%- if statusverlauf %}
{%- call b.kasten("Was bisher geschah", statusverlauf|length,
klasse="bereichskarte") %}
{% include "bausteine/statusverlauf.html" %}
{%- endcall %}
{%- endif %}