UC-LLN-DEL-002 — Ontvangen gedeelde oefeningen bekijken
1. Kerngegevens
| Veld | Waarde |
|---|---|
| Usecase-ID | UC-LLN-DEL-002 |
| Naam | Ontvangen gedeelde oefeningen bekijken |
| Domein | Leerling |
| Subdomein | Gedeelde oefeningen |
| Primaire actor | Leerling |
| Secundaire actor(en) | OefenHub frontend, OefenHub backend, autorisatielaag, database |
| Rolcontext | Ingelogde gebruiker met actieve leerlingrolcontext. |
| Betrokken schermen | Ontvangen gedeelde oefeningen; berichtenoverzicht als mogelijke ingang; leerlingnavigatie. |
| Gerelateerde usecases | UC-LLN-DEL-001; UC-LLN-DEL-003; UC-LLN-DEL-004; UC-LLN-DEL-005; UC-GEN-MSG-003 |
| Primaire entiteiten | SharedExercises, Users, ExerciseRuns |
| Secundaire entiteiten / events | SystemMessages, ExerciseModules, snapshotvelden, afgeleide overzichtsstatus |
| Gerelateerde popups | POP-LLN-DEL-SHARED-NOT-AVAILABLE |
| Popupregister | Centrale bron; deze usecase verwijst uitsluitend naar PopupKey. |
| MoSCoW | Must |
2. Omschrijving
Deze usecase beschrijft hoe een leerling het eigen overzicht met ontvangen gedeelde oefeningen bekijkt. Een ontvangen gedeelde oefening is een administratief record dat door een deelactie van een andere leerling is ontstaan. Alleen bekijken maakt geen nieuwe ExerciseRun aan.
Het overzicht wordt server-side gefilterd op de ingelogde leerling als ontvanger. Systeemberichten kunnen naar dit overzicht of naar een specifiek ontvangen item verwijzen, maar de mailbox is niet de bron van waarheid voor het gedeelde-oefeningenrecord.
3. Scope
3.1 Binnen scope
- Tonen van ontvangen gedeelde oefeningen voor de ingelogde leerling.
- Uitsluiten van items die door de ontvanger uit het overzicht zijn verwijderd.
- Tonen van historische snapshotgegevens.
- Tonen van afgeleide status en beschikbare vervolgacties.
- Veilig afhandelen van niet-beschikbare of technisch niet-startbare gedeelde inhoud.
3.2 Buiten scope
- Delen van een oefening door de afzender.
- Starten of opnieuw maken van een gedeelde oefening.
- Verwijderen uit het ontvangen overzicht.
- Vriendschap vormen of beëindigen.
- Vraagbeantwoording, resultaatdetail, statistieken en PDF-export.
- Mailboxleesstatus verwerken buiten de generieke berichtenusecase.
4. Pre-condities
| ID | Voorwaarde |
|---|---|
| PRE-001 | De gebruiker is ingelogd met een actieve leerlingrolcontext. |
| PRE-002 | De OefenHub-sessiecontext is server-side geldig opgebouwd. |
| PRE-003 | Het systeem kan het interne Users.Id van de leerling bepalen. |
| PRE-004 | De gedeelde-oefeningenfunctionaliteit is beschikbaar voor de leerlingomgeving. |
| PRE-005 | Routeparameters of browserstate bepalen niet welke leerlingdata wordt gelezen. |
5. Post-condities
| ID | Resultaat |
|---|---|
| POST-001 | De leerling ziet uitsluitend eigen ontvangen gedeelde oefeningen. |
| POST-002 | Alleen niet-verwijderde ontvangen items zijn zichtbaar in het overzicht. |
| POST-003 | Door bekijken ontstaat geen nieuwe ExerciseRun. |
| POST-004 | De bronrun van de afzender blijft ongewijzigd. |
| POST-005 | Relaties, uitnodigingen, profielgegevens en autorisaties blijven ongewijzigd. |
6. Trigger
De leerling opent het overzicht met ontvangen gedeelde oefeningen via de leerlingnavigatie of via een toegestane verwijzing vanuit een systeembericht.
7. Normale processtroom
| Stap | Actor | Scherm / component | Actie | Systeemrespons | Data / regel |
|---|---|---|---|---|---|
| 1 | Leerling | Ontvangen gedeelde oefeningen | Opent het overzicht. | Frontend vraagt overzichtsdata op. | PRE-001. |
| 2 | Backend | Autorisatielaag | Controleert sessie en leerlingrol. | Alleen leerlingcontext krijgt toegang. | PRE-002. |
| 3 | Backend | Database | Bepaalt ontvanger uit sessie. | Route-user-id wordt genegeerd. | BR-002. |
| 4 | Backend | Database | Laadt SharedExercises voor de ontvanger. | Alleen eigen records worden geselecteerd. | BR-003. |
| 5 | Backend | Database | Filtert ontvangerverwijdering uit. | Verborgen items komen niet in het overzicht. | BR-004. |
| 6 | Backend | Readmodel | Verrijkt met snapshotcontext en afgeleide status. | Historische labels en acties zijn beschikbaar. | BR-005, BR-006. |
| 7 | Frontend | Overzicht | Toont lijst. | Leerling ziet start-, opnieuw-maak- of verwijderactie waar toegestaan. | Geen mutatie. |
8. Alternatieve en exceptionele processtromen
| ID | Vanaf stap | Situatie | Systeemgedrag | Popup / melding | Datamutatie |
|---|---|---|---|---|---|
| ALT-001 | 2 | Geen actieve leerlingcontext. | Routeguard of backend blokkeert toegang. | Generieke toegangafhandeling. | Geen. |
| ALT-002 | 4 | Geen ontvangen gedeelde oefeningen. | Overzicht toont lege toestand. | Geen popup vereist. | Geen. |
| ALT-003 | 5 | Alle ontvangen items zijn verwijderd uit overzicht. | Overzicht toont lege toestand. | Geen popup vereist. | Geen. |
| ALT-004 | 6 | Snapshotgegevens zijn gedeeltelijk incompleet. | Systeem toont veilige fallback zonder technische identifiers. | Inline melding indien nodig. | Geen. |
| ALT-005 | 6 | Onderliggende broninhoud is niet startbaar. | Item blijft zichtbaar met veilige niet-beschikbaarstatus of uitgeschakelde startactie. | POP-LLN-DEL-SHARED-NOT-AVAILABLE bij interactie. | Geen. |
| ALT-006 | 1 | Ingang vanuit systeembericht verwijst naar niet-toegankelijk item. | Systeem toont niet-beschikbaarafhandeling zonder data te lekken. | POP-LLN-DEL-SHARED-NOT-AVAILABLE. | Geen domeinmutatie. |
| ALT-007 | 4 | Databasequery faalt. | Systeem toont veilige foutafhandeling. | Generieke foutafhandeling. | Geen. |
9. Business rules
| ID | Regel |
|---|---|
| BR-001 | Alleen een actieve leerlingrolcontext mag het overzicht openen. |
| BR-002 | De ontvanger wordt altijd bepaald uit de server-side sessiecontext. |
| BR-003 | Het overzicht toont uitsluitend gedeelde oefeningen voor de huidige leerling. |
| BR-004 | Ontvangerverwijderde items worden niet in het overzicht getoond. |
| BR-005 | Snapshotlabels worden niet herschreven door naamwijzigingen of categoriemigraties. |
| BR-006 | De zichtbare status is afgeleid uit het gedeelde record en gekoppelde ontvangerruns. |
| BR-007 | Alleen bekijken maakt geen ExerciseRun aan. |
| BR-008 | Een beëindigde vriendschap verwijdert een reeds ontvangen gedeelde oefening niet automatisch. |
| BR-009 | Systeemberichten zijn navigatie-ingang en geen gedeelde-oefeningenrecord. |
| BR-010 | Technische identifiers zoals GUIDs worden niet aan de leerling getoond. |
10. Datavalidatie
| Veld / object | Validatie |
|---|---|
| Sessiecontext | Bevat actief intern Users.Id en actieve leerlingrol. |
| Ontvanger | Komt overeen met de ingelogde leerling. |
SharedExercises | Records worden gefilterd op ontvanger en zichtbaarheid voor ontvanger. |
| Routeparameter | Mag niet bepalen welke leerlingdata wordt gelezen. |
| Snapshot niveau | Mag historisch zijn en hoeft niet overeen te komen met actuele niveaucontext. |
| Snapshot categorie | Mag historisch zijn en hoeft niet overeen te komen met actuele centrale categorie-indeling. |
| Snapshot oefening | Mag historisch zijn en hoeft niet overeen te komen met actuele oefeningnaam. |
| Bronrunverwijzing | Wordt niet als technische identifier getoond. |
11. Datamutaties en events
Niet van toepassing. Deze usecase leest ontvangen gedeelde oefeningen en afgeleide statusinformatie, maar schrijft geen gedeelde-oefeningenrecord, ExerciseRun, relatie, uitnodiging, profielgegeven of autorisatie.
12. Geen datamutaties
| Entiteit | Reden |
|---|---|
SharedExercises | Bekijken wijzigt het record niet. |
ExerciseRuns | Door bekijken ontstaat geen ontvangerrun. |
| Bronrun van afzender | Blijft ongewijzigd. |
UserRelationships | Relaties worden alleen gelezen waar relevant voor context, niet gewijzigd. |
RelationshipInvitations | Uitnodigingen vallen buiten deze flow. |
SystemMessages | Leesstatus of berichtopening valt onder het generieke berichtendomein. |
UserSettings | Voorkeuren worden niet gewijzigd. |
13. State diagram
Niet van toepassing als zelfstandig statusmodel. De overzichtsstatus is een afgeleide waarde uit het gedeelde record, zichtbaarheid voor ontvanger en gekoppelde ontvangerruns.
14. Decision flow
15. Data lifecycle diagram
16. Sequence diagrammen
16.1 Overzicht openen
16.2 Ongeldige verwijzing vanuit systeembericht
17. Popupverwijzingen
| PopupKey | Moment | Toepassing |
|---|---|---|
POP-LLN-DEL-SHARED-NOT-AVAILABLE | Een gedeeld item is niet beschikbaar of niet toegankelijk. | Veilige uitleg zonder technische details of data van anderen te tonen. |
18. Afleiding naar Functioneel Ontwerp / Technisch Ontwerp / Software Requirements Specification
| Doeldocument | Afleiding |
|---|---|
| Functioneel Ontwerp | Gedeelde oefeningen beschrijft het ontvangen overzicht, lege staten en zichtbare acties. |
| Technisch Ontwerp | Oefenruns, voortgang, resultaten, statistieken en PDF-brondata beschrijft ontvangen gedeelde oefeningen als practice-brondata. |
| Technisch Ontwerp | Readmodels, tellers, badges, caching en materialisatie beschrijft readmodels en tellers voor het ontvangen overzicht. |
| Technisch Ontwerp | Frontend Blazor, routing, state en componentopbouw beschrijft page composition, lege staten en contextveilige UI-state. |
| Software Requirements Specification | Borgt de centrale requirements voor overzicht, filters, zichtbaarheid, lege staten en autorisatie. |
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-afleiding | Dekt | Usecasecontext |
|---|---|---|
REQ-UC-LLN-DEL-002-001 | SRS-LRN-009 SRS-SHR-001 AC-LRN-009 AC-SHR-001 | Ontvangen gedeelde oefeningen alleen tonen aan de bedoelde ontvanger |
REQ-UC-LLN-DEL-002-002 | SRS-AUTH-001 SRS-LRN-009 SRS-SHR-001 AC-AUTH-001 AC-LRN-009 AC-SHR-001 | De ontvanger bepalen uit server-side sessiecontext |
REQ-UC-LLN-DEL-002-003 | SRS-RDM-001 SRS-RDM-006 SRS-LRN-009 SRS-SHR-001 AC-RDM-001 AC-RDM-006 AC-LRN-009 AC-SHR-001 | Door overzichtsweergave geen ExerciseRun aanmaken |
REQ-UC-LLN-DEL-002-004 | SRS-RDM-001 SRS-LRN-009 SRS-SHR-004 SRS-SHR-007 AC-RDM-001 AC-LRN-009 AC-SHR-004 AC-SHR-007 | Door de ontvanger verwijderde items uitsluiten uit het overzicht |
REQ-UC-LLN-DEL-002-005 | SRS-LRN-009 SRS-SHR-008 AC-LRN-009 AC-SHR-008 | Historische snapshotgegevens kunnen tonen |
REQ-UC-LLN-DEL-002-006 | SRS-AUTH-001 SRS-LRN-009 SRS-SHR-001 AC-AUTH-001 AC-LRN-009 AC-SHR-001 | Vervolgacties server-side bepalen |
REQ-UC-LLN-DEL-002-007 | SRS-LRN-009 SRS-SHR-001 SRS-NFR-SEC-001 AC-LRN-009 AC-SHR-001 AC-NFR-SEC-001 | Niet-beschikbare gedeelde oefeningen veilig afhandelen |
REQ-UC-LLN-DEL-002-008 | SRS-MSG-001 SRS-LRN-009 SRS-SHR-002 SRS-SHR-005 AC-MSG-001 AC-LRN-009 AC-SHR-002 AC-SHR-005 | Systeemberichten behandelen als ingang en niet als bronrecord |