# UX Specification ## Technologie V1 gebruikt server-rendered Jinja2 + HTMX voor beheer en Query Lab. Dit houdt één deployment, gedeelde auth en weinig frontendbuildcomplexiteit. Een rijkere SPA is pas gerechtvaardigd door gemeten UX-beperkingen. ## Principes - Desktop-first beheer maar volledig bruikbaar op tablet/mobiel. - Status en gevaar worden niet alleen door kleur gecommuniceerd. - Tabellen hebben zoek/filter/paginatie en behouden URL-state. - Destructieve acties tonen impact en vereisen bevestiging. - Langlopende acties tonen jobstatus en blijven na refresh volgen. - Query Lab verklaart retrieval in begrijpelijke lagen. - Geen gevoelige documenttekst in algemene dashboards. ## Accessibility WCAG 2.2 AA-doel: keyboard navigation, zichtbare focus, labels, landmarks, contrast, reduced motion en semantische statusupdates. De mobiele navigatie verplaatst focus bij openen naar de eerste link, houdt Tab binnen de drawer en herstelt focus naar de menuknop bij Escape. Het hoofdgebied is een expliciet skip-linkdoel. Controls hebben op compacte viewports minimaal 44 px bedieningshoogte; status blijft steeds als tekst beschikbaar. ## Dashboard als capability map De eerste inhoud na de page header is de echte keten `Sources → Ingest → Retrieve → Answer`. De kaart gebruikt alleen vaste, geïmplementeerde capabilitytekst en geautoriseerde runtimegegevens: jobstatus en het aantal zichtbare applications. Retrieval heet expliciet dense+sparse met deterministische RRF-fusion; reranking wordt nergens als actieve stap voorgesteld. Iedere stap linkt naar het bestaande beheerscherm dat de operator nodig heeft. Onbereikbare stores en ontbrekende rechten worden als unavailable/restricted getoond. Een ontbrekende waarde wordt nooit als nul, healthy of success gepresenteerd. Algemene dashboards tonen geen documentinhoud. ## Operationele bron-naar-zoekflow De schermen Sources, Documents en Ingestion Jobs vormen één navigeerbare keten `Source → Document → Processing`. Een compacte journey-balk blijft op lijst- en detailschermen zichtbaar. Details gebruiken de meest specifieke geautoriseerde relatie: bron naar zijn gefilterde documenten, document naar het producerende job en ingest-job terug naar het werkelijk geproduceerde document. Ontbrekende of workspace-vreemde relaties worden niet geraden en krijgen geen link. Ook generieke journey-stappen en lijstvelden linken alleen wanneer de huidige rol de doelroute werkelijk kan openen; opgeslagen failure-job-ID's worden opnieuw op bestaan en workspace-eigendom gecontroleerd voordat ze klikbaar worden. Filters en paginering blijven URL-state en behouden elkaar. Een bronfilter toont de geautoriseerde bronnaam; een onbekende of vreemde bron wordt alleen als onbeschikbaar omschreven. Syncuitkomsten onderscheiden discovery, wachtende child-ingests, volledige convergentie, gedeeltelijke mislukking en terminale mislukking. Hersteltekst verwijst naar de bestaande retry-actie wanneer die voor de gekoppelde job werkelijk beschikbaar kan zijn.