Skip to content

feat(ui): stepper-flow met progressieve onthulling (3 stappen) (#19)#55

Merged
StevenRamondt merged 3 commits into
mainfrom
feat/19-stepper-flow
Jun 17, 2026
Merged

feat(ui): stepper-flow met progressieve onthulling (3 stappen) (#19)#55
StevenRamondt merged 3 commits into
mainfrom
feat/19-stepper-flow

Conversation

@StevenRamondt

@StevenRamondt StevenRamondt commented Jun 17, 2026

Copy link
Copy Markdown
Contributor

Wat

Golf 3, deel 1 van het UX-traject. De app was één lange scrollpagina; beide gebruikerstests toonden dat mensen stappen oversloegen en niet wisten hoeveel er nog volgde.

#19 — Stepper + progressieve onthulling (3 stappen)

  • Nieuw ui/stepper.py: horizontale voortgangsbalk — ① Data laden → ② Genereren → ③ Resultaten. Npuls-blauw = actief, groen ✓ = voltooid, grijs = toekomstig.
  • app.py onthult de stappen via een wizard (st.container + st.stop-gating) met Vorige/Volgende.
  • Stap 2 (Genereren) bevat kolomtypes + synthesizer-instellingen als optionele verfijning + de Genereer-knop. Bij demo- of schone data klik je meteen op Genereer; twijfelachtige type-suggesties (<90%, uit ux: "Pas alle aanbevelingen toe" negeert confidence — past ook onzekere suggesties (65%) blind toe #48) komen vanzelf bovenaan te staan als vangnet.
  • Na generatie blijven alle secties zichtbaar → instellingen aanpassen + opnieuw genereren blijft werken.

Waarom 3 en niet 5

Een eerdere opzet had 5 stappen (Data → Kolomtypes → Synthesizer → Genereren → Resultaten). Bij demo- en schone data deed de gebruiker in Kolomtypes en Synthesizer niets — die verplichte klikken waren puur excise en maakten de snelle route trager. Samengevoegd tot één Genereren-stap.

Ontwerp (ui-designer / ISGVO)

ui-designer-skill expliciet gedraaid. Probleem = oriëntatieverlies (Norman: uitvoeringskloof) + overweldiging (Miller); stepper = Zeigarnik. Navigatie via echte Vorige/Volgende-knoppen (Streamlit kan niet naar een sectie scrollen → klikbare balk zou nep-affordance zijn).

Streamlit-constraint

st.expander mag niet genest worden en de config-functies maken zelf expanders → stap-wrappers zijn st.container(border=True).

Tests & verificatie

  • Unit-tests voor step_status + labels.
  • Streamlit AppTest: volledige happy path (demo → Volgende → Genereer → resultaten met 3 tabs + succesmelding) zonder exceptions.
  • Volledige suite: 93 passed. ruff schoon.

Docs

  • docs/aan-de-slag.md: 3-staps flow beschreven.

Closes #19

#19: de app was één lange scrollpagina; testgebruikers verdwaalden.

- Nieuwe ui/stepper.py: horizontale voortgangsindicator (Npuls-blauw=actief,
  groen ✓=voltooid, grijs=toekomstig). Pure step_status-helper (getest).
- app.py onthult de stappen progressief via st.container + st.stop-gating:
  Data → Kolomtypes → Synthesizer → Genereren → Resultaten, met Vorige/Volgende.
  Na generatie tonen we alle secties zodat tweak + regenereren blijft werken.
- Containers i.p.v. expanders als stap-wrapper (expanders mogen niet nesten).

Geverifieerd met streamlit AppTest: volledige happy path (demo → genereren →
resultaten met 3 tabs) zonder exceptions.

Closes #19
…aten)

5 stappen bleek overkill: bij demo- en schone data deed de gebruiker niets in de
oude stappen Kolomtypes en Synthesizer — die verplichte klikken waren puur excise.

- Oude stap 2+3+4 samengevoegd tot één 'Genereren'-stap: kolomtypes en synthesizer
  zijn daar optionele verfijning (auto-detectie volstaat meestal); twijfelachtige
  type-suggesties komen vanzelf bovenaan. Resultaten = stap 3 (markeert het einde).
- Demo-pad is nu Data → Volgende → Genereer → Resultaten.
- Wizard-gating + Vorige/Volgende blijven; balk van 5 naar 3 labels.

Geverifieerd met AppTest: volledige happy path zonder exceptions.
@StevenRamondt StevenRamondt changed the title feat(ui): stepper + progressieve onthulling van de 5-stappen flow (#19) feat(ui): stepper-flow met progressieve onthulling (3 stappen) (#19) Jun 17, 2026
De gestapelde reveal voelde niet als een wizard (alle stappen bleven onder elkaar)
en resultaten markeerden het einde niet. Nu precies één stap zichtbaar:

- datasource.render() geeft None terug i.p.v. st.stop(); de app bewaart de gekozen
  dataset in session_state['src'] zodat stap 2/3 'm niet opnieuw tekenen.
- Stap 1 = data, stap 2 = genereren (kolomtypes + synthesizer optioneel), stap 3 =
  resultaten (markeert het einde, balk licht stap 3 op). Vorige/Volgende +
  'Terug naar instellingen' vanuit resultaten; 'Naar resultaten →' als er al
  synthese is.
- Terug naar stap 1 behoudt de dataset (uploadveld leeg = vervangen optioneel).

Geverifieerd met AppTest: per stap alleen de juiste elementen zichtbaar
(databron weg in stap 2, genereer-knop weg in stap 3), happy path zonder exceptions.
@StevenRamondt StevenRamondt marked this pull request as ready for review June 17, 2026 12:26
@StevenRamondt StevenRamondt merged commit 111b58a into main Jun 17, 2026
1 check passed
@StevenRamondt StevenRamondt deleted the feat/19-stepper-flow branch June 17, 2026 12:26
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.

ux: progressie-indicator / stepper toevoegen aan de 5-stappen flow

1 participant