Skip to content

feat(anleitung): Abhol-Seite mit Bürger- und Rollenträger-Spur - #77

Open
pseidler89-sudo wants to merge 1 commit into
mainfrom
feat/anleitung
Open

feat(anleitung): Abhol-Seite mit Bürger- und Rollenträger-Spur#77
pseidler89-sudo wants to merge 1 commit into
mainfrom
feat/anleitung

Conversation

@pseidler89-sudo

Copy link
Copy Markdown
Owner

Setzt die kleine Ausbaustufe aus docs/specs/TUTORIAL_KONZEPT_2026-08.md um (internes Repo). Owner-Entscheid 2026-08-06: zwei Dinge mit einem gemeinsamen Einstieg, Spuren öffentlich lesbar, klein anfangen.

Warum die Präsentation bleibt, wie sie ist

Das Deck unter app/public/praesentation/ ist unangetastet. Es ist statisches HTML, läuft ohne Netz und ohne JavaScript, druckt auf P und trägt Sprechnotizen — genau die Eigenschaften, die in einem Rathaus-Termin auf einem fremden Rechner zählen. Eine App-Fassung verlöre sie.

Konsolidiert wird deshalb am Einstieg, nicht am Artefakt: /anleitung verlinkt das Deck als eine von drei Möglichkeiten.

Der Einstieg fragt nach der Situation, nicht nach der Rolle

Ein Bürger denkt nicht „ich bin Rolle user". Drei Karten:

Karte Ziel
Ich möchte mitmachen /anleitung/mitmachen
Ich habe eine Aufgabe /anleitung/aufgaben (vier Anker-Abschnitte)
Ich will Partizip vorstellen /praesentation

Wer angemeldet ist und eine Rolle trägt, bekommt oben zusätzlich den direkten Weg in seinen Abschnitt (Rollen serverseitig über getUserRoleTypes). Ausgeloggt: kein DB-Zugriff, keine Weiterleitung.

Form: bewusst keine Folien

Ein Karussell ist zum Nachschlagen schlecht bedienbar, schlecht zitierbar und ein Problem für das a11y-Gate. Stattdessen: lange, druckbare Seiten, lückenlose h1→h2→h3 (dafür trägt SpurInhalt eine ebene-Prop), Nachschlag-Fragen als <details>, lesbar ohne JavaScript, @media print ergänzt.

Für super_admin gibt es bewusst keine öffentliche Spur — Betreiber-Wissen gehört in interne Runbooks, nicht in eine Anleitung.

Inhalte sind Daten, mit Beleg

Alle Texte liegen in anleitung-daten.ts, analog faq-daten.ts. Über jeder fachlichen Aussage steht die Belegstelle im Code als Kommentar — ändert sich der Code, ist die Fundstelle da, wo man sie braucht. Dazu Regeln im Kopf der Datei: keine Screens nachbauen, keine Knopf-Positionen beschreiben (veraltet bei jedem UI-Feinschliff), nicht duplizieren, was die FAQ schon sagt.

Drei Korrekturen gegenüber dem Konzept, alle am Code geprüft

  • Die Erinnerung vor Ablauf der Wohnsitz-Bestätigung kommt nach 60 Tagen, nicht 30 (DEFAULT_REVERIFY_WINDOW_DAYS = 60) — der Default-Kommentar im Skript sagt etwas anderes.
  • Der KI-Neutralitäts-Check gehört zur Administration und gated Abstimmungen, nicht Digests (pollStatusEnum.in_pruefung).
  • „Ergebnisse erst nach Ende" gilt nur für die Aufschlüsselung; Gesamtzahlen laufen mit.

Weggelassen, weil am Code nicht bestätigt

Der „6-stellige Code aus derselben Mail" (mail.ts verschickt nur einen Link, /anmelden hat kein Code-Feld) und die Benachrichtigung bei Rollenänderung (role-actions.ts versendet keine Mail). Beides ist als Lücke im Konzept vermerkt statt hier erfunden.

Die 2FA-Details tragen TODO(#59) — der Block ist noch nicht gemergt. Der Abschnitt nennt nur den heutigen Stand.

Einstieg verlinkt

Footer (der einzige dauerhafte Ort — die Landing verschwindet mit dem Region-Cookie), FAQ-Kopf, und als Text-Link unter /aufgaben. Dort bewusst keine Kachel: aufgabenKacheln spiegelt exakt die Server-Guards, eine rechtefreie Kachel würde die in kacheln.test.ts abgesicherte Invariante aufweichen.

Geprüft

npm run lint (--max-warnings 0, a11y-Gate), npm run typecheck, npm run build und 12 neue Tests auf die Datenstruktur — alle grün, unabhängig nachgefahren.

Bekannte Grenze: Die neuen Seiten sind noch nicht in .pa11yci.js aufgenommen; das a11y-Gate prüft sie also noch nicht automatisch. Das gehört zum offenen Punkt „a11y-Gate ausweiten" aus STATUS.md.

🤖 Generated with Claude Code

https://claude.ai/code/session_018YNj1kkesDywuEGvNweBHM

Setzt die kleine Ausbaustufe aus docs/specs/TUTORIAL_KONZEPT_2026-08.md um.

Die Präsentation bleibt unangetastet. Sie ist statisches HTML, laeuft ohne Netz
und ohne JavaScript und traegt Sprechnotizen — genau die Eigenschaften, die in
einem Rathaus-Termin auf einem fremden Rechner zaehlen und die eine App-Fassung
verlieren wuerde. Konsolidiert wird am EINSTIEG, nicht am Artefakt.

/anleitung fragt nach der SITUATION, nicht nach der Rolle: Ein Buerger denkt
nicht "ich bin Rolle user". Drei Karten — mitmachen, eine Aufgabe haben,
Partizip vorstellen. Wer angemeldet ist und eine Rolle traegt, bekommt oben
zusaetzlich den direkten Weg in seinen Abschnitt.

Bewusst KEINE Folienmechanik fuer die Anleitung: Ein Karussell ist zum
Nachschlagen schlecht bedienbar, schlecht zitierbar und ein Problem fuer das
a11y-Gate. Stattdessen lange, druckbare Seiten, lueckenlose h1→h2→h3, Nachschlag
per <details>, lesbar ohne JavaScript.

Fuer super_admin gibt es bewusst keine oeffentliche Spur — Betreiber-Wissen
gehoert in interne Runbooks, nicht in eine Anleitung.

Texte liegen als Daten in anleitung-daten.ts, jede fachliche Aussage mit
Belegstelle im Code als Kommentar. Drei Korrekturen gegenueber dem Konzept, alle
am Code geprueft: die Erinnerung vor Ablauf kommt nach 60 Tagen (nicht 30), der
KI-Neutralitaets-Check gated Abstimmungen und nicht Digests, und
"Ergebnisse erst nach Ende" gilt nur fuer die Aufschluesselung.

Weggelassen, weil am Code nicht bestaetigt: der "6-stellige Code aus derselben
Mail" (mail.ts verschickt nur einen Link), die Benachrichtigung bei
Rollenaenderung (role-actions.ts versendet keine Mail). Die 2FA-Details tragen
TODO(#59) — der Block ist noch nicht gemergt.

Einstieg im Footer (einziger dauerhafter Ort — die Landing verschwindet mit dem
Region-Cookie), im FAQ-Kopf und als Text-Link unter /aufgaben. Bewusst KEINE
Aufgaben-Kachel: aufgabenKacheln spiegelt exakt die Server-Guards, eine
rechtefreie Kachel wuerde diese Invariante aufweichen.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018YNj1kkesDywuEGvNweBHM
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant