OciServe-examen: toon de uitslag zodra de beoordelaar hem vrijgeeft (nu eindigt het bij 'ingeleverd') #2424

Closed
opened 2026-10-14 18:40:41 +00:00 by brenno · 2 comments
Owner

Wat wil je bereiken

Een cursist die een examen heeft gemaakt ziet daarna wat de uitkomst is, zodra die is vrijgegeven. Nu weet hij het nooit.

Wat mist er nu (origin/main 5802e9360)

  • lib/widgets/dialogs/ociserve_exam_dialog.dart:111-114: de laatste staat is "Uw examen is ingeleverd." Daarna geen vervolg.
  • lib/models/ociserve_exam.dart:122-123 leest scored_at en released_at van een poging, maar niets gebruikt ze; er is geen aanroep van …/attempts/{aid}/score.

Wat de server (560f1ba) biedt, en wat niet

  • GET /organizations/{org}/participants/{pid}/attempts/{aid}/score → {total_items, correct_items, manual_review_items}. De gekoppelde deelnemer (met content:view) mag hem lezen alleen als de poging released is; anders 403 "attempt result has not been released" (en 409 "attempt has no score yet" zolang er niets is).
  • De poging zelf lezen (GET …/attempts/{aid}) mag een kandidaat niet: "candidates must use the controlled exam routes".
  • GET /me/exam-sessions geeft per sessie alleen {id, status, scheduled_start, latest_admission_at, absolute_deadline_at}, geen poging en geen uitslagstatus.

Gevolg: OciDeck kan niet netjes weten wanneer de uitslag er is. Pollen op …/score en een 403 als "nog niet" lezen is dubbelzinnig (hetzelfde antwoord bij een echte autorisatiefout). De server-kant staat in brenno/OciServe#667 (leesroute voor de eigen uitslag, met status). Tot die er is kan OciDeck alleen na submit een vriendelijke "u hoort het van de organisatie"-tekst tonen.

Gevraagd (na brenno/OciServe#667)

  • Na het inleveren een statuskaart "Wacht op beoordeling" met, zodra de server released meldt, het resultaat in gewone taal: aantal goed van het totaal, en (als de server passed geeft) geslaagd of niet. OciDeck rekent zelf niets uit.
  • De kaart staat ook in de lijst van examens van GET me/exam-sessions, zodat de cursist hem later terugvindt.
  • Geen cijfer tonen voor een poging die nog manual_review_items heeft.

Toets op de kernwaarden

Alleen actief voor wie bewust met een OciServe is verbonden (ongewijzigd); zonder server blijft OciDeck volledig lokaal werken. Geen telemetrie, geen wijziging van het bestandsformaat, geen nieuwe verplichte afhankelijkheid. De route staat al in de gepinde speckopie (test/fixtures/ociserve_openapi.yaml, OciServe 45d9a87), dus de pin hoeft niet omhoog; registreer de nieuwe aanroepen wel in test/ociserve_api_drift_test.dart (de contractpoort, #2042).

Acceptatiecriteria

  • Een vrijgegeven poging toont de uitslag; een niet-vrijgegeven poging toont geen cijfer.
  • 403/409-antwoorden worden niet als foutmelding getoond maar als status.
  • Offline of mislukt ophalen blijft een retry, geen verloren uitslag.

Acceptatiecriteria (algemeen)

  • Nieuwe aanroepen staan in de contractpoort met de velden die OciDeck leest.
  • Nieuwe l10n.d('…')-teksten via make add-l10n (31 talen).
  • make check groen; docs/USER_GUIDE.md, docs/SOURCE_MAP.md en CHANGELOG.md bijgewerkt.

Gerelateerd

Server: brenno/OciServe#667 en brenno/OciServe#664. Keiko: brenno/Keiko#396. Overzicht: brenno/OciServe#659.


Keten-audit van 2026-10-14, getoetst aan OciServe 560f1ba, Keiko 093f679 en OciDeck 5802e9360. Overzicht: brenno/OciServe#659.

## Wat wil je bereiken Een cursist die een examen heeft gemaakt ziet daarna wat de uitkomst is, zodra die is vrijgegeven. Nu weet hij het nooit. ## Wat mist er nu (origin/main `5802e9360`) - `lib/widgets/dialogs/ociserve_exam_dialog.dart:111-114`: de laatste staat is "Uw examen is ingeleverd." Daarna geen vervolg. - `lib/models/ociserve_exam.dart:122-123` leest `scored_at` en `released_at` van een poging, maar niets gebruikt ze; er is geen aanroep van `…/attempts/{aid}/score`. ## Wat de server (`560f1ba`) biedt, en wat niet - `GET /organizations/{org}/participants/{pid}/attempts/{aid}/score` → `{total_items, correct_items, manual_review_items}`. De gekoppelde deelnemer (met `content:view`) mag hem lezen **alleen als de poging `released` is**; anders 403 "attempt result has not been released" (en 409 "attempt has no score yet" zolang er niets is). - De poging zelf lezen (`GET …/attempts/{aid}`) mag een kandidaat niet: "candidates must use the controlled exam routes". - `GET /me/exam-sessions` geeft per sessie alleen `{id, status, scheduled_start, latest_admission_at, absolute_deadline_at}`, geen poging en geen uitslagstatus. Gevolg: OciDeck kan niet netjes weten *wanneer* de uitslag er is. Pollen op `…/score` en een 403 als "nog niet" lezen is dubbelzinnig (hetzelfde antwoord bij een echte autorisatiefout). De server-kant staat in brenno/OciServe#667 (leesroute voor de eigen uitslag, met status). Tot die er is kan OciDeck alleen na `submit` een vriendelijke "u hoort het van de organisatie"-tekst tonen. ## Gevraagd (na brenno/OciServe#667) - Na het inleveren een statuskaart "Wacht op beoordeling" met, zodra de server `released` meldt, het resultaat in gewone taal: aantal goed van het totaal, en (als de server `passed` geeft) geslaagd of niet. OciDeck rekent zelf niets uit. - De kaart staat ook in de lijst van examens van `GET me/exam-sessions`, zodat de cursist hem later terugvindt. - Geen cijfer tonen voor een poging die nog `manual_review_items` heeft. ## Toets op de kernwaarden Alleen actief voor wie bewust met een OciServe is verbonden (ongewijzigd); zonder server blijft OciDeck volledig lokaal werken. Geen telemetrie, geen wijziging van het bestandsformaat, geen nieuwe verplichte afhankelijkheid. De route staat al in de gepinde speckopie (`test/fixtures/ociserve_openapi.yaml`, OciServe `45d9a87`), dus de pin hoeft niet omhoog; registreer de nieuwe aanroepen wel in `test/ociserve_api_drift_test.dart` (de contractpoort, #2042). ## Acceptatiecriteria - [ ] Een vrijgegeven poging toont de uitslag; een niet-vrijgegeven poging toont geen cijfer. - [ ] 403/409-antwoorden worden niet als foutmelding getoond maar als status. - [ ] Offline of mislukt ophalen blijft een retry, geen verloren uitslag. ## Acceptatiecriteria (algemeen) - [ ] Nieuwe aanroepen staan in de contractpoort met de velden die OciDeck leest. - [ ] Nieuwe `l10n.d('…')`-teksten via `make add-l10n` (31 talen). - [ ] `make check` groen; `docs/USER_GUIDE.md`, `docs/SOURCE_MAP.md` en `CHANGELOG.md` bijgewerkt. ## Gerelateerd Server: brenno/OciServe#667 en brenno/OciServe#664. Keiko: brenno/Keiko#396. Overzicht: brenno/OciServe#659. --- _Keten-audit van 2026-10-14, getoetst aan OciServe `560f1ba`, Keiko `093f679` en OciDeck `5802e9360`. Overzicht: brenno/OciServe#659._
Author
Owner

Opgeleverd in LibreKAT/Ocideck#2432 (hangt aan brenno/OciServe#668, inmiddels gemerged; pin staat op 3c7c40f).

Erin: onder Mijn uitslagen in het examenscherm staat de uitslag zodra de organisatie hem vrijgeeft: goed, percentage, geslaagd. Zolang hij niet is vrijgegeven staat er alleen dat hij nog komt, en cijfers bij een niet-vrijgegeven poging zijn een contractbreuk. OciDeck rekent niets na. De route staat in de contractpoort en de teksten zijn in 30 talen toegevoegd.

Anders dan in het issue: er is geen aparte 403/409-afhandeling meer, want GET …/me/exam-results geeft de cijfers gewoon niet mee vóór vrijgave. Een mislukt ophalen toont "De uitslagen konden niet worden geladen."; een eigen herstelknop heb ik niet gebouwd. De uitslagen worden gelezen wanneer het examenscherm laadt, en opnieuw na de nieuwe poging van retry(); of dat bij elke terugkeer naar het scherm gebeurt, heb ik niet nagegaan.

docs/USER_GUIDE.md is niet bijgewerkt: die beschrijft de OciServe-leerlingfuncties nu nergens. CHANGELOG.md, docs/SOURCE_MAP.md, docs/PRIVACY.md en docs/API_DOCUMENTATION.md wel. Het issue blijft open tot de PR gemerged is.

🤖 Generated with Claude Code

Opgeleverd in LibreKAT/Ocideck#2432 (hangt aan brenno/OciServe#668, inmiddels gemerged; pin staat op `3c7c40f`). **Erin:** onder *Mijn uitslagen* in het examenscherm staat de uitslag zodra de organisatie hem vrijgeeft: goed, percentage, geslaagd. Zolang hij niet is vrijgegeven staat er alleen dat hij nog komt, en cijfers bij een niet-vrijgegeven poging zijn een contractbreuk. OciDeck rekent niets na. De route staat in de contractpoort en de teksten zijn in 30 talen toegevoegd. **Anders dan in het issue:** er is geen aparte 403/409-afhandeling meer, want `GET …/me/exam-results` geeft de cijfers gewoon niet mee vóór vrijgave. Een mislukt ophalen toont "De uitslagen konden niet worden geladen."; een eigen herstelknop heb ik niet gebouwd. De uitslagen worden gelezen wanneer het examenscherm laadt, en opnieuw na de nieuwe poging van `retry()`; of dat bij elke terugkeer naar het scherm gebeurt, heb ik niet nagegaan. `docs/USER_GUIDE.md` is niet bijgewerkt: die beschrijft de OciServe-leerlingfuncties nu nergens. `CHANGELOG.md`, `docs/SOURCE_MAP.md`, `docs/PRIVACY.md` en `docs/API_DOCUMENTATION.md` wel. Het issue blijft open tot de PR gemerged is. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
Author
Owner

Gemerged in #2444 (merge-commit 5446218c72). Na het samenvoegen met main is de per-bestand-dekking van de nieuwe provider-, dialoog- en bewijslagen met tests aangevuld; make check, check-secrets en sast zijn groen. #2424 was al gedekt door me/exam-results.

Gemerged in https://pawprint.vigilis.online/LibreKAT/Ocideck/pulls/2444 (merge-commit 5446218c72). Na het samenvoegen met main is de per-bestand-dekking van de nieuwe provider-, dialoog- en bewijslagen met tests aangevuld; make check, check-secrets en sast zijn groen. #2424 was al gedekt door me/exam-results.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
LibreKAT/Ocideck#2424
No description provided.