Skip to main content

UC-DOC-RES-005 - Resultaat als PDF downloaden binnen docentcontext

1. Kerngegevens

VeldWaarde
Usecase-IDUC-DOC-RES-005
NaamResultaat als PDF downloaden binnen docentcontext
DomeinDocent
SubdomeinResultaten en geschiedenis binnen docentcontext
Primaire actorDocent
Secundaire actor(en)Systeem, Leerling
RolcontextActieve docentcontext met geldige docentrol en resultaatinzage binnen eigen geautoriseerde niveaucontext
Betrokken schermenDocent - Resultaatdetail, PDF-download
Gerelateerde usecasesUC-DOC-RES-003, UC-DOC-RES-004, UC-DOC-RES-006, UC-LLN-RES-004
Primaire entiteitenExerciseRuns, ExerciseRunProgress, Exercises, Categories, TeacherLevels
Secundaire entiteiten / eventsQuestPDF-exportservice, bestandsnaamgenerator, autorisatiecontrole
Gerelateerde popupsNiet van toepassing
PopupregisterNiet van toepassing
MoSCoWMust

2. Omschrijving

Deze usecase beschrijft hoe een docent een toegestaan leerlingresultaat als PDF downloadt binnen de eigen docentcontext.

De PDF gebruikt dezelfde historische resultaatcontext en inhoud als de detailweergave. De export is geen nieuwe beoordeling en wijzigt geen rungegevens.

De technische PDF-generatie is generiek en moet dezelfde autorisatiegrenzen respecteren als de schermweergave.

3. Scope

3.1 Binnen scope

  • Starten van PDF-export vanuit een toegestaan resultaatdetail.
  • Server-side controleren dat de docent de run mag zien.
  • Samenstellen van PDF-inhoud uit historische runcontext, samenvatting, details en statistieken.
  • Genereren van een veilige bestandsnaam.
  • Aanbieden van het PDF-bestand als download zonder domeinmutatie.

3.2 Buiten scope

  • PDF-layoutbeheer door docent.
  • Wijzigen van resultaatinhoud voor export.
  • Opslaan van PDF als domeinrecord.
  • Exporteren van resultaten buiten docentcontext.
  • Bulkexport van meerdere resultaten tegelijk.

3.3 DRY-afbakening

  • Leerlingresultaten en statistiekdefinities blijven inhoudelijk bronhoudend in de leerlingresultaat- en centrale FO/TO/SRS-regels.
  • Docentniveau-autorisaties worden hier toegepast, maar het wijzigen ervan blijft bronhoudend in het subdomein Leerlingen en niveau-autorisaties.
  • Relatievorming en relatieontkoppeling blijven bronhoudend in het generieke relatiedomein.
  • PDF-layoutregels worden niet per usecase als nieuwe bronwaarheid herhaald, maar verwijzen naar de centrale resultaat- en PDF-afspraken.
  • Deze usecases maken geen eigen kopie van oefenruns, statistieken of histories voor docenten.
  • Directe toegang via URL, filter of exportverzoek blijft altijd onder dezelfde autorisatiegrens vallen.
  • Systeemberichten, privéberichten en meldingen worden niet aangemaakt door het bekijken van resultaten.
  • Module-specifieke payload blijft eigendom van de technische module; de docentweergave gebruikt veilige representaties.

4. Pre-condities

IDVoorwaarde
PRE-001De gebruiker is succesvol ingelogd.
PRE-002De gebruiker heeft een actieve docentrol.
PRE-003De OefenHub-sessiecontext is server-side opgebouwd.
PRE-004De betrokken leerling, run of resultatenlijst valt potentieel binnen de docentcontext.
PRE-005De backend kan actuele autorisatie-, relatie- en resultaatgegevens ophalen.
PRE-006De relevante resultaatdata is beschikbaar in de persistente run- en voortgangsopslag.

5. Post-condities

IDResultaat
POST-001De docent ziet uitsluitend resultaten die binnen de eigen docentcontext vallen.
POST-002Geen resultaat, oefenrun, autorisatie of profielgegeven is gewijzigd door deze read-only flow.
POST-003Een verboden of verouderd verzoek is veilig geblokkeerd zonder contextlek.
POST-004De frontend toont een actuele lijst, detailweergave, export of veilige afwijzing.
POST-005Fout- en blokkadesituaties worden veilig afgehandeld zonder nieuwe domeinentiteiten te introduceren.
POST-006Vervolgacties blijven binnen de daarvoor bedoelde usecases.

6. Trigger

De docent kiest binnen een toegestaan resultaat voor Download als PDF.

7. Normale processtroom

StapActorScherm / componentActieSysteemresponsData / regel
1DocentResultaatdetailKlikt op Download als PDFFrontend stuurt exportverzoekExerciseRunId
2FrontendExportactieStuurt verzoek naar backendBackend start server-side controleGeen clientexport als bron
3SysteemAutorisatieserviceControleert docenttoegang tot runBlokkeert buiten contextTeacherStudentLevelAccess
4SysteemResultatenserviceLaadt historische runcontextBouwt exportmodelExerciseRuns, Exercises, Categories
5SysteemResultatenserviceLaadt vraagdetails en statistiekenVult PDF-inhoudRunvelden en payloadrepresentatie
6SysteemBestandsnaamserviceGenereert veilige bestandsnaamNormaliseert ongeldige tekensyyyy_MM_dd-HH.mm, categorie, oefening
7SysteemQuestPDF-serviceGenereert PDFPast tabel- en pagina-eindregels toeQuestPDF
8SysteemDownloadresponseStuurt PDF naar frontendBrowser start downloadapplication/pdf
9FrontendBrowserBiedt download aanDocent ontvangt bestandGeen domeinmutatie

8. Alternatieve en exceptionele processtromen

IDVanaf stapSituatieSysteemgedragPopup / meldingDatamutatie
ALT-0013Docent heeft geen toegang tot resultaatSysteem weigert export en toont geen PDF.Niet van toepassingGeen
ALT-0024Run bestaat niet of is niet afgerondSysteem weigert export.Niet van toepassingGeen
ALT-0035Vraagrepresentatie is niet exporteerbaarSysteem gebruikt veilige fallback of weigert export met generieke foutafhandeling.Niet van toepassingGeen
ALT-0046Bestandsnaam bevat ongeldige tekensSysteem schoont naamdelen op en begrenst lengte.Niet van toepassingGeen
ALT-0057PDF-generatie faalt technischSysteem breekt download af en logt technische fout.Niet van toepassingGeen
ALT-0068Download wordt door browser geannuleerdSysteem wijzigt geen domeindata.Niet van toepassingGeen

9. Business rules

IDRegel
BR-001PDF-export binnen docentcontext gebruikt dezelfde autorisatiecontrole als resultaatdetailweergave.
BR-002PDF-export wijzigt geen exercise run, geen statistieken en geen geschiedenis.
BR-003De PDF gebruikt historische runcontext zoals die voor het resultaat beschikbaar is.
BR-004QuestPDF is de technische richting voor PDF-generatie.
BR-005Bestandsnamen worden veilig opgeschoond en begrensd.
BR-006Vraag- en antwoordweergave mag module-specifieke exportrepresentatie gebruiken wanneer beschikbaar.
BR-007Een tabelrij mag functioneel niet onleesbaar of afgesneden worden door exportregels.
BR-008Een vervolgpagina moet voldoende context houden via herhaalde headers of vervolgmarkering volgens centrale PDF-regels.
BR-009Export buiten docentcontext is verboden.
BR-010PDF-bestanden worden niet als apart domeinrecord opgeslagen in deze flow.
BR-011PDF-export introduceert geen blijvend PDF-record en geen aparte resultaatgeschiedenis.
BR-012Een mislukte export mag geen gedeeltelijke domeinmutatie achterlaten.

10. Datavalidatie

Veld / objectValidatie
DocentUserIdMoet overeenkomen met de server-side ingelogde gebruiker en mag niet uit formulierinvoer worden vertrouwd.
StudentUserIdMoet binnen de toegestane docentcontext vallen voordat resultaten worden gelezen.
ExerciseRunIdMoet bestaan, afgerond zijn en binnen de toegestane context vallen.
TeacherLevelIdMoet onderdeel zijn van de eigen docentcontext of historische resultaatcontext waar de docent recht op heeft.
CategoryIdMag alleen als filter worden toegepast binnen de reeds toegestane dataset.
ExerciseIdMag alleen als filter of context worden gebruikt binnen de toegestane dataset.
PeriodefilterMoet geldige datums bevatten en mag niet leiden tot datasetuitbreiding buiten autorisatie.
PagineringMoet worden begrensd op toegestane waarden en bij lege pagina veilig terugvallen.
PDF-bestandsnaamMoet worden opgeschoond van ongeldige tekens en lengtebeperkingen respecteren.
ModulepayloadMag alleen via veilige render- of exportrepresentatie worden gebruikt.

11. Datamutaties en events

StapTypeEntiteit / readmodelGedrag
1QueryDocentcontext-readmodelControleert docenttoegang tot de run vóór PDF-generatie.
2QueryExerciseRuns / ExerciseRunProgressLeest dezelfde historische resultaatbron als de schermweergave.
3Tijdelijke verwerkingQuestPDF-exportserviceBouwt een PDF-response op basis van het exportmodel zonder blijvend PDF-domeinrecord.
4Tijdelijke verwerkingBestandsnaamgeneratorGenereert een veilige bestandsnaam voor de downloadresponse.
5Geen domeinmutatieExerciseRuns / ExerciseRunProgressPDF-export wijzigt geen run, score, antwoord, statistiek of geschiedenis.
6Geen domeinmutatieTeacherStudentLevelAccessAutorisaties worden toegepast, niet gewijzigd.
7Geen domeinmutatieSystemMessages / PrivateMessages / TicketsPDF-export maakt geen systeemcommunicatie of melding aan.

12. Geen datamutaties

EntiteitReden
UsersResultaat- en geschiedenisweergave wijzigt geen gebruikersaccount.
UserRoles / RolesBekijken of exporteren van resultaten wijzigt geen rollen.
UserRelationshipsDocent-leerlingrelaties worden alleen gecontroleerd, niet gewijzigd.
TeacherStudentLevelAccessAutorisaties worden gecontroleerd, niet aangepast.
TeacherLevelsNiveaucontext wordt gelezen en niet gewijzigd.
CategoriesCategoriecontext wordt gelezen en niet gewijzigd.
ExercisesOefeningcontext wordt gelezen en niet gewijzigd.
ExerciseRunsBekijken, filteren of exporteren wijzigt de run niet.
ExerciseRunProgressVraagdetails worden gelezen en niet aangepast.
SystemMessagesResultaatinzage maakt geen systeemberichten aan.
PrivateMessagesResultaatinzage maakt geen privéberichten aan.
TicketsResultaatinzage maakt geen melding aan.

13. State diagram

Niet van toepassing als persistent statusmodel. De usecase leest bestaande oefenrunstatussen en autorisatiecontext, maar introduceert geen nieuwe status voor docentresultaatinzage.

14. Decision flow

15. Data lifecycle diagram

Deze usecase maakt geen nieuwe resultaatdata aan. Het lifecyclebeeld toont dat bestaande runs alleen worden gelezen.

16. Sequence diagrammen

16.1 PDF downloaden

16.2 Directe route of verouderde clientstate blokkeren

17. Popupverwijzingen

PopupKeyMomentDoel
Niet van toepassingAlle momentenResultaatinzage, filtering, export en blokkades gebruiken geen nieuwe domeinspecifieke popupregister-popup.
Niet van toepassingPDF-downloadfoutEen exportfout wordt via generieke foutafhandeling verwerkt zonder popupteksten in de usecase te dupliceren.

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

DoeldocumentAfleiding
Functioneel OntwerpDocentresultaten moeten expliciet contextgebonden worden beschreven: alleen resultaten van niveaus die de docent zelf aan de leerling heeft geautoriseerd of waarvoor de docent volgens de geldende docentcontext inzagerecht heeft.
Technisch OntwerpTechnisch Ontwerp: oefenruns, resultaten en PDF-brondata, PDF-export, readmodels en resultaatlezers en autorisatie beschrijven de technische uitwerking. Backendqueries voor geschiedenis, filters, resultaatdetails en PDF-export moeten altijd eerst autorisatiecontext toepassen en daarna pas filters, sortering of exportlogica.
Software Requirements SpecificationRequirements moeten vastleggen dat directe URL-toegang, filterparameters en exportverzoeken geen toegang buiten docentcontext mogen opleveren.
Database-informatieExerciseRuns en gerelateerde resultaatdata blijven bronhoudend; er is geen aparte docentresultatentabel nodig.
OntwerpbronnenAutorisatiematrix, business rules en usecase-matrices moeten docentresultaatinzage en blokkades buiten context opnemen. Read-only resultaatinzage vraagt geen nieuw domeinevent.
Privacy/AVGResultaatinzage door docenten moet dataminimalisatie respecteren en geen resultaten buiten onderwijscontext zichtbaar maken.

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.

Usecase-afleidingDektUsecasecontext
REQ-UC-DOC-RES-005-001SRS-TCH-004
SRS-PDF-001
AC-TCH-004
AC-PDF-001
Een toegestaan resultaat als PDF kunnen exporteren
REQ-UC-DOC-RES-005-002SRS-AUTH-001
SRS-TCH-001
SRS-PDF-001
AC-AUTH-001
AC-TCH-001
AC-PDF-001
PDF-export buiten docentcontext blokkeren
REQ-UC-DOC-RES-005-003SRS-LRN-009
SRS-TCH-001
SRS-PDF-001
AC-LRN-009
AC-TCH-001
AC-PDF-001
PDF-inhoud baseren op historische runcontext
REQ-UC-DOC-RES-005-004SRS-TCH-001
SRS-NFR-SEC-001
AC-TCH-001
AC-NFR-SEC-001
Veilige bestandsnamen genereren
REQ-UC-DOC-RES-005-005SRS-TCH-001
SRS-PDF-001
SRS-NFR-SEC-001
AC-TCH-001
AC-PDF-001
AC-NFR-SEC-001
PDF-generatiefouten veilig afhandelen
REQ-UC-DOC-RES-005-006SRS-TCH-004
AC-TCH-004
Geen resultaatdata wijzigen door export
REQ-UC-DOC-RES-005-007SRS-AUTH-001
SRS-LRN-009
SRS-TCH-001
AC-AUTH-001
AC-LRN-009
AC-TCH-001
Toegang tot leerlingresultaten altijd server-side valideren
REQ-UC-DOC-RES-005-008SRS-LRN-009
SRS-TCH-005
AC-LRN-009
AC-TCH-005
Testruns uitsluiten van docentresultaten
REQ-UC-DOC-RES-005-009SRS-LRN-006
SRS-TCH-004
SRS-NFR-AUD-001
AC-LRN-006
AC-TCH-004
AC-NFR-AUD-001
Niet-afgeronde runs buiten resultaatgeschiedenis houden
REQ-UC-DOC-RES-005-010SRS-TCH-001
AC-TCH-001
Technische identifiers niet als gebruikersgerichte herkenningsgegevens tonen
REQ-UC-DOC-RES-005-011SRS-TCH-004
AC-TCH-004
Resultaatinzage zonder domeinmutatie verwerken