feat: ship premium IT-focused vacancy radar
deploy / deploy (push) Canceled after 0s

This commit is contained in:
Jens
2026-07-22 15:16:15 +02:00
parent 7d3d026d1d
commit 029df89265
23 changed files with 838 additions and 53 deletions
+3 -2
View File
@@ -52,11 +52,12 @@ mag in een afgeschermde browsercontext uitvallen zonder de bediening te breken.
## 4. Spacing en layout
- 4/8px-gebaseerde schaal;
- contentcontainer maximaal 1600px zodat de cockpit op brede schermen bruikbaar blijft;
- contentcontainer maximaal 2240px; vanaf 1850px gebruikt de cockpit extra resultaatkolommen en
contextpanelen in plaats van alleen langere tekstregels;
- kaarten met consistente padding 2024px desktop, 16px mobiel;
- minimaal 44×44px touch targets voor primaire interactie;
- vaste zijbalk van 272px boven 900px, toegankelijke uitschuifnavigatie daaronder;
- grids breken onder 1180px, 900px en 680px logisch af;
- grids breken rond 1850px, 1350px, 1180px, 900px en 680px logisch af;
- vaste/sticky elementen mogen content niet bedekken.
## 5. Componenten
+12 -1
View File
@@ -19,6 +19,17 @@ Na productfeedback is de integratie aangescherpt: Stitch bepaalt nu niet alleen
De bedoelde “circa 90% Stitch” slaat hiermee op overgenomen visuele structuur en interactiehiërarchie, niet op het kopiëren van fictieve content, externe assets, auto-apply of routes waarvoor het domeinmodel geen betrouwbare data bezit.
## VR-206: premium radar en ultrawide compositie
De volledige audit maakt de Stitch-compositie ook functioneel dominant. De vacaturefeed start met
een brede commandofilter, toont beslisbare score-evidence en krijgt op breed desktop een vaste
radarcontext. Vanaf 1850 px worden matchfeeds tweekoloms; de shell benut maximaal 2240 px in plaats
van de vroegere 1280 px. Op mobiel worden filters, sectiekoppen en acties lineair gestapeld.
De visuele hiërarchie is gekoppeld aan een deterministische IT-grens: niet-IT en hard uitgesloten
matches zijn standaard afwezig. Het volledige archief en verborgen scores blijven expliciet
inspecteerbaar, zodat premium rust niet ten koste gaat van auditbaarheid.
## Visuele richting
- Donkere cockpit als standaard: diep marineblauw, tonale panelen, fijne slate-randen, signaalcyaan voor primaire interactie, emerald voor aantoonbaar gezonde status en koraal/amber voor fouten of aandacht.
@@ -58,7 +69,7 @@ De bedoelde “circa 90% Stitch” slaat hiermee op overgenomen visuele structuu
## Responsive en toegankelijkheid
- Validatiebreedtes: 1440×900, 1280×800, 1024×768, 768×1024, 390×844 en 360×800.
- Validatiebreedtes: 2560×1440, 1920×1080, 1440×900, 1024×768, 390×844 en 320×800.
- Eén `h1` per pagina, semantische landmarks, zichtbare focus, toetsenbordbediening, 44px touchdoelen waar praktisch, tekstlabels naast statuskleur en een robuuste skiplink.
- Tabellen schakelen op smalle schermen naar kaartachtige rijen of blijven gecontroleerd horizontaal scrolbaar wanneer kolomvergelijking essentieel is.
- Animatie is subtiel en volledig uitgeschakeld bij `prefers-reduced-motion`.
+6
View File
@@ -56,6 +56,8 @@ Regels:
Filters:
- vrije tekst;
- relevantiefocus: standaard aantoonbare IT-titels, met expliciet volledig bronarchief;
- radarselectie: standaard geen harde uitsluitingen of verborgen score, met aparte inspectiefilters;
- status;
- recommendation/scoreband;
- werkvorm;
@@ -65,6 +67,10 @@ Filters:
Desktop gebruikt een compacte filterbalk; mobiel een disclosurepanel. Filters blijven in querystring zodat bookmarks en back navigation werken.
De standaardvolgorde is persoonlijke matchscore, niet importtijd. Niet-IT-inhoud wordt niet
verwijderd: ze blijft uitsluitend via `Volledig archief` bereikbaar. Een beschrijvingshit alleen
mag nooit een niet-IT-titel promoveren.
Tabel of kaarten kiezen op breedte. Geen horizontale scroll voor kernvelden.
## 5. Vacaturedetail
+65
View File
@@ -0,0 +1,65 @@
# VR-206 volledige UX-, logica- en browseraudit
Datum: 2026-07-22
## Uitgangssituatie
De productiecontrole toonde 242 actieve vacatures. De standaardlijst sorteerde hoofdzakelijk op
`first_seen` en liet elke actieve vacature zien. Daardoor stonden onder meer facilitaire techniek,
logopedie, vroedkunde en niet-IT-onderzoek tussen de persoonlijke IT-resultaten. Op 2560 px bleef
de inhoud bovendien op ongeveer 1280 px begrensd, waardoor de Stitch-cockpit een brede lege zone
overliet.
## Bevindingen en oplossing
| Prioriteit | Bevinding | Oplossing |
| --- | --- | --- |
| P0 | Niet-IT-vacatures bereikten Vandaag en de standaardfeed. | Titelgestuurde, deterministische IT-classificatie vóór score/AI; niet-IT blijft alleen in het expliciete volledige archief. |
| P0 | Vandaag gebruikte niet overal de laatste gebruikersgescopeerde score en open dossiercijfers waren niet volledig gebruikersgescopeerd. | Laatste score per vacature/profiel via subquery; profiel, scores en dossiers zijn aan de aangemelde gebruiker gebonden. |
| P1 | Verborgen/hard uitgesloten IT-vacatures stonden hoog door hun ruwe score. | Nieuwe standaardkeuze `Radarselectie` laat verborgen resultaten weg; `Verborgen` en `Alle IT-scores` blijven bewuste inspectiekeuzes. |
| P1 | De lijst sorteerde op bronrecency in plaats van persoonlijke besliswaarde. | Standaard matchscore aflopend, met alternatieven voor nieuwste en sluitingsdatum. |
| P1 | Stitch werd visueel gebruikt, maar ultrawide bleef een smalle strook. | Adaptieve contentbreedte tot 2240 px, tweekoloms feeds vanaf 1850 px en context-/actierails op breed desktop. |
| P1 | Vacaturekaarten boden weinig scorebewijs. | Score, datakwaliteit, eerste pluspunt, eerste aandachtspunt, status, werkmodel en directe actie staan in de feed. |
| P2 | Confidencewaarden wisselden tussen breuken en percentages. | Alle dagelijkse score- en extractiekwaliteit wordt als percentage getoond. |
| P2 | Inline feedback accepteerde een willekeurige `next`-URL. | Terugkeer alleen naar dezelfde host, met negatieve regressietest. |
| P2 | De bronpagina liep op 320 px uit door statuschips naast lange sectiekoppen. | Sectiekoppen stapelen onder 680 px; de 320 px matrix heeft geen horizontale overflow. |
| P2 | Sommige browsers vroegen `/favicon.ico` en kregen een 404. | Lokale permanente fallback naar het bestaande SVG-favicon. |
## Relevantieregel
De classifier is bewust conservatief en titelgestuurd. Een beschrijving die toevallig “digitale
systemen” vermeldt, maakt een zorg- of facilitaire functie niet relevant. Duidelijke IT-families
zoals infrastructuur, netwerk, cloud, security, software, data, applicatiebeheer en workplace
worden toegelaten. Commerciële of recruitmentcontext die IT-woorden bevat, wordt expliciet
afgewezen. Dezelfde regexcontracten worden in Python en in de databasequery gebruikt.
Op de lokale auditdataset met 336 actieve records bleven 108 titelmatig aantoonbare IT-vacatures
over en werden 228 niet-IT-records uit de standaardfocus gehouden. Na uitsluiting van verborgen
matches bevatte de persoonlijke radarselectie 102 kaarten. Het volledige archief blijft 336
records bevatten: er wordt geen bronhistoriek gewist.
## Stitch-vertaling
- Dashboard: KPI-strip, beslisbare matchfeed en vaste radar-/actierail.
- Vacaturelijst: brede commandofilter, compacte evidencekaarten, scorehiërarchie en radarcontext.
- Detail: scorehero, intelligence-strip, bronhistorie en menselijke actierail.
- Shell: vaste desktopnavigatie, compacte utilitybar, lokale iconen en mobiele drawer.
- Ultrawide: twee inhoudskolommen plus context; geen kunstmatig uitgerekte tekstregels of fictieve grafieken.
Alle cijfers en signalen komen uit de database. Quick apply, automatische sollicitatie,
platformloginbots, fictieve trendgrafieken en externe frontendassets blijven bewust afwezig.
## Browsermatrix
Handmatig gecontroleerd in de geïntegreerde browser op 320×800, 390×844, 1024×768, 1440×900,
1920×1080 en 2560×1440. De zes kernroutes (`/`, `/jobs/`, `/jobs/applications/`, `/profiles/`,
`/sources/`, `/system/`) hebben één `h1`, gelabelde formuliervelden en geen horizontale
paginaoverflow. De vacaturefeed schakelt van één kolom naar twee kolommen op ultrawide en gebruikt
daar 2240 px van de beschikbare ruimte. Mobiele navigatie opent en sluit met correcte
`aria-expanded`-status.
## Resterend operationeel punt
Na deployment moet de bestaande productie-inventaris opnieuw gescoord worden zodat opgeslagen
score-evidence eveneens het nieuwe `it_relevance`-blok bevat. De viewfilter werkt onmiddellijk en
onafhankelijk daarvan; het herscoren verbetert de uitleg en blijvende `hidden`-status.