Skip to main content

UC-LLN-OEF-004 — Vraag beantwoorden

1. Kerngegevens

VeldWaarde
Usecase-IDUC-LLN-OEF-004
NaamVraag beantwoorden
DomeinLeerling / Oefenen en voortgang
Primaire actorLeerling
Secundaire actor(en)OefenHub frontend, OefenHub backend, routeguard, autorisatielaag, technische oefenmodule, database, SignalR-hub
RolcontextIngelogde gebruiker met actieve leerlingrol, geldige niveaucontext en een toegankelijke lopende exercise run.
Betrokken schermenOefenscherm, vraagcomponent, antwoordveld, voortgangsindicator, routeguard, live-meekijkupdates.
Gerelateerde usecasesUC-LLN-OEF-002 — Verder gaan met niet-afgeronde oefening; UC-LLN-OEF-003 — Nieuwe oefening starten; UC-LLN-OEF-005 — Antwoord tonen na bevestiging; UC-LLN-OEF-006 — Geen idee gebruiken; UC-LLN-OEF-008 — Oefening afronden; UC-LLN-TOEG-003 — Oefeningstoegang controleren bij openen
Primaire entiteitenExerciseRuns, ExerciseRunProgress, Exercises, ExerciseModules
Secundaire entiteiten / eventsExerciseQuestionAnswered, ExerciseProgressSaved, ExerciseRunTotalsUpdated, LiveViewProgressUpdated, ExerciseAnswerRejected
Gerelateerde popupsNiet van toepassing
PopupregisterNiet van toepassing
MoSCoWMust

2. Omschrijving

Deze usecase beschrijft hoe een leerling een reguliere vraag binnen een lopende oefening beantwoordt. De leerling ziet één vraag tegelijk, vult het antwoord in en bevestigt het antwoord via de daarvoor bedoelde actie. Het systeem valideert opnieuw server-side of de run nog bestaat, niet afgerond is, bij de leerling hoort en binnen de actuele toegangscontext gebruikt mag worden.

Na bevestiging verwerkt OefenHub het antwoord via de gekoppelde technische oefenmodule. De module bepaalt modulespecifiek of het antwoord goed of fout is. De generieke applicatielaag bewaart daarna de uniforme voortgangsgegevens: ingevuld antwoord, resultaatstatus, tijdstip van afronden van de vraag, relevante tellers op runniveau en actuele voortgang voor live meekijken.

Deze usecase gaat over het verwerken en opslaan van een regulier antwoord. Het tonen van het juiste antwoord na bevestiging valt onder UC-LLN-OEF-005. Het bewust kiezen van Geen idee valt onder UC-LLN-OEF-006. Het definitief afronden van de volledige oefening na de laatste vraag valt onder UC-LLN-OEF-008.

DRY-afbakening: deze usecase is geen bron voor moduleconfiguratie, oefeningtoegang, geschiedenisweergave, PDF-export of live-meekijkautorisatie. Zij gebruikt de bestaande toegangs- en modulecontext en legt alleen de vraaggebonden voortgang van de leerling vast.

3. Scope

Deze usecase omvat wel:

  • tonen van de actuele vraag binnen een lopende exercise run
  • invoeren van een regulier antwoord door de leerling
  • bevestigen van het antwoord
  • server-side controle van run, leerling, niveaucontext en vraagpositie
  • modulespecifieke validatie en antwoordcontrole
  • opslaan van het gegeven antwoord in de voortgangsdata
  • markeren van de vraag als administratief beantwoord
  • bijwerken van uniforme run-tellers voor goed en fout
  • bijwerken van vraaggebonden timinggegevens
  • publiceren van voortgang naar toegestane live-meekijkers
  • bepalen van de volgende functionele stap na antwoordverwerking
  • veilig blokkeren van dubbele, te late of ongeldige antwoordverwerking

Deze usecase omvat niet:

  • starten of genereren van een nieuwe exercise run
  • hervatten van een run vanaf de startpagina
  • bewust kiezen van Geen idee
  • tonen van het juiste antwoord als aparte vervolgweergave
  • berekenen van eindstatistieken na afronding van de volledige run
  • tonen van resultaatpopup of geschiedenis
  • PDF-export
  • docent-testmodus
  • modulebeheer of configuratiebeheer
  • live meekijken zelf door docent of ouder/voogd

4. Pre-condities

IDVoorwaarde
PRE-001De gebruiker is succesvol ingelogd.
PRE-002De gebruiker heeft een actieve leerlingrol.
PRE-003Er bestaat een lopende ExerciseRuns-context voor deze leerling.
PRE-004De run is niet afgerond en niet administratief geblokkeerd.
PRE-005De actuele vraag binnen de run is herleidbaar in de modulespecifieke payload of voortgangsstructuur.
PRE-006De gekoppelde technische module is voldoende beschikbaar om het antwoord te controleren.
PRE-007De leerling mag de run binnen de actuele context nog gebruiken.
PRE-008De vraag is nog niet definitief als beantwoord verwerkt.

5. Post-condities

IDResultaat
POST-001Het gegeven antwoord is server-side verwerkt of veilig geweigerd.
POST-002Bij succesvolle verwerking is de vraagvoortgang opgeslagen.
POST-003Bij succesvolle verwerking zijn uniforme run-tellers bijgewerkt.
POST-004Toegestane live-meekijkers kunnen de actuele voortgang ontvangen.
POST-005De run blijft lopend zolang niet de volledige oefening is afgerond.
POST-006De leerling wordt naar de juiste volgende UI-stap geleid.
POST-007Ongeldige of dubbele verwerking veroorzaakt geen dubbele tellerwijziging.
POST-008Er zijn geen relaties, autorisaties, profielinstellingen, berichten of meldingen gewijzigd.

6. Trigger

De usecase start wanneer een leerling in het oefenscherm een antwoord invult en de antwoordactie bevestigt voor de actuele vraag van een lopende exercise run.

7. Normale processtroom

StapActorScherm / componentActieSysteemresponsData / regel
1LeerlingOefenschermBekijkt de actuele vraag.Frontend toont de modulevraag en het antwoordveld.Eén vraag tegelijk zichtbaar.
2LeerlingAntwoordveldVoert een antwoord in.Frontend bewaart invoer tijdelijk client-side.Nog geen servermutatie.
3LeerlingOefenschermBevestigt het antwoord.Frontend verstuurt antwoord naar backend.Request bevat runcontext en vraagnummer.
4OefenHub backendRouteguardControleert sessie, leerlingrol en eigenaar van de run.Alleen de eigenaar van de run mag antwoord verwerken.ExerciseRuns.UserId.
5OefenHub backendToegangscontroleControleert of de run nog bruikbaar is.Afgeronde, geblokkeerde of ontoegankelijke run wordt geweigerd.Geen mutatie bij weigering.
6OefenHub backendVoortgangsserviceControleert of de vraag nog niet definitief verwerkt is.Dubbele submit wordt veilig geneutraliseerd.Idempotente verwerking.
7OefenHub backendModule-adapterLaadt de modulecontext voor de vraag.Module kan het antwoord interpreteren.ExerciseModuleId, payload.
8Technische oefenmoduleAntwoordcontroleControleert modulespecifiek het antwoord.Geeft resultaat goed/fout en eventueel genormaliseerde weergave terug.Module is bron voor antwoordlogica.
9OefenHub backendVoortgangsserviceSlaat gegeven antwoord, resultaat en afrondtijd van de vraag op.Vraag wordt administratief als beantwoord gemarkeerd.ExerciseRunProgress / payload.
10OefenHub backendRunserviceWerkt uniforme tellers op de run bij.Aantal goed/fout en voortgang worden actueel.Geen eindstatistieken op dit moment.
11OefenHub backendDatabaseCommit de voortgangsmutatie transactioneel.Antwoordverwerking is duurzaam vastgelegd.Geen gedeeltelijke tellerwijziging.
12OefenHub backendSignalR-hubPubliceert toegestane voortgangsupdate.Live-meekijkers kunnen actuele status zien.Alleen geautoriseerde meekijkers.
13OefenHub backendNavigatiebesluitBepaalt vervolg op basis van runconfiguratie.Bij ShowAnswerAfterSubmit volgt UC-LLN-OEF-005.Anders volgende vraag of afrondflow.
14OefenHub frontendOefenschermOntvangt resultaat van verwerking.Frontend toont volgende stap.UI volgt backendbesluit.
15OefenHub frontendApplicatieschilPast leerling-oefenmodus toe.Headerbadges, meldingenindicaties, systeemnotificatie-overlays en vergelijkbare afleidende terugkoppelingen blijven tijdens de actieve run verborgen of uitgesteld.Onderliggende data blijft server-side bestaan; UI-zichtbaarheid wijzigt geen berichten, meldingen of notificaties.

8. Alternatieve en exceptionele processtromen

IDVanaf stapSituatieSysteemgedragPopup / meldingDatamutatie
ALT-0013Antwoord ontbreekt terwijl module invoer vereistBackend weigert verwerking en geeft validatiefout terug.Inline validatieGeen
ALT-0024Gebruiker is niet langer ingelogdRouteguard stopt verwerking en start login-/sessieafhandeling.Niet van toepassingGeen
ALT-0034Run hoort niet bij deze leerlingBackend weigert toegang zonder details te lekken.ToegangafhandelingGeen
ALT-0045Run is al afgerondBackend accepteert geen nieuwe vraagmutatie.ComponentmeldingGeen
ALT-0055Run is door accountverwijdering of blokkade niet meer hervatbaarBackend weigert verwerking.ComponentmeldingGeen
ALT-0066Vraag is al verwerkt door dubbele submitBackend geeft actuele opgeslagen toestand terug zonder teller opnieuw te wijzigen.Niet van toepassingGeen nieuwe mutatie
ALT-0077Technische module kan antwoord niet interpreterenBackend weigert de vraagverwerking en logt technisch.ComponentmeldingGeen
ALT-0088Antwoord is syntactisch ongeldig voor deze moduleSysteem toont modulespecifieke validatiefout.Inline validatieGeen
ALT-00911Databasecommit faaltSysteem rolt de transactie terug en toont foutafhandeling.ComponentmeldingGeen blijvende mutatie
ALT-01012SignalR-update faaltAntwoord blijft opgeslagen; live-update wordt niet als antwoordfout behandeld.Niet van toepassingAntwoordmutatie blijft geldig
ALT-01113Laatste vraag is beantwoordSysteem leidt door naar afrondflow.Niet van toepassingVraagmutatie is opgeslagen
ALT-01213ShowAnswerAfterSubmit = falseSysteem toont direct de volgende vraag of afrondactie.Niet van toepassingGeen extra mutatie

9. Business rules

IDRegel
BR-001Een leerling mag alleen antwoorden verwerken binnen een eigen lopende exercise run.
BR-002Elke bevestigde vraag wordt server-side opgeslagen voordat een volgende functionele stap betrouwbaar beschikbaar is.
BR-003De technische module bepaalt modulespecifiek of het antwoord inhoudelijk goed of fout is.
BR-004De generieke applicatielaag bewaart uniforme voortgang, timing en run-tellers.
BR-005Een vraag mag niet dubbel meetellen door dubbele submit, refresh of netwerkherhaling.
BR-006Een afgeronde run mag geen nieuwe antwoordmutaties accepteren.
BR-007Antwoordverwerking mag geen relaties, autorisaties, berichten, meldingen of profielgegevens wijzigen.
BR-008Live-meekijkupdates zijn afgeleid uit opgeslagen voortgang en vervangen de databaseopslag niet.
BR-009Bij technische fouten mag geen gedeeltelijk bijgewerkte voortgang zichtbaar worden als definitieve waarheid.
BR-010Wanneer ShowAnswerAfterSubmit = true, blijft het opslaan van het antwoord onderdeel van deze usecase en het tonen van het antwoord onderdeel van UC-LLN-OEF-005.
BR-011Wanneer AllowMarkAsDunno = true, blijft de expliciete Geen idee-actie onderdeel van UC-LLN-OEF-006.
BR-012De leerling ziet geen technische identifiers, payloadsleutels of module-interne foutdetails.
BR-013De antwoordverwerking gebruikt de actuele server-side runcontext en niet uitsluitend clientstate.
BR-014De voortgangsindicator wordt gebaseerd op opgeslagen of server-side bevestigde voortgang.
BR-015Tijdens een actieve leerling-oefenrun mag de applicatieschil geen afleidende badges, tellerupdates, systeemnotificatie-overlays of meldingen-/berichtenterugkoppelingen tonen.

10. Datavalidatie

Veld / objectValidatie
ExerciseRunIdMoet bestaan, bij de leerling horen en niet afgerond zijn.
VraagnummerMoet binnen de vraagreeks van de run vallen.
AntwoordwaardeMoet voldoen aan modulespecifieke invoerregels.
ModulecontextMoet overeenkomen met de module waarmee de run is gegenereerd.
VraagstatusMag nog niet definitief beantwoord zijn.
TiminggegevensAfrondtijd moet server-side worden bepaald.
TellersMoeten consistent blijven met de vraagstatussen binnen de run.
ClientstateMag geen autorisatie, eigenaar of eindstatus bepalen.
Live-updateMag alleen naar geautoriseerde meekijkers worden verzonden.
Applicatieschil in oefenmodusMag de leerling niet afleiden met nieuwe berichten-, meldingen- of systeemnotificatie-indicaties zolang de run actief is.

11. Datamutaties en events

StapTypeEntiteit / eventMutatie
9MutatieExerciseRunProgressGegeven antwoord, resultaatstatus, afrondtijd en beantwoordstatus worden opgeslagen.
9MutatieModulepayloadModulespecifieke vraagvoortgang wordt bijgewerkt waar de gekozen opslagvorm dit vereist.
10MutatieExerciseRunsUniforme totalen voor goed/fout en actuele voortgang worden bijgewerkt.
11EventExerciseQuestionAnsweredVraag is succesvol als regulier antwoord verwerkt.
11EventExerciseProgressSavedServer-side voortgang is duurzaam opgeslagen.
12EventLiveViewProgressUpdatedGeautoriseerde meekijkers kunnen voortgang ontvangen.
6EventExerciseAnswerDuplicateIgnoredDubbele verwerking is geneutraliseerd zonder tellerwijziging.
7EventExerciseAnswerRejectedAntwoordverwerking is geweigerd door technische of functionele validatie.

12. Geen datamutaties

EntiteitReden
UsersVraag beantwoorden wijzigt het account niet.
UserSettingsEr wordt geen voorkeur of niveaucontext gewijzigd.
UserRelationshipsRelaties zijn niet betrokken bij antwoordverwerking.
StudentLevelAuthorizationsToegang wordt alleen gecontroleerd.
PrivateMessageThreadsEr ontstaan geen privéberichten.
SystemMessagesEr ontstaan geen systeemberichten.
TicketsAntwoordverwerking maakt geen melding aan.
LiveViewAuditDe meekijksessie zelf wordt niet gestart of beëindigd in deze usecase.

13. State diagram

14. Decision flow

15. Data lifecycle diagram

16. Sequence diagrammen

16.1 Regulier antwoord succesvol verwerken

16.2 Dubbele submit neutraliseren

17. Popupverwijzingen

PopupKeyMomentDoel
Niet van toepassingNiet van toepassingReguliere antwoordverwerking gebruikt geen domeinspecifieke popupregister-popup.

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

DoeldocumentAfleiding
Functioneel OntwerpFunctioneel Ontwerp beschrijft starten, hervatten, beantwoorden, Geen idee, onderbreken, afronden en resultaatnavigatie binnen de leerling-oefenflow.
Technisch OntwerpTechnisch Ontwerp: oefencatalogus, oefenmodulecontract, oefenruns en voortgang, live meekijken en frontend-oefencontext beschrijft de technische afbakening, server-side brondata, autorisatie en UI-compositie voor deze usecase.
Software Requirements SpecificationSoftware Requirements Specification bevat centrale eisen en acceptatiecriteria voor oefenruns, voortgangsopslag, modulegedrag, foutafhandeling en veilige server-side verwerking.
Database-informatieDatabase-informatie blijft bron voor ExerciseRuns, ExerciseRunProgress, payloadvelden, snapshots en soft links richting gebruiker en catalogus.
OntwerpbronnenOntwerpbronnen bevatten aanvullende businessregels voor oefenflow, modulepayloads, Geen idee en voortgangsregistratie.

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-LLN-OEF-004-001SRS-LRN-003
AC-LRN-003
Een antwoord alleen verwerken voor de eigenaar van de lopende exercise run
REQ-UC-LLN-OEF-004-002SRS-LRN-003
AC-LRN-003
Vóór antwoordverwerking controleren dat de run niet afgerond is
REQ-UC-LLN-OEF-004-003SRS-LRN-003
AC-LRN-003
Vóór antwoordverwerking controleren dat de vraag nog niet definitief verwerkt is
REQ-UC-LLN-OEF-004-004SRS-LRN-003
SRS-MOD-003
AC-LRN-003
AC-MOD-003
Het antwoord modulespecifiek laten valideren en controleren
REQ-UC-LLN-OEF-004-005SRS-AUTH-001
SRS-LRN-003
AC-AUTH-001
AC-LRN-003
Het gegeven antwoord server-side opslaan na bevestiging
REQ-UC-LLN-OEF-004-006SRS-AUTH-001
SRS-LRN-006
AC-AUTH-001
AC-LRN-006
Vraaggebonden afrondtijd server-side bepalen en opslaan
REQ-UC-LLN-OEF-004-007SRS-RDM-001
SRS-RDM-002
SRS-RDM-006
SRS-LRN-003
AC-RDM-001
AC-RDM-002
AC-RDM-006
AC-LRN-003
Uniforme run-tellers bijwerken na succesvolle antwoordverwerking
REQ-UC-LLN-OEF-004-008SRS-LRN-009
AC-LRN-009
Voorkomen dat een dubbele submit dubbel meetelt
REQ-UC-LLN-OEF-004-009SRS-LRN-003
AC-LRN-003
Antwoordverwerking transactioneel uitvoeren
REQ-UC-LLN-OEF-004-010SRS-LRN-003
SRS-SHR-001
SRS-NFR-LOG-001
AC-LRN-003
AC-SHR-001
AC-NFR-LOG-001
Bij technische fouten voorkomen dat gedeeltelijke voortgang als definitief wordt opgeslagen
REQ-UC-LLN-OEF-004-011SRS-AUTH-001
SRS-LRN-003
SRS-LIVE-002
AC-AUTH-001
AC-LRN-003
AC-LIVE-002
Geautoriseerde live-meekijkers kunnen informeren na opgeslagen voortgang
REQ-UC-LLN-OEF-004-012SRS-LRN-003
SRS-LIVE-001
SRS-NFR-AVL-001
SRS-ARCH-003
AC-LRN-003
AC-LIVE-001
AC-NFR-AVL-001
AC-ARCH-003
Een mislukte SignalR-update niet behandelen als mislukte antwoordopslag
REQ-UC-LLN-OEF-004-013SRS-LRN-003
AC-LRN-003
Na antwoordverwerking bepalen of de volgende stap antwoordweergave, volgende vraag of afronding is
REQ-UC-LLN-OEF-004-014SRS-LRN-009
SRS-MOD-003
SRS-NFR-SEC-001
AC-LRN-009
AC-MOD-003
AC-NFR-SEC-001
Technische modulefouten veilig afhandelen zonder module-interne details aan de leerling te tonen
REQ-UC-LLN-OEF-004-015SRS-LRN-009
SRS-MOD-003
AC-LRN-009
AC-MOD-003
Inline validatiefouten kunnen tonen wanneer invoer niet voldoet aan modulespecifieke regels
REQ-UC-LLN-OEF-004-016SRS-AUTH-001
SRS-REL-001
SRS-MSG-001
SRS-TIC-002
SRS-LRN-003
AC-AUTH-001
AC-REL-001
AC-MSG-001
AC-TIC-002
AC-LRN-003
Bij vraag beantwoorden geen relaties, autorisaties, berichten of meldingen wijzigen
REQ-UC-LLN-OEF-004-017SRS-AUTH-001
SRS-AUTH-002
SRS-LRN-009
SRS-GUA-001
AC-AUTH-001
AC-AUTH-002
AC-LRN-009
AC-GUA-001
Bij directe of verouderde clientstate opnieuw de actuele server-side runcontext gebruiken
REQ-UC-LLN-OEF-004-018SRS-LRN-002
SRS-LRN-007
SRS-LIVE-001
AC-LRN-002
AC-LRN-007
AC-LIVE-001
Vraagvoortgang zodanig opslaan dat hervatten en live meekijken betrouwbaar blijven
REQ-UC-LLN-OEF-004-019SRS-AUTH-001
SRS-LRN-003
AC-AUTH-001
AC-LRN-003
De voortgangsindicator baseren op server-side bevestigde voortgang
REQ-UC-LLN-OEF-004-020SRS-AUTH-001
SRS-ACC-002
SRS-ACC-004
SRS-LRN-003
AC-AUTH-001
AC-ACC-002
AC-ACC-004
AC-LRN-003
Een antwoordrequest weigeren wanneer de run door accountstatus of verwijdering niet meer bruikbaar is
REQ-UC-LLN-OEF-004-021SRS-LRN-003
AC-LRN-003
Voorkomen dat antwoorden voor toekomstige of niet-bestaande vragen worden opgeslagen
REQ-UC-LLN-OEF-004-022SRS-LRN-009
SRS-MOD-003
AC-LRN-009
AC-MOD-003
De modulespecifieke payload alleen via de modulegrens interpreteren
REQ-UC-LLN-OEF-004-023SRS-RDM-001
SRS-RDM-002
SRS-RDM-009
SRS-LRN-009
AC-RDM-001
AC-RDM-002
AC-RDM-009
AC-LRN-009
De uniforme goed/fout-tellers consistent houden met opgeslagen vraagstatussen
REQ-UC-LLN-OEF-004-024SRS-LRN-003
AC-LRN-003
Bij refresh na antwoordverwerking de opgeslagen toestand kunnen reconstrueren
REQ-UC-LLN-OEF-004-025SRS-LRN-003
SRS-NFR-SEC-001
AC-LRN-003
AC-NFR-SEC-001
Een verlopen sessie veilig afhandelen zonder antwoordmutatie
REQ-UC-LLN-OEF-004-026SRS-LRN-003
AC-LRN-003
Bij antwoordverwerking geen eindstatistieken berekenen voordat de volledige run is afgerond
REQ-UC-LLN-OEF-004-027SRS-LRN-009
AC-LRN-009
De leerling geen technische identifiers of payloadstructuren tonen
REQ-UC-LLN-OEF-004-028SRS-LRN-003
SRS-MOD-003
AC-LRN-003
AC-MOD-003
Antwoordverwerking kunnen uitvoeren voor verschillende moduletypen zonder generieke opslagregels te breken
REQ-UC-LLN-OEF-004-029SRS-LRN-003
AC-LRN-003
Na succesvolle antwoordverwerking een consistente vervolgrespons teruggeven aan de frontend
REQ-UC-LLN-OEF-004-030SRS-AUTH-001
SRS-LRN-003
AC-AUTH-001
AC-LRN-003
Alle antwoordverwerking server-side autoriseren, ook wanneer de vraag al in de browser zichtbaar was
REQ-UC-LLN-OEF-004-031SRS-RDM-001
SRS-RDM-002
SRS-RDM-005
SRS-RDM-006
SRS-RDM-007
SRS-MSG-006
AC-RDM-001
AC-RDM-002
AC-RDM-005
AC-RDM-006
AC-RDM-007
AC-MSG-006
Tijdens een actieve leerling-oefenrun afleidende berichtenbadges, meldingenindicaties, systeemnotificatie-overlays en vergelijkbare terugkoppelingen visueel onderdrukken zonder...