Skip to main content

UC-LLN-DEL-006 — Delen blokkeren zonder actieve vrienden

1. Kerngegevens

VeldWaarde
Usecase-IDUC-LLN-DEL-006
NaamDelen blokkeren zonder actieve vrienden
DomeinLeerling
SubdomeinGedeelde oefeningen
Primaire actorLeerling
Secundaire actor(en)OefenHub frontend, OefenHub backend, autorisatielaag, relatielaag, featurelaag
RolcontextIngelogde gebruiker met actieve leerlingrolcontext die een afgeronde oefening probeert te delen.
Betrokken schermenResultaatpopup na afronding; resultaatdetail vanuit geschiedenis; deelactie; blokkeerafhandeling.
Gerelateerde usecasesUC-LLN-DEL-001; UC-GEN-REL-001; UC-GEN-REL-002; UC-GEN-REL-005; UC-LLN-RES-001; UC-LLN-HIS-003
Primaire entiteitenUsers, UserRelationships, ExerciseRuns
Secundaire entiteiten / eventsFeature-instellingen, ShareExerciseDenied
Gerelateerde popupsPOP-LLN-DEL-NO-FRIENDS, POP-LLN-DEL-SHARE-FAILED
PopupregisterCentrale bron; deze usecase verwijst uitsluitend naar PopupKey.
MoSCoWMust

2. Omschrijving

Deze usecase beschrijft hoe OefenHub het delen van een oefening blokkeert wanneer delen functioneel niet mogelijk is. Dit kan gebeuren omdat de leerling geen actieve vrienden heeft, omdat vriendschappen voor deze leerling niet beschikbaar zijn, omdat oefeningdelen sitebreed of contextueel is uitgeschakeld, of omdat de bronrun niet deelbaar blijkt.

De usecase maakt geen relatie aan en start geen uitnodigingsflow. Zij toont uitsluitend een veilige blokkeerafhandeling en voorkomt dat een SharedExercises-record of ontvangerrun ontstaat.

3. Scope

3.1 Binnen scope

  • Vaststellen dat delen niet mogelijk is door ontbrekende actieve vrienden of uitgeschakelde functionaliteit.
  • Blokkeren van de deelactie in de frontend of bij server-side hercontrole.
  • Tonen van een passende popup- of inline afhandeling op PopupKey-niveau.
  • Voorkomen dat gedeelde records, runs of berichten ontstaan.

3.2 Buiten scope

  • Vriend uitnodigen, accepteren, afwijzen of ontkoppelen.
  • Beheer van featuretoggles.
  • Succesvol delen met een vriend.
  • Starten, opnieuw maken of verwijderen van ontvangen gedeelde oefeningen.
  • Reguliere resultaatweergave of geschiedenis.

4. Pre-condities

IDVoorwaarde
PRE-001De gebruiker is ingelogd met een actieve leerlingrolcontext.
PRE-002De leerling bevindt zich in een resultaat- of resultaatdetailcontext waarin delen normaal relevant kan zijn.
PRE-003De backend kan featurestatus, bronrun en actieve vriendschappen server-side controleren.

5. Post-condities

IDResultaat
POST-001De deelactie is veilig geblokkeerd.
POST-002Er is geen SharedExercises-record aangemaakt.
POST-003Er is geen ontvangerrun aangemaakt.
POST-004Er is geen vriendschap, uitnodiging of relatieverzoek aangemaakt.
POST-005De bronrun van de leerling blijft ongewijzigd.
POST-006De leerling krijgt een begrijpelijke blokkeerafhandeling zonder dat popupteksten in de usecase worden gedupliceerd.

6. Trigger

De leerling probeert een oefening te delen, of de resultaatweergave bepaalt dat de deelactie niet beschikbaar mag worden gemaakt.

7. Normale processtroom

StapActorScherm / componentActieSysteemresponsData / regel
1LeerlingResultaatweergaveOpent resultaat of kiest delen.Frontend vraagt deelbaarheid op.PRE-002.
2BackendAutorisatielaagControleert leerlingrol en actieve sessie.Ongeldige context wordt geblokkeerd.BR-001.
3BackendOefenrunlaagControleert bronrun.Alleen afgeronde eigen runs zijn kandidaat.BR-002.
4BackendFeaturelaagControleert deelfeature en vriendschapsfeature.Uitgeschakelde feature blokkeert delen.BR-003.
5BackendRelatielaagControleert actieve vrienden.Geen actieve vrienden blokkeert delen.BR-004.
6BackendFrontendGeeft blokkeerrespons terug.Frontend toont disabled deelactie of popupafhandeling.POST-001.
7FrontendResultaatweergaveToont de blokkade.Leerling kan geen ontvanger kiezen.POST-002 t/m POST-005.

8. Alternatieve en exceptionele processtromen

IDVanaf stapSituatieSysteemgedragPopup / meldingDatamutatie
ALT-0012Gebruiker is geen leerling.Delen wordt geblokkeerd.Generieke toegangafhandeling.Geen.
ALT-0023Bronrun is niet afgerond, niet eigen of een testrun.Delen wordt geweigerd.POP-LLN-DEL-SHARE-FAILED.Geen.
ALT-0034Oefeningdelen staat uit.Deelactie wordt niet getoond of wordt geblokkeerd.POP-LLN-DEL-SHARE-FAILED.Geen.
ALT-0044Vriendschappen zijn voor de leerling niet toegestaan.Delen wordt geblokkeerd.POP-LLN-DEL-NO-FRIENDS.Geen.
ALT-0055Er zijn geen actieve vrienden.Delen wordt geblokkeerd.POP-LLN-DEL-NO-FRIENDS.Geen.
ALT-0065Alle vrienden zijn gedeactiveerd, geanonimiseerd of niet langer leerling.Delen wordt geblokkeerd.POP-LLN-DEL-NO-FRIENDS.Geen.
ALT-0076Frontend toonde per ongeluk een deelactie door verouderde clientstate.Backend weigert definitief delen.POP-LLN-DEL-SHARE-FAILED.Geen.
ALT-0086Controle op deelbaarheid faalt technisch.Systeem toont veilige foutafhandeling.POP-LLN-DEL-SHARE-FAILED.Geen domeinmutatie.

9. Business rules

IDRegel
BR-001Alleen een actieve leerlingrolcontext mag oefeningdelen starten.
BR-002Alleen een afgeronde eigen leerlingrun kan kandidaat zijn voor delen.
BR-003Oefeningdelen en vriendschappen moeten server-side functioneel beschikbaar zijn.
BR-004Delen vereist minimaal één actieve vriend die een actief leerlingaccount heeft.
BR-005Verouderde frontendstate mag delen niet alsnog toestaan.
BR-006Blokkeren van delen maakt geen relatie, uitnodiging, gedeeld record, ontvangerrun of bericht aan.
BR-007De blokkeerflow verwijst niet bronhoudend naar relatiebeheer; relatievorming blijft in het relatiedomein.
BR-008De bronrun van de leerling blijft ongewijzigd.
BR-009De gebruiker krijgt geen technische details over gedeactiveerde of niet-toegankelijke andere accounts.

10. Datavalidatie

Veld / objectValidatie
SessiecontextBevat actief intern Users.Id en actieve leerlingrol.
SourceExerciseRunIdBestaat; hoort bij de leerling; is afgerond; is geen testrun.
DeelfeatureMoet server-side actief zijn.
VriendschapsfeatureMoet server-side actief of toegestaan zijn voor deze leerling.
Actieve vriendenMinimaal één actieve Friendship met een actief leerlingaccount.
ClientstateMag nooit bepalend zijn voor definitieve deelbaarheid.

11. Datamutaties en events

StapTypeEntiteit / eventMutatie
ALT-002 t/m ALT-008LoggingApplicatielog / ShareExerciseDeniedWeigering mag technisch herleidbaar worden gelogd zonder gedeelde-oefeningenrecord aan te maken.

12. Geen datamutaties

EntiteitReden
SharedExercisesEr wordt geen gedeelde oefening aangemaakt.
ExerciseRuns van ontvangerEr ontstaat geen ontvangerrun.
Bronrun van delerBlijft ongewijzigd.
UserRelationshipsEr wordt geen vriendschap gemaakt of gewijzigd.
RelationshipInvitationsEr wordt geen uitnodiging gestart.
SystemMessagesEr wordt geen systeemcommunicatie voor een ontvanger aangemaakt.
UserSettingsVoorkeuren worden niet gewijzigd.

13. State diagram

Niet van toepassing als zelfstandig statusmodel. De usecase blokkeert een actie en verandert geen persistente gedeelde-oefeningenstatus.

14. Decision flow

15. Data lifecycle diagram

16. Sequence diagrammen

16.1 Delen blokkeren zonder actieve vrienden

16.2 Verouderde frontendstate wordt server-side geweigerd

17. Popupverwijzingen

PopupKeyMomentToepassing
POP-LLN-DEL-NO-FRIENDSGeen actieve vrienden of vriendschappen niet beschikbaar.Legt uit dat delen niet kan zonder actieve vrienden.
POP-LLN-DEL-SHARE-FAILEDDelen wordt geweigerd door bronrun-, feature- of autorisatiecontrole.Veilige foutafhandeling zonder technische details.

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

DoeldocumentAfleiding
Functioneel OntwerpGedeelde oefeningen beschrijft wanneer de deelactie zichtbaar, disabled of geblokkeerd is.
Technisch OntwerpAutorisatie, policies en server-side contextcontrole beschrijft server-side blokkade, queryscoping en veilige afwijzing.
Technisch OntwerpRelatiebeheer, uitnodigingen en gedeelde oefeningen beschrijft actieve vriendschapscontrole als voorwaarde voor delen.
Technisch OntwerpPerformance, beschikbaarheid en fallbackgedrag beschrijft veilige degradatie zonder datalekken of misleidende states.
Software Requirements SpecificationBorgt de centrale requirements voor blokkades zonder mutaties, veilige foutafhandeling en traceerbare acceptatiecriteria.

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-DEL-006-001SRS-AUTH-001
SRS-LRN-009
SRS-SHR-001
AC-AUTH-001
AC-LRN-009
AC-SHR-001
Delen blokkeren wanneer de gebruiker geen actieve leerlingcontext heeft
REQ-UC-LLN-DEL-006-002SRS-AUTH-001
SRS-LRN-009
SRS-SHR-003
AC-AUTH-001
AC-LRN-009
AC-SHR-003
Delen blokkeren wanneer de bronrun niet eigen, niet afgerond of een testrun is
REQ-UC-LLN-DEL-006-003SRS-AUTH-001
SRS-REL-001
SRS-LRN-009
SRS-SHR-001
AC-AUTH-001
AC-REL-001
AC-LRN-009
AC-SHR-001
Delen blokkeren wanneer oefeningdelen of vriendschappen functioneel niet beschikbaar zijn
REQ-UC-LLN-DEL-006-004SRS-AUTH-001
SRS-REL-001
SRS-LRN-009
SRS-SHR-001
AC-AUTH-001
AC-REL-001
AC-LRN-009
AC-SHR-001
Delen blokkeren wanneer de leerling geen actieve vrienden heeft
REQ-UC-LLN-DEL-006-005SRS-REL-001
SRS-LRN-009
SRS-SHR-001
AC-REL-001
AC-LRN-009
AC-SHR-001
Bij blokkade geen gedeelde oefening, ontvangerrun, relatie, uitnodiging of systeemcommunicatie aanmaken
REQ-UC-LLN-DEL-006-006SRS-AUTH-001
SRS-LRN-009
SRS-SHR-001
SRS-GUA-001
AC-AUTH-001
AC-LRN-009
AC-SHR-001
AC-GUA-001
Verouderde frontendstate bij definitief delen server-side hercontroleren
REQ-UC-LLN-DEL-006-007SRS-LRN-009
SRS-SHR-001
SRS-POP-001
AC-LRN-009
AC-SHR-001
AC-POP-001
Blokkades tonen via centrale popupkeys of inline afhandeling zonder popuptekstduplicatie
REQ-UC-LLN-DEL-006-008SRS-ACC-002
SRS-LRN-009
SRS-SHR-001
AC-ACC-002
AC-LRN-009
AC-SHR-001
Blokkades afhandelen zonder informatie over andere accounts te lekken