Skip to main content

UC-OVG-RES-006 — Resultaat als PDF downloaden binnen oudercontext

1. Kerngegevens

VeldWaarde
Usecase-IDUC-OVG-RES-006
NaamResultaat als PDF downloaden binnen oudercontext
DomeinOuder/voogd / Resultaten en geschiedenis
Primaire actorOuder/voogd
Secundaire actor(en)Frontend, backend, database, PDF-exportservice
RolcontextActieve ouder-/voogdcontext; server-side bepaald vanuit de ingelogde gebruiker
Betrokken schermenResultaatdetail, PDF-download
Gerelateerde usecasesUC-OVG-RES-004, UC-OVG-RES-005, UC-LLN-RES-004, UC-DOC-RES-005
Primaire entiteitenExerciseRuns, ExerciseRunProgress, UserRelationships, PdfExportService
Secundaire entiteiten / eventsGuardianPdfExportRequested, PdfExportGenerated
Gerelateerde popupsPOP-OVG-PDF-EXPORT-ERROR, POP-OVG-RESULT-ACCESS-DENIED
PopupregisterOntwerpbronnen — Popup-register
MoSCoWMust

2. Omschrijving

Deze usecase beschrijft hoe een ouder/voogd een PDF-export van een afgeronde run van een gekoppeld kind downloadt. De PDF gebruikt dezelfde historische runcontext en inhoud als de resultaatdetailweergave.

PDF-export is een raadpleegactie met exportbestand als output. De export mag geen resultaten herberekenen vanuit clientstate en mag geen oefenrun wijzigen.

Uitgangspunten

  • PDF-export is alleen beschikbaar voor geautoriseerde afgeronde runs.
  • De export gebruikt historische runcontext.
  • QuestPDF is de beoogde techniek voor PDF-generatie.
  • De inhoud sluit aan op resultaatdetail en statistieken.
  • Export veroorzaakt geen domeinmutatie in de run.

3. Scope

Deze usecase beschrijft:

  • starten van PDF-export vanuit resultaatdetail;
  • herhalen van autorisatiecontrole;
  • samenstellen van exportmodel uit historische rungegevens;
  • genereren van PDF-bestand met resultaatinhoud;
  • teruggeven van veilige bestandsnaam.

Deze usecase beschrijft niet:

  • bulkexport van alle resultaten;
  • e-mailen van PDF;
  • resultaatcorrectie;
  • opslaan van export als permanent documentrecord.

3.1 Afbakening met aangrenzende domeinen

OnderdeelAfbakening
Leerling / ResultatenDe historische run, statistiekvelden en PDF-bron blijven dezelfde bron als in het leerlingdomein; de ouder-/voogdweergave voegt alleen autorisatie en selectie op oudercontext toe.
Docent / ResultatenDocentresultaten blijven beperkt tot de eigen docentcontext; ouder/voogd mag juist alle niveaus van het gekoppelde kind zien.
Generiek / RelatiesRelatievorming, uitnodigingen en algemene relatie-lifecycle blijven buiten deze resultaatusecases.
Database / ReadmodelsTellers, filters en overzichten zijn afgeleide readmodels boven bestaande relatie-, niveau-, oefening- en rungegevens.

4. Pre-condities

| 001 | Er is een afgeronde run geopend. | | 002 | De run hoort bij een actief gekoppeld kind. | | 003 | De PDF-service is beschikbaar. | | 004 | Historische run- en vraaggegevens zijn leesbaar. |

5. Post-condities

| 001 | De ouder/voogd ontvangt een PDF of veilige foutmelding. | | 002 | Rungegevens blijven ongewijzigd. | | 003 | De exportresponse bevat geen gegevens buiten de geautoriseerde run. | | 004 | Bestandsnaam is veilig opgebouwd. |

6. Trigger

De ouder/voogd kiest Download als PDF op het resultaatdetail.

7. Normale processtroom

StapActor / componentActieResultaatData / controle
1Ouder/voogdKiest Download als PDFFrontend vraagt export aanRunId
2BackendValideert ouder-/voogdrelatie en runExport is toegestaanUserRelationships
3BackendStelt exportmodel samenHistorische inhoud wordt verzameldExerciseRuns + progress
4PDF-exportserviceGenereert PDFPDF bevat resultaatdetail en statistiekenQuestPDF
5BackendBepaalt bestandsnaamVeilige naam wordt gebruiktDatum/categorie/oefening
6FrontendStart downloadOuder/voogd ontvangt bestandPDF response

7.1 Scherm- en routegedrag

  • De resultatenroutes worden altijd opnieuw server-side geautoriseerd.
  • De ouder-/voogdweergave toont read-only informatie over gekoppelde kinderen.
  • De pagina gebruikt functionele namen en context, geen technische identifiers als herkenningsmiddel.
  • Oude filters, routeparameters of browserstate mogen geen toegang afdwingen.

8. Alternatieve en exceptionele processtromen

| 001 | Run is niet meer geautoriseerd: export wordt geweigerd. | | 002 | PDF-service faalt: foutmelding via PopupKey en veilige technische foutafhandeling. | | 003 | Historische module-rendering is beperkt beschikbaar: generieke veilige representatie wordt gebruikt. | | 004 | Bestandsnaam bevat ongeldige tekens: naamdelen worden opgeschoond. | | 005 | Run is niet afgerond: exportactie is niet beschikbaar of wordt server-side geweigerd. |

8.1 Afhandeling van verouderde of ongeldige clientstate

  • De backend herhaalt autorisatie bij iedere raadpleeg-, filter-, export- of liveactie.
  • Oude routeparameters, browserselecties en clientcache worden genegeerd wanneer de actuele server-side context geen toegang geeft.
  • De frontend mag het scherm herstellen door het actuele readmodel opnieuw op te vragen.

9. Business rules

| 001 | PDF-export gebruikt dezelfde historische runcontext als schermweergave. | | 002 | PDF-export is alleen toegestaan voor actief gekoppelde kinderen. | | 003 | De export mag geen nieuwe run of resultaatmutatie aanmaken. | | 004 | Ongeldige tekens in bestandsnamen worden opgeschoond. | | 005 | Technische exportfouten worden veilig afgehandeld zonder gevoelige gegevens te lekken. |

9.1 Readmodel- en tellerdefinities

WaardeDefinitieUitsluitingen / grenzen
ExportmodelSamenvatting, vraagdetails en statistieken van de run.Geen clientstate.
BestandsnaamGebaseerd op datum, OefenHub, categorie en oefening.Ongeldige tekens opgeschoond.
PDF-inhoudZelfde inhoud als resultaatdetail voor oudercontext.Geen extra beheerinformatie.
ExportstatusDownload of foutafhandeling.Geen domeinstatus op run.

9.2 Autorisatie- en privacygrenzen

  • De zichtbare dataset wordt altijd server-side beperkt tot actieve ouder-/voogdrelaties.
  • Een gebruiker met gecombineerde rollen krijgt binnen deze routes geen impliciete docent- of beheerderinzage.
  • Resultaat- en livegegevens van niet-gekoppelde kinderen worden nooit gedeeltelijk getoond.

10. Datavalidatie

| 001 | RunId moet bestaan en geautoriseerd zijn. | | 002 | Run moet afgerond zijn. | | 003 | PDF-exportservice moet beschikbaar zijn. | | 004 | Exportmodel mag alleen gegevens van de gekozen run bevatten. | | 005 | Bestandsnaam moet veilig zijn voor download. |

11. Datamutaties en events

| 001 | Geen domeinmutaties. | | 002 | GuardianPdfExportRequested en PdfExportGenerated beschrijven de exportafhandeling, niet een wijziging aan de run. | | 003 | De PDF wordt als tijdelijke response geleverd. |

12. Geen datamutaties

| 001 | ExerciseRuns worden niet gewijzigd. | | 002 | Progresspayload wordt niet herschreven. | | 003 | Er ontstaat geen verplicht permanent documentrecord. | | 004 | Geen systeembericht of privébericht wordt aangemaakt. |

13. State diagram

Niet van toepassing. PDF-export is een tijdelijke exportresponse en wijzigt geen persistent statusobject.

14. Decision flow

15. Data lifecycle diagram

16. Sequence diagrammen

17. Popupverwijzingen

PopupKeyGebruik
POP-OVG-PDF-EXPORT-ERRORWordt gebruikt wanneer PDF-export veilig niet kan worden afgerond.
POP-OVG-RESULT-ACCESS-DENIEDWordt gebruikt wanneer actuele autorisatie voor de export ontbreekt.

Popupteksten, knopteksten, inputlabels en themakeuzes worden niet in deze usecase gedupliceerd. Het popupregister en de popupthemes blijven bronhoudend.

18. Afleiding naar Functioneel Ontwerp / Technisch Ontwerp / Software Requirements Specification

| 001 | PDF-export moet ook vanuit ouder-/voogdgeschiedenis beschikbaar zijn. | | 002 | De export gebruikt dezelfde historische runcontext als de detailweergave. | | 003 | PDF-generatie gebruikt de generieke exportregels en QuestPDF-richting. |

18.1 Impact voor database-informatie en ontwerpbronnen

| 001 | Autorisatiematrix moet ouder-/voogdraadpleging onderscheiden van docentraadpleging. | | 002 | Usecase-scherm-matrix moet de betrokken ouder-/voogdschermen koppelen aan deze usecase. | | 003 | Usecase-requirement-matrix moet de requirements uit hoofdstuk 19 opnemen. | | 004 | Readmodeldefinities voor ouder-/voogdresultaten moeten alle niveaus van het gekoppelde kind omvatten. |

19. SRS-trace

Deze usecase bevat geen normatieve requirementtekst. De centrale eis en acceptatiecriteria staan in de SRS; onderstaande tabel koppelt de usecase-afleiding alleen aan centrale SRS-*- en AC-*-items.

Er zijn voor deze usecase geen aparte requirement-afleidingen vastgelegd. De procesbeschrijving blijft broncontext voor de SRS-traceability.