UC-LLN-DEL-005 — Ontvangen gedeelde oefening verwijderen
1. Kerngegevens
| Veld | Waarde |
|---|---|
| Usecase-ID | UC-LLN-DEL-005 |
| Naam | Ontvangen gedeelde oefening verwijderen |
| Domein | Leerling |
| Subdomein | Gedeelde oefeningen |
| Primaire actor | Leerling |
| Secundaire actor(en) | OefenHub frontend, OefenHub backend, autorisatielaag, database |
| Rolcontext | Ingelogde gebruiker met actieve leerlingrolcontext die ontvanger is van de gedeelde oefening. |
| Betrokken schermen | Ontvangen gedeelde oefeningen; verwijderbevestiging; lege of bijgewerkte overzichtstoestand. |
| Gerelateerde usecases | UC-LLN-DEL-002; UC-LLN-DEL-003; UC-LLN-DEL-004; UC-LLN-HIS-001; UC-LLN-HIS-004 |
| Primaire entiteiten | SharedExercises, Users, ExerciseRuns |
| Secundaire entiteiten / events | Ontvangerverwijdermarkering, SharedExerciseHiddenByRecipient |
| Gerelateerde popups | POP-LLN-DEL-RECEIVED-DELETE-CONFIRM, POP-LLN-DEL-RECEIVED-DELETE-SUCCESS, POP-LLN-DEL-RECEIVED-DELETE-ERROR |
| Popupregister | Centrale bron; deze usecase verwijst uitsluitend naar PopupKey. |
| MoSCoW | Should |
2. Omschrijving
Deze usecase beschrijft hoe een leerling een ontvangen gedeelde oefening uit het eigen overzicht verwijdert. Verwijderen is een zichtbaarheidshandeling voor de ontvanger. Het verwijdert geen bronrun van de afzender, geen gedeelde-oefeningenhistorie en geen afgeronde ontvangerruns.
Na verwijderen verschijnt het item niet meer in het ontvangen gedeelde-oefeningenoverzicht van deze leerling. Eerder afgeronde ontvangerruns blijven via de normale geschiedenis beschikbaar.
3. Scope
3.1 Binnen scope
- Verwijderactie tonen voor een ontvangen gedeelde oefening.
- Bevestiging vragen voordat de zichtbaarheid wordt aangepast.
- Server-side controleren dat de ingelogde leerling de ontvanger is.
- Vastleggen van een ontvangergebonden verwijdermarkering.
- Bijwerken van het overzicht na succesvolle verwerking.
3.2 Buiten scope
- Hard verwijderen van gedeelde-oefeningenrecords.
- Verwijderen van bronrun, ontvangerruns, resultaten of geschiedenis.
- Intrekken van gedeelde oefeningen door de afzender.
- Vriendschap beëindigen of wijzigen.
- Mailboxbericht verwijderen.
- Herstellen van een verwijderd ontvangen item.
4. Pre-condities
| ID | Voorwaarde |
|---|---|
| PRE-001 | De gebruiker is ingelogd met een actieve leerlingrolcontext. |
| PRE-002 | Het gedeelde record bestaat en is gericht aan de ingelogde leerling. |
| PRE-003 | Het item is nog zichtbaar in het ontvangen overzicht van de leerling. |
| PRE-004 | De leerling bevestigt de verwijderactie via de centrale popupafhandeling. |
5. Post-condities
| ID | Resultaat |
|---|---|
| POST-001 | Bij succes is het ontvangen item niet meer zichtbaar in het overzicht van de ontvanger. |
| POST-002 | De zichtbaarheidshandeling is herleidbaar naar de ontvanger en het tijdstip. |
| POST-003 | De bronrun van de afzender blijft ongewijzigd. |
| POST-004 | Eerdere ontvangerruns en afgeronde resultaten blijven behouden. |
| POST-005 | Relaties, uitnodigingen, profielgegevens en autorisaties blijven ongewijzigd. |
| POST-006 | Bij foutafhandeling blijft de bestaande zichtbaarheidstoestand intact. |
6. Trigger
De leerling kiest Verwijderen bij een ontvangen gedeelde oefening in het eigen overzicht en bevestigt de actie.
7. Normale processtroom
| Stap | Actor | Scherm / component | Actie | Systeemrespons | Data / regel |
|---|---|---|---|---|---|
| 1 | Leerling | Ontvangen gedeelde oefeningen | Kiest Verwijderen. | Frontend toont bevestigingspopup. | POP-LLN-DEL-RECEIVED-DELETE-CONFIRM. |
| 2 | Leerling | Bevestigingspopup | Bevestigt verwijderen. | Frontend stuurt verwijderverzoek. | PRE-004. |
| 3 | Backend | Autorisatielaag | Controleert sessie en leerlingrol. | Alleen ontvanger mag verwijderen. | PRE-001. |
| 4 | Backend | Database | Laadt gedeeld record. | Record moet bij ontvanger horen. | PRE-002. |
| 5 | Backend | Database | Controleert huidige zichtbaarheid. | Alleen zichtbaar item wordt gemarkeerd. | PRE-003. |
| 6 | Backend | Database | Zet ontvangerverwijdermarkering. | Item verdwijnt uit overzicht. | POST-001, POST-002. |
| 7 | Backend | Event/audit | Registreert zichtbaarheidshandeling. | Verwerking is herleidbaar. | SharedExerciseHiddenByRecipient. |
| 8 | Frontend | Overzicht | Vernieuwt lijst. | Leerling ziet bijgewerkt overzicht. | POST-001. |
8. Alternatieve en exceptionele processtromen
| ID | Vanaf stap | Situatie | Systeemgedrag | Popup / melding | Datamutatie |
|---|---|---|---|---|---|
| ALT-001 | 1 | Leerling annuleert de bevestiging. | Popup sluit en overzicht blijft ongewijzigd. | Geen vervolgpopup vereist. | Geen. |
| ALT-002 | 3 | Gebruiker is geen leerling. | Backend weigert toegang. | Generieke toegangafhandeling. | Geen. |
| ALT-003 | 4 | Record bestaat niet of hoort niet bij de leerling. | Backend blokkeert zonder data te lekken. | POP-LLN-DEL-RECEIVED-DELETE-ERROR. | Geen. |
| ALT-004 | 5 | Item is al verwijderd uit overzicht. | Backend behandelt de actie idempotent of toont veilige melding. | Inline of succesafhandeling. | Geen extra wijziging. |
| ALT-005 | 6 | Databasefout tijdens markeren. | Verwijdering wordt teruggedraaid. | POP-LLN-DEL-RECEIVED-DELETE-ERROR. | Zichtbaarheid blijft intact. |
| ALT-006 | 8 | Overzicht verversen faalt na succesvolle markering. | Verwijdermarkering blijft geldig; gebruiker kan bij opnieuw laden de juiste toestand zien. | Generieke foutafhandeling. | Markering blijft geldig. |
9. Business rules
| ID | Regel |
|---|---|
| BR-001 | Alleen de ontvanger mag een ontvangen gedeelde oefening uit het eigen overzicht verwijderen. |
| BR-002 | Verwijderen is een ontvangergebonden zichtbaarheidshandeling. |
| BR-003 | Verwijderen voert geen hard delete uit op gedeelde-oefeningenrecords. |
| BR-004 | Verwijderen wijzigt de bronrun van de afzender niet. |
| BR-005 | Verwijderen wijzigt eerdere ontvangerruns, resultaten en geschiedenis niet. |
| BR-006 | Verwijderen beëindigt geen vriendschap en trekt geen toestemming of autorisatie in. |
| BR-007 | Een verwijderd ontvangen item telt niet meer mee in het ontvangen gedeelde-oefeningenoverzicht. |
| BR-008 | Afgeronde ontvangerruns blijven via geschiedenis vindbaar volgens de normale geschiedenisregels. |
10. Datavalidatie
| Veld / object | Validatie |
|---|---|
| Sessiecontext | Bevat actief intern Users.Id en actieve leerlingrol. |
SharedExerciseId | Bestaat en is gekoppeld aan de ingelogde leerling als ontvanger. |
| Verwijderstatus | Item is zichtbaar voor de ontvanger of de actie wordt veilig idempotent afgehandeld. |
| Actor | Wordt server-side uit sessie bepaald. |
| Bevestiging | Komt uit de centrale popupafhandeling; popuptekst wordt niet in de usecase beheerd. |
11. Datamutaties en events
| Stap | Type | Entiteit / event | Mutatie |
|---|---|---|---|
| 6 | Update | SharedExercises | Zet ontvangergebonden verwijdermarkering, bijvoorbeeld verwijdermoment en verwijderende ontvanger. |
| 7 | Event/audit | SharedExerciseHiddenByRecipient | Registreert dat de ontvanger het item uit het overzicht heeft verwijderd. |
12. Geen datamutaties
| Entiteit | Reden |
|---|---|
| Bronrun van afzender | Blijft ongewijzigd. |
| Eerdere ontvangerruns | Blijven historisch beschikbaar. |
ExerciseRunProgress | Voortgang wordt niet aangepast. |
UserRelationships | Relaties worden niet gewijzigd. |
RelationshipInvitations | Uitnodigingen vallen buiten deze flow. |
SystemMessages | Mailboxberichten worden niet verwijderd door deze actie. |
UserSettings | Voorkeuren worden niet gewijzigd. |
13. State diagram
14. Decision flow
15. Data lifecycle diagram
16. Sequence diagrammen
16.1 Ontvangen item verwijderen uit overzicht
16.2 Verwijderen geweigerd
17. Popupverwijzingen
| PopupKey | Moment | Toepassing |
|---|---|---|
POP-LLN-DEL-RECEIVED-DELETE-CONFIRM | Leerling kiest Verwijderen. | Bevestigt dat het item uit het eigen overzicht verdwijnt. |
POP-LLN-DEL-RECEIVED-DELETE-SUCCESS | Verwijdermarkering is opgeslagen. | Bevestigt succesvolle verwerking. |
POP-LLN-DEL-RECEIVED-DELETE-ERROR | Verwijderen faalt of wordt geweigerd. | Veilige foutafhandeling. |
18. Afleiding naar Functioneel Ontwerp / Technisch Ontwerp / Software Requirements Specification
| Doeldocument | Afleiding |
|---|---|
| Functioneel Ontwerp | Gedeelde oefeningen beschrijft verwijderen/verbergen van ontvangen gedeelde oefeningen uit het leerlingoverzicht. |
| Technisch Ontwerp | Oefenruns, voortgang, resultaten, statistieken en PDF-brondata beschrijft soft delete/verbergstatus zonder bronrun of ontvangerrun te verwijderen. |
| Technisch Ontwerp | Readmodels, tellers, badges, caching en materialisatie beschrijft uitsluiting uit readmodels en tellerherberekening. |
| Technisch Ontwerp | Privacy, retentie, anonimisering en gegevensbescherming beschrijft historische context, soft links en retentiegrenzen. |
| Software Requirements Specification | Borgt de centrale requirements voor verwijderen/verbergen, brondataretentie, autorisatie en veilige foutafhandeling. |
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-005-001 | SRS-RDM-001 SRS-LRN-009 SRS-SHR-004 SRS-SHR-007 AC-RDM-001 AC-LRN-009 AC-SHR-004 AC-SHR-007 | Een ontvangen gedeelde oefening uit het eigen overzicht kunnen verwijderen |
REQ-UC-LLN-DEL-005-002 | SRS-LRN-009 SRS-SHR-004 SRS-SHR-007 AC-LRN-009 AC-SHR-004 AC-SHR-007 | Voor verwijderen expliciete bevestiging vragen |
REQ-UC-LLN-DEL-005-003 | SRS-LRN-009 SRS-SHR-004 SRS-SHR-007 AC-LRN-009 AC-SHR-004 AC-SHR-007 | Verwijderen beperken tot de ontvanger van het gedeelde record |
REQ-UC-LLN-DEL-005-004 | SRS-LRN-009 SRS-SHR-004 SRS-SHR-007 AC-LRN-009 AC-SHR-004 AC-SHR-007 | Verwijderen uitvoeren als ontvangergebonden zichtbaarheidshandeling |
REQ-UC-LLN-DEL-005-005 | SRS-LRN-010 SRS-SHR-003 SRS-NFR-AUD-001 AC-LRN-010 AC-SHR-003 AC-NFR-AUD-001 | Bronrun, ontvangerruns en geschiedenis niet verwijderen |
REQ-UC-LLN-DEL-005-006 | SRS-AUTH-001 SRS-REL-001 SRS-LRN-009 SRS-SHR-001 AC-AUTH-001 AC-REL-001 AC-LRN-009 AC-SHR-001 | Vriendschap of autorisaties niet wijzigen door deze actie |
REQ-UC-LLN-DEL-005-007 | SRS-RDM-001 SRS-LRN-009 SRS-SHR-004 SRS-SHR-007 AC-RDM-001 AC-LRN-009 AC-SHR-004 AC-SHR-007 | Verwijderde items uitsluiten uit het ontvangen overzicht |
REQ-UC-LLN-DEL-005-008 | SRS-LRN-009 SRS-SHR-001 SRS-NFR-AVL-001 AC-LRN-009 AC-SHR-001 AC-NFR-AVL-001 | Foutafhandeling uitvoeren zonder bestaande zichtbaarheid ongecontroleerd te wijzigen |