FunderConsult
← Terug naar de changelog

Versie 71abaa3

Triage-programma: leerlus (few‑shot opt‑in), replay/gouden set, run‑historie, compacter triage‑scherm en dashboard‑inzichten; 26 fixes

Datum volgtFew‑shot leren per loket (opt‑in) met transparantie en NAW‑stripping.Gouden set + replay‑scorekaart om triage‑verbeteringen objectief te meten.Nieuwe TriageRun‑historie met runId, promptVersion en configHash.Compacter triage‑scherm met herkomst (regels/model/beide) en duidelijke waarschuwingen.Dashboard‑inzichten en admin‑export van leerdata (JSONL/CSV).26 kwalitatieve fixes en merkbare efficiëntiewinst in logging en API’s.

- Leerlus als opt‑in per loket: few‑shot voorbeelden uit recente correcties (met NAW‑stripping), transparant in de output en met beheersbare kosten. - Objectieve meting: gouden set + replay‑scorekaart per prompt/config; dashboard met agreement‑trends, top‑verwarringen en recente afwijkingen; export JSONL/CSV (admin‑only). - Run‑historie: elke AI‑triage‑run bewaard met runId, promptVersion en configHash; correcties gelinkt aan de uitlokkende run. - Compacter triage‑scherm met herkomst‑indicator (regels/model/beide) en samengevatte FunderMaps‑payload; waarschuwingen klappen nooit in. - 26 fixes: o.a. export‑limit, golden‑set lees/schrijf, leave‑one‑out, StageCard‑gedrag, UI‑teksten, reply‑skip, en toegangscontrole. - Efficiëntie: fors minder DB‑/JSON‑loads bij few‑shot/golden set/replay; lichtere API‑responses. - Navigatie: nieuwe /admin/triage‑hub met redirects; oude /admin/incidents verwijderd (redirect naar /admin/loketten).

Leerlus en evaluatie

  • Few‑shot per loket (AiTriageConfig.fewShot { enabled, maxExamples 1‑20 }, default UIT): gebruikt alleen recente outcome=edited‑correcties binnen hetzelfde loket, gededupliceerd per verwarringspaar; NAW wordt gestript; voorbeelden zichtbaar in result.fewShotExamples; meetbare token‑kosten alleen bij ingeschakelde loketten.
  • Gouden set: expliciete cases met bekend menselijk eindoordeel, opgebouwd uit correctielog + bestaande overrides; idempotent (cases bijgewerkt, niet verwijderd).
  • Replay API (POST/GET /api/admin/feedback-triage/replay, admin‑only): draait zonder persist (geen statuswijzigingen), met limiet (default 25, max 250); scorekaart met accuracy per soort, top‑verwarringen, confidence‑kalibratie en documenttype‑accuracy; resultaten in TriageReplayRun met promptVersion + configHash.
  • Dashboard (/admin/triage/dashboard): agreement per week (8 weken), top‑verwarringen (AI → mens), recente afwijkingen (doorklikbaar), en afstand tot promotiedrempel; kanttekening dat reply‑meting pas sinds #1684 betrouwbaar is.
  • Export leerdata (GET /api/admin/triage/export, admin‑only): JSONL (default) of CSV met AI‑voorstel, menselijke keuze, confidence, promptVersion, configHash en model; variant‑scoped; PII‑beleid: geen NAW/bijlagen; teksten alleen met ?includeTexts=1.

Run‑historie en logging

  • Nieuwe TriageRun (append‑only): per échte run o.a. runId, submission/variant/organisatie, modellen, promptVersion, configHash, categorie/confidence, rulesDecisive/llmInvoked, tokens en duur; geen PII; defensief bij DB‑issues.
  • TriageActionLog uitgebreid: classify.category en classify.documentType leggen AI‑voorstel vs. menselijke keuze vast (incl. attachment‑sleutel en previousWasManual); verzonden reacties loggen voorstel én verstuurde tekst; elke correctie gelinkt aan de uitlokkende runId.

UI/UX triage

  • StageCards compact: kop + samenvatting blijven zichtbaar; stappen standaard dicht behalve bij degraded/error; Execute blijft open; per gebruiker/stap onthouden; waarschuwing wint altijd van een opgeslagen ‘dicht’.
  • Kopblok: toont soort + herkomst (regels/model/beide of ‘handmatig’), model‑zekerheid en FunderMaps‑status.
  • Rustige herkomst‑pill bij elk classificatielabel met tooltip.
  • FunderMaps: samenvatting van fundermapsDraft direct zichtbaar; waarschuwing bij gewijzigde stroom; bewerkvelden eronder; volledige payload achter uitklap.
  • Replay‑paneel: laadfouten zichtbaar; confidence leegmaken behoudt vorige waarde; verwarringsnotatie eenduidig ‘AI → mens’; TriageTabs toegevoegd op hub‑pagina’s.

Correctheid en betrouwbaarheid

  • Export zonder ?limit gaf 1 rij: alleen een aanwezige positieve limit telt nu.
  • Golden set: schrijver zet attachmentRef; lezer valt terug op proposed.attachmentRef en daarna op index; accepted‑rijen tellen mee (laatste menselijke oordeel wint); few‑shot slaat cases met recente accepted over.
  • Replay/few‑shot: leave‑one‑out — eigen correctie van een case komt niet in de prompt; live hertriage echoot niet.
  • StageCard opent alsnog bij degradatie na mount (in‑page hertriage).
  • Uitgevinkte reply in LLM‑modus telt als skipped wanneer er een concept lag.

Efficiëntie en API‑omvang

  • Few‑shot: gepagineerde log‑lezing + goedkope membership‑check; alleen ≤maxExamples computed geladen (i.p.v. ~200 JSON’s per run).
  • Golden set: raw query haalt alleen override‑strings op; batch‑writes (createMany + gerichte updates).
  • Dashboard‑leerlus: gescheiden queries; alleen menselijke beslissingen tellen; auto‑uitgevoerde systeemrijen tellen niet meer mee.
  • Replay‑GET: levert enkel de scorekaart (geen per‑case‑outcomes).
  • ±25 dode exports uit LokettenAdminPanel verwijderd.

Toegang en veiligheid

  • Export‑ en replay‑routes hangen nu aan requireAdminAccess; exportlinks en replay‑paneel verborgen voor superuser; API’s weigeren superuser‑rol expliciet.

Navigatie en beheer (intern, met zichtbaar effect)

  • Acht admin‑triagepagina’s samengebracht onder /admin/triage‑hub (clusters Werk, Inzicht, Configuratie); /admin/triage redirect naar werklijst; per‑pagina‑guards behouden; oude URL’s redirecten met query‑params intact; admin‑shortcut ‘Triage’ bijgewerkt.
  • Oude beheerpagina /admin/incidents verwijderd; redirect naar /admin/loketten met query‑passthrough; niet‑gebruikte risicovolle admin‑routes verwijderd.