Command-register
Dit document koppelt gebruikersacties aan technische commands of API-acties. Het command-register ondersteunt het Technisch Ontwerp en voorkomt dat dezelfde actie onder meerdere namen terugkomt.
Tabelstructuur
| Command-ID | Commandnaam | Domein | Gestart vanuit usecase | Input | Server-side controles | Datamutaties | Events / historie |
|---|---|---|---|---|---|---|---|
| CMD-GEN-REL-001 | LoadRelationshipsOverview | Relaties | UC-GEN-REL-001 | Actieve gebruiker, actieve rolcontext(en) | Ingelogd; alleen relaties en uitnodigingen tonen waarbij gebruiker betrokken is | Geen mutatie; readmodel opbouwen | Geen, tenzij audit voor inzage later nodig blijkt |
| CMD-GEN-REL-002 | SubmitFriendInviteEmail | Relaties | UC-GEN-REL-002 | E-mailadres, actieve rolcontext | Ingelogd, actieve leerlingcontext, geldig e-mailadres, actief relatietype Friendship, geen actieve identieke relatie, geen identieke of kruislings openstaande uitnodiging, doelgebruiker moet leerlingrol kunnen voeren wanneer bekend | RelationshipInvitations met Status = Pending, RelationshipEvents; voor bestaande ontvanger ook SystemMessages | RelationshipInvitationCreated, SystemMessageCreatedForRelationshipInvitation |
| CMD-GEN-REL-003 | SubmitExternalFriendInvite | Relaties | UC-GEN-REL-002 | E-mailadres, expliciete bevestiging, actieve rolcontext | Zelfde controles als SubmitFriendInviteEmail, plus e-mailadres is nog niet gekoppeld aan bestaand OefenHub-account en gebruiker heeft bevestigd dat de naam van de uitnodiger wordt gedeeld | RelationshipInvitations met ToEmail, ToUserId = null, Status = Pending, RelationshipEvents, externe uitnodigingsmail | RelationshipInvitationCreated, ExternalOefenHubInviteSent |
| CMD-GEN-REL-004 | SubmitGuardianInviteEmail | Relaties | UC-GEN-REL-003 | E-mailadres, actieve rolcontext | Ingelogd, actieve leerlingcontext, geldig e-mailadres, actief relatietype GuardianStudent, geen actieve identieke relatie, geen identieke of kruislings openstaande uitnodiging, doelgebruiker moet Guardian-rol kunnen voeren of via acceptatie bewust kunnen kiezen | RelationshipInvitations met Status = Pending, RelationshipEvents; voor bestaande ontvanger ook SystemMessages | RelationshipInvitationCreated, SystemMessageCreatedForRelationshipInvitation |
| CMD-GEN-REL-005 | SubmitExternalGuardianInvite | Relaties | UC-GEN-REL-003 | E-mailadres, expliciete bevestiging, actieve rolcontext | Zelfde controles als SubmitGuardianInviteEmail, plus e-mailadres is nog niet gekoppeld aan bestaand OefenHub-account en gebruiker heeft bevestigd dat de naam van de uitnodiger wordt gedeeld | RelationshipInvitations met ToEmail, ToUserId = null, Status = Pending, RelationshipEvents, externe uitnodigingsmail | RelationshipInvitationCreated, ExternalOefenHubInviteSent |
| CMD-GEN-REL-006 | ResolvePendingRelationshipInviteAfterRegistration | Relaties / registratie | UC-GEN-REL-002, UC-GEN-REL-003, UC-GEN-REL-005, registratieproces | Nieuw UserId, genormaliseerd e-mailadres | Openstaande uitnodiging met ToEmail, ToUserId = null, zelfde genormaliseerde e-mailadres en binnen geldigheidsduur van 7 dagen | Openstaande uitnodiging wordt functioneel aan nieuwe gebruiker gekoppeld of ToUserId wordt gevuld; systeembericht kan daarna worden aangemaakt | RelationshipInvitationLinkedToRegisteredUser, SystemMessageCreatedForRelationshipInvitation |
| CMD-GEN-REL-007 | AcceptRelationshipInvitation | Relaties | UC-GEN-REL-005 | InvitationId, ontvanger, actieve/gekozen doelrolcontext | Ontvanger is de doelgebruiker; uitnodiging is Pending; niet verlopen; doelrol past bij uitnodiging of is bewust gekozen/geactiveerd; geen actieve identieke relatie | RelationshipInvitations.Status = Accepted, RespondedAtUtc, RespondedByUserId, ResolvedRelationshipId; UserRelationships wordt aangemaakt of geactiveerd; events en notificatie naar uitnodiger | RelationshipInvitationAccepted, RelationshipActivated, SystemMessageCreatedForInvitationResponse |
| CMD-GEN-REL-008 | DeclineRelationshipInvitation | Relaties | UC-GEN-REL-005 | InvitationId, ontvanger, bevestiging | Ontvanger is de doelgebruiker; uitnodiging is Pending; niet verlopen; afwijzing is bevestigd | RelationshipInvitations.Status = Rejected, RespondedAtUtc, RespondedByUserId; geen UserRelationships | RelationshipInvitationRejected, SystemMessageCreatedForInvitationResponse |
| CMD-GEN-REL-009 | ExpirePendingRelationshipInvitations | Relaties | UC-GEN-REL-002, UC-GEN-REL-003, UC-GEN-REL-005, geplande verwerking | Peildatum/tijd | Alleen pending uitnodigingen waarvan de geldigheidsduur is verstreken | RelationshipInvitations.Status = Expired, RelationshipEvents | RelationshipInvitationExpired |
| CMD-GEN-REL-010 | DisconnectRelationship | Relaties | UC-GEN-REL-004 | RelationshipId, bevestiging, actieve rolcontext | Gebruiker is betrokken partij of geautoriseerd; relatie is actief; relatietype staat directe ontkoppeling toe; bevestigingspopup is bevestigd | UserRelationships.IsActive = false, beëindigingsmetadata, RelationshipEvents, notificatie aan andere partij | RelationshipDisconnected, SystemMessageCreatedForRelationshipDisconnected |
| CMD-GEN-REL-011 | RequestRelationshipDisconnect | Relaties | UC-GEN-REL-004 | RelationshipId, bevestiging, actieve rolcontext | Gebruiker is betrokken partij; relatie is actief; relatietype gebruikt verzoekflow; bevestigingspopup is bevestigd | Nog nader te bepalen verzoekrecord of RelationshipEvents; relatie blijft actief tot afhandeling | RelationshipDisconnectRequested |
| CMD-GEN-MSG-001 | SendPrivateMessage | Berichten | UC-GEN-MSG-002 | Ontvanger, onderwerp, berichtinhoud, huidige gebruiker | Ingelogd; privéberichten actief; ontvanger binnen geldige relatie-, vriendschaps- of deelnemerscontext; onderwerp en inhoud geldig na sanitizing | Nieuwe of geldige PrivateMessageThreads-context; PrivateMessageThreadParticipants voor verzender en ontvanger; nieuw PrivateMessages; threadmetadata en participant-readstate | PrivateMessageCreated, PrivateThreadReadStateChanged, MessageUnreadCountChanged; bij fout PrivateMessageSendFailed |
| CMD-GEN-MSG-002 | LoadMessagesOverview | Berichten | UC-GEN-MSG-001 | Actieve gebruiker, typefilter, statusfilter, zoekterm, paginering | Ingelogd; alleen eigen systeemberichten en eigen privéthread-participantregels; filters verruimen autorisatie niet | Geen mutatie; mailbox-readmodel opbouwen | Geen, tenzij technische logging voor foutanalyse |
| CMD-GEN-MSG-003 | MarkMailboxItemAsRead | Berichten | UC-GEN-MSG-001 | MailboxItemId, itemtype, huidige gebruiker | Eigen systeembericht of eigen private-thread participantregel; item is zichtbaar of functioneel bereikbaar | SystemMessages.ReadAtUtc vullen of participant-readstate bijwerken | SystemMessageReadStateChanged of PrivateThreadReadStateChanged, MessageUnreadCountChanged |
| CMD-GEN-MSG-004 | MarkMailboxItemAsUnread | Berichten | UC-GEN-MSG-001 | MailboxItemId, itemtype, huidige gebruiker | Eigen systeembericht of eigen private-thread participantregel; item is zichtbaar of functioneel bereikbaar | SystemMessages.ReadAtUtc leegmaken of participant-readstate zodanig aanpassen dat item ongelezen is | SystemMessageReadStateChanged of PrivateThreadReadStateChanged, MessageUnreadCountChanged |
| CMD-GEN-MSG-005 | DeletePrivateMessageThreadFromMailbox | Berichten | UC-GEN-MSG-005 | ThreadId, huidige gebruiker, bevestiging | Eigen participantregel bestaat; item is privéthread; systeemberichten zijn uitgesloten; thread is nog zichtbaar voor deze participant | PrivateMessageThreadParticipants.DeletedAtUtc vullen voor huidige gebruiker; teller/readmodel opnieuw bepalen of invalidaten | PrivateMessageThreadRemovedFromMailbox, MessageUnreadCountChanged; bij fout PrivateMessageThreadDeleteFailed |
| CMD-GEN-MSG-006 | OpenSystemMessage | Berichten | UC-GEN-MSG-003 | SystemMessageId, huidige gebruiker | Systeembericht bestaat en RecipientUserId is huidige gebruiker; eventuele EntityType + EntityId wordt gevalideerd voordat een vervolgactie beschikbaar wordt gemaakt | SystemMessages.ReadAtUtc vullen indien nog ongelezen | SystemMessageReadStateChanged, MessageUnreadCountChanged |
| CMD-GEN-MSG-007 | OpenPrivateMessageThread | Berichten | UC-GEN-MSG-003 | ThreadId, optioneel geselecteerd MessageId, huidige gebruiker | Eigen participantregel bestaat, DeletedAtUtc is null, hoofdbericht en thread-events horen bij dezelfde thread | PrivateMessageThreadParticipants.LastReadMessageId en/of LastReadAtUtc bijwerken | PrivateThreadReadStateChanged, MessageUnreadCountChanged |
| CMD-GEN-MSG-008 | ReplyToPrivateMessageThread | Berichten | UC-GEN-MSG-004 | ThreadId, onderwerp, berichtinhoud, huidige gebruiker | Ingelogd; privéberichten actief; eigen participantregel met DeletedAtUtc is null; thread beantwoordbaar; relatie- of deelnemerscontext nog geldig; onderwerp en inhoud geldig na sanitizing | Optioneel PrivateMessageThreads.Subject; optioneel PrivateMessageThreadEvents.SubjectChanged; nieuw PrivateMessages; threadmetadata en participant-readstate | PrivateMessageCreated, optioneel PrivateMessageThreadSubjectChanged, PrivateThreadReadStateChanged, MessageUnreadCountChanged; bij fout PrivateMessageSendFailed |
| CMD-GEN-TIC-001 | CloseOwnTicket | Meldingen | UC-GEN-TIC-005 | TicketId, reden | Eigen ticket, sluitbaar | TicketClosure, history | TicketClosedByUser |
| Command-ID | Commandnaam | Domein | Gestart vanuit usecase | Input | Server-side controles | Datamutaties | Events / historie |
|---|---|---|---|---|---|---|---|
| CMD-GEN-TIC-002 | LoadMyTicketsOverview | Meldingen | UC-GEN-TIC-002 | ActorUserId, tab/filtercontext | Alleen eigen meldingen | Geen mutatie; readmodel | Geen domeinevent |
| CMD-GEN-TIC-003 | LoadMyTicketDetail | Meldingen | UC-GEN-TIC-003 | TicketId, ActorUserId | Alleen eigen melding; interne beheerinformatie uitsluiten | Geen mutatie; readmodel | Geen domeinevent |
| CMD-GEN-TIC-004 | SubmitTicketReply | Meldingen | UC-GEN-TIC-004 | TicketId, berichttekst, ActorUserId | Eigen open melding; reactie extern; veilige invoer | TicketDiscussionMessages, status eventueel naar InProgress, TicketHistory | TicketReplyAdded, TicketStatusChanged |
| CMD-GEN-TIC-005 | CloseOwnTicket | Meldingen | UC-GEN-TIC-005 | TicketId, reden, ActorUserId | Eigen open melding; reden verplicht | TicketClosures, extern discussie-item, TicketHistory, status Closed | TicketClosedByUser |
| CMD-GEN-TIC-006 | AcceptTicketSolution | Meldingen | UC-GEN-TIC-006 | TicketId, ClosureId, ActorUserId | Eigen opgeloste melding; actuele sluiting; acceptatie nog mogelijk | Acceptatiegegevens/history; heropenmogelijkheid beëindigen/negeren | TicketSolutionAccepted |
| CMD-GEN-TIC-007 | ReopenTicketByUser | Meldingen | UC-GEN-TIC-007 | TicketId, reden, ActorUserId | Eigen opgeloste melding; binnen heropentermijn; reden verplicht | TicketReopenRequests, extern discussie-item, status behandelbaar, TicketHistory | TicketReopenedByUser |
| CMD-GEN-TIC-008 | LoadAdminTicketsOverview | Meldingen | UC-GEN-TIC-008 | Beheerdercontext, filter, zoekterm | Actieve beheerdercontext | Geen mutatie; beheerreadmodel | Geen domeinevent |
| CMD-GEN-TIC-009 | LoadAdminTicketDetail | Meldingen | UC-GEN-TIC-009 | TicketId, beheerdercontext | Actieve beheerdercontext | Geen mutatie; beheerreadmodel | Geen domeinevent |
| CMD-GEN-TIC-010 | AssignOrUnassignTicketAdmin | Meldingen | UC-GEN-TIC-010 | TicketId, beheerder, actie, reden bij ontkoppelen | Actieve beheerdercontext; duplicatecontrole; reden verplicht bij ontkoppelen | TicketAssignments, status eventueel InProgress, TicketHistory | TicketAdminAssigned, TicketAdminUnassigned |
| CMD-GEN-TIC-011 | AddExternalTicketMessage | Meldingen | UC-GEN-TIC-011 | TicketId, berichttekst, vraag-reactie-vlag | Actieve beheerdercontext; actieve behandelcontext; veilige invoer | Extern TicketDiscussionMessages, status eventueel WaitingForUser, SystemMessages, TicketHistory | TicketExternalMessageAdded, SystemMessageCreated |
| CMD-GEN-TIC-012 | AddInternalTicketMessage | Meldingen | UC-GEN-TIC-012 | TicketId, berichttekst | Actieve beheerdercontext; veilige invoer | Intern TicketDiscussionMessages, TicketHistory | TicketInternalMessageAdded |
| CMD-GEN-TIC-013 | ResolveOrCloseTicketAsAdmin | Meldingen | UC-GEN-TIC-013 | TicketId, oplossing/sluittoelichting, afsluitstatus, heropentermijn | Actieve beheerdercontext; actieve behandelcontext; afsluitstatus verplicht | TicketClosures, status Closed, SystemMessages, TicketHistory | TicketResolvedOrClosedByAdmin |
| CMD-GEN-TIC-014 | ReopenTicketAsAdmin | Meldingen | UC-GEN-TIC-014 | TicketId, reden, PreviousClosureId | Actieve beheerdercontext; gesloten melding; bevestiging; reden verplicht | TicketReopenRequests, actieve assignments ontkoppelen, status New, TicketHistory | TicketReopenedByAdmin, TicketAssignmentsCleared |
| CMD-GEN-TIC-015 | ForwardTicketToTeacher | Meldingen | UC-GEN-TIC-015 | TicketId, TeacherId, toelichting | Actieve beheerdercontext; actieve behandelcontext; docent geldig binnen context | TicketClosures, TicketForwardedToTeacher, SystemMessages, PrivateMessageThreads, PrivateMessages, TicketHistory | TicketForwardedToTeacher, PrivateMessageCreated |
| CMD-GEN-PROF-001 | LoadOwnProfile | Profiel | UC-GEN-PROF-001 | ActorUserId | Ingelogd; alleen eigen profiel | Geen mutatie | Geen domeinevent |
| CMD-GEN-PROF-002 | UpdateOwnProfile | Profiel | UC-GEN-PROF-002 | Naamvelden, niveaucontext | Eigen profiel; geldige waarden; e-mail/wachtwoord niet direct muteren | Applicatieprofiel / gebruikerscontext | ProfileUpdated |
| CMD-GEN-PROF-003 | EnforceRequiredLevel | Profiel | UC-GEN-PROF-003 | ActorUserId, gekozen niveau | Eigen profiel; niveau verplicht en geldig | Niveaucontext opslaan | RequiredLevelSet |
| CMD-GEN-PROF-004 | UpdateOwnProfileAvatar | Profiel | UC-GEN-PROF-004 | ProfileAvatarId | Eigen profiel; avatar bestaat en is selecteerbaar | Profielafbeeldingreferentie wijzigen | ProfileAvatarChanged |
| CMD-GEN-PROF-005 | UpdateOwnAccessibilitySettings | Profiel | UC-GEN-PROF-005 | Toegankelijkheidsinstellingen | Eigen instellingen; feature actief; type- en grensvalidatie | UserSettings, eventuele browserwaarde | AccessibilitySettingChanged |
| CMD-GEN-PROF-006 | SynchronizeAccessibilityCookie | Profiel | UC-GEN-PROF-006 | Browserwaarde, profielinstellingen | Alleen toegestane toegankelijkheidswaarden; profielinstellingen leidend na login | Cookie/browserwaarde actualiseren of negeren | AccessibilityCookieSynchronized |
| CMD-GEN-PROF-007 | UpdateOwnPreference | Profiel | UC-GEN-PROF-007 | PreferenceKey, waarde, rolcontext | Eigen voorkeur; toegestane sleutel/type/rolcontext | UserSettings | UserPreferenceChanged |
| CMD-GEN-NOT-001 | EvaluateSystemNotificationsForActor | Systeemnotificaties | UC-GEN-NOT-001 | Actorcontext, browsermarkers, tijdstip | Doelgroep, tijdvenster, displayregel | Geen server-side mutatie | SystemNotificationSelected, SystemNotificationDisplayed |
| CMD-GEN-NOT-002 | CloseSystemNotification | Systeemnotificaties | UC-GEN-NOT-002 | NotificationId, displayregel, browsercontext | Getoonde notificatie; veilige browsermarker | Browsermarker of runtime-uitsluiting | SystemNotificationClosed |
| CMD-GEN-NOT-003 | EvaluateOncePerBrowserSystemNotification | Systeemnotificaties | UC-GEN-NOT-003 | NotificationId, browsermarker | DisplayRule = OncePerBrowser; marker geldig/ongeldig | Geen server-side mutatie; browsermarker bepaalt zichtbaarheid | SystemNotificationOncePerBrowserEvaluated |
| Command-ID | Commandnaam | Domein | Gestart vanuit usecase | Input | Server-side controles | Datamutaties | Events / historie |
|---|---|---|---|---|---|---|---|
| CMD-GEN-ACC-001 | ProvisionInternalAccount | Account | UC-GEN-ACC-001 | Identity-providercontext, ExternalId, profielclaims | Geldige providercontext; geen bestaand intern account met dezelfde ExternalId; verplichte claims aanwezig | Users, UserSettings, optioneel UserRoles; accountlog | InternalAccountProvisioned, UserSettingsInitialized |
| CMD-GEN-ACC-002 | LinkPendingRelationshipInvitations | Account / relaties | UC-GEN-ACC-001 | Nieuw Users.Id, genormaliseerd e-mailadres | Uitnodiging is Pending, geldig, passend en heeft ToEmail met ToUserId = null | RelationshipInvitations.ToUserId, RelationshipEvents | PendingInvitationLinkedToUser |
| CMD-GEN-ACC-003 | CreateProvisioningSystemMessages | Account / communicatie | UC-GEN-ACC-001 | Gekoppelde InvitationId, RecipientUserId | Interne ontvanger bestaat; uitnodiging is gekoppeld | SystemMessages met EntityType = RelationshipInvitation | ProvisioningSystemMessageCreated |
| CMD-GEN-ACC-004 | ProcessLoginSession | Account | UC-GEN-ACC-002 | Identity-providercallback of sessiecontext | Token/claims geldig; exact één intern account; Users.IsActive = true | Technische sessiecontext; Users.LastSeenAtUtc via afzonderlijke command | LoginSessionProcessed |
| CMD-GEN-ACC-005 | UpdateLastSeenAt | Account | UC-GEN-ACC-002 | UserId, huidig UTC-moment | Actief intern account en succesvolle sessieverwerking | Users.LastSeenAtUtc | LastSeenAtUpdated |
| CMD-GEN-ACC-006 | ResolveFrontendContext | Account | UC-GEN-ACC-002, UC-GEN-ACC-003 | UserId, rollen, instellingen, terugkeerroute | Actieve UserRoles/Roles; verplichte context; routeautorisatie | Geen of alleen technische context; eventueel delegatie naar profielusecase | FrontendContextResolved, NoActiveRoleContextDetected, IncompleteAccountContextDetected |
| CMD-GEN-ACC-007 | InitializeMissingUserSettings | Account | UC-GEN-ACC-003 | UserId | Account is actief, eenduidig en settings ontbreken veilig herstelbaar | UserSettings met defaults | MissingUserSettingsInitialized |
| CMD-GEN-ACC-008 | RequestOwnAccountDeletion | Account | UC-GEN-ACC-004 | ActorUserId, bevestiging, eventuele opvolgerkeuzes | Eigen account; geldige sessie; bevestiging; opvolgers zijn geldige collaborators | Start anonimiseer-/opruimflow | AccountDeletionRequested |
| CMD-GEN-ACC-009 | AnonymizeAccountAndCleanDependencies | Account | UC-GEN-ACC-004, UC-GEN-ACC-005 | UserId, verwijdertrigger, verwerkingscontext | Geautoriseerde trigger; precies één account; accountlog beschikbaar; transactionele veiligheid | Users, rollen/toegang, relaties, uitnodigingen, oefenruns, berichtenzichtbaarheid, tickets, live-audit en domeinhistorie volgens regels | AccountAnonymized, AccountDependenciesCleaned |
| CMD-GEN-ACC-010 | ResolveTeacherLevelOwnershipForDeletedAccount | Account / docentstructuur | UC-GEN-ACC-004, UC-GEN-ACC-005 | UserId, niveau-eigenaarschappen, opvolgerkeuzes | Opvolger is actieve collaborator; geen onbepaald eigenaarschap | Overdracht of historisch/inactief maken van niveau | TeacherLevelOwnershipResolvedForAccountDeletion |
| CMD-GEN-ACC-011 | LogoutOefenHubSession | Account | UC-GEN-ACC-006 | Actieve of verlopen sessiecontext | Eigen sessie; idempotent; geen domeinmutaties behalve auditbare live-meekijkbeëindiging waar nodig | Lokale applicatiesessie, SignalR-context, optioneel LiveViewAudit.EndedAtUtc | LogoutProcessed, SignalRContextClosed, LiveViewAuditEnded |
| Command-ID | Commandnaam | Domein | Omschrijving | Gebruikt in |
|---|---|---|---|---|
| CMD-LLN-TOEG-001 | ResolveStudentAccessibleCategories | Leerling / Oefenaanbod | Bepaalt categorieën die binnen de actieve niveaucontext zichtbaar zijn. | UC-LLN-TOEG-001 |
| CMD-LLN-TOEG-002 | ResolveStudentAccessibleExercises | Leerling / Oefenaanbod | Bepaalt oefeningen die binnen categorie en niveau zichtbaar/startbaar zijn. | UC-LLN-TOEG-002, UC-LLN-TOEG-003 |
| CMD-LLN-OEF-001 | StartExerciseRun | Leerling / Oefenen | Maakt een nieuwe leerlingrun aan en opent de eerste vraag. | UC-LLN-OEF-003 |
| CMD-LLN-OEF-002 | ResumeExerciseRun | Leerling / Oefenen | Hervat de laatst geldige niet-afgeronde run. | UC-LLN-OEF-002 |
| CMD-LLN-OEF-003 | SubmitExerciseAnswer | Leerling / Oefenen | Verwerkt antwoord en slaat voortgang op. | UC-LLN-OEF-004 |
| CMD-LLN-OEF-004 | MarkQuestionAsDunno | Leerling / Oefenen | Verwerkt Geen idee en bijbehorende fouttelling. | UC-LLN-OEF-006 |
| CMD-LLN-OEF-005 | CompleteExerciseRun | Leerling / Oefenen | Rondt run af en berekent totalen/statistieken. | UC-LLN-OEF-008 |
| CMD-LLN-RES-001 | CreateDuplicateExerciseRun | Leerling / Resultaten | Maakt een nieuwe run op basis van een bronrun. | UC-LLN-RES-003 |
| CMD-LLN-RES-002 | GenerateResultPdf | Leerling / Resultaten | Genereert PDF-export van afgerond resultaat. | UC-LLN-RES-004 |
| CMD-LLN-DEL-001 | ShareExerciseWithFriend | Leerling / Delen | Maakt een gedeelde-oefeningrecord voor een vriend. | UC-LLN-DEL-001 |
| CMD-LLN-DEL-002 | StartSharedExercise | Leerling / Delen | Maakt ontvangersrun aan vanuit gedeelde oefening. | UC-LLN-DEL-003 |
| CMD-LLN-DEL-003 | RemoveReceivedSharedExercise | Leerling / Delen | Verwijdert gedeelde oefening uit eigen overzicht. | UC-LLN-DEL-005 |
| CMD-DOC-AANB-001 | CreateTeacherLevel | Docent / Oefenaanbod | Maakt een nieuw docentniveau aan met actor als eigenaar. | UC-DOC-AANB-003 |
| CMD-DOC-AANB-002 | UpdateTeacherLevelCoreData | Docent / Oefenaanbod | Wijzigt niveaukerngegevens. | UC-DOC-AANB-004 |
| CMD-DOC-AANB-003 | LinkCategoryToTeacherLevel | Docent / Categorieën | Koppelt bestaande centrale categorie aan niveau. | UC-DOC-AANB-006 |
| CMD-DOC-AANB-004 | CreateCentralCategoryFromTeacherFlow | Docent / Categorieën | Maakt centrale categorie aan vanuit docentflow. | UC-DOC-AANB-007 |
| CMD-DOC-OEF-001 | CreateExercise | Docent / Oefeningen | Maakt concrete oefening aan binnen niveau/categorie. | UC-DOC-OEF-002 |
| CMD-DOC-OEF-002 | SaveExerciseConfiguration | Docent / Oefeningen | Slaat generieke metadata en moduleconfiguratie op. | UC-DOC-OEF-004, UC-DOC-OEF-005 |
| CMD-DOC-OEF-003 | ChangeExerciseActiveState | Docent / Oefeningen | Zet oefening actief of in onderhoud. | UC-DOC-OEF-006 |
| CMD-DOC-OEF-004 | CopyExerciseFromOpenLevel | Docent / Oefeningen | Kopieert oefening vanuit open niveau naar eigen context. | UC-DOC-OEF-007 |
| CMD-DOC-OEF-005 | StartTeacherTestRun | Docent / Testen | Start testrun zonder permanente leerlinggeschiedenis. | UC-DOC-OEF-008 |
| CMD-DOC-OEF-006 | CleanupTeacherTestRuns | Scheduler / Testen | Ruimt achtergebleven docenttestruns op. | UC-DOC-OEF-009 |
| CMD-DOC-SAM-001 | AddLevelCollaborator | Docent / Samenwerking | Koppelt collaborator aan niveau. | UC-DOC-SAM-002 |
| CMD-DOC-SAM-002 | RemoveLevelCollaborator | Docent / Samenwerking | Ontkoppelt collaborator van niveau. | UC-DOC-SAM-003 |
| CMD-DOC-SAM-003 | TransferTeacherLevelOwnership | Docent / Samenwerking | Draagt eigenaarschap over aan actieve collaborator. | UC-DOC-SAM-005 |
| CMD-DOC-LLN-001 | GrantStudentLevelAccess | Docent / Leerlingautorisaties | Geeft leerling toegang tot niveau binnen docentcontext. | UC-DOC-LLN-005 |
| CMD-DOC-LLN-002 | RevokeStudentLevelAccess | Docent / Leerlingautorisaties | Trekt niveauautorisatie in. | UC-DOC-LLN-006 |
| CMD-DOC-LLN-003 | BulkUpdateStudentLevelAccess | Docent / Leerlingautorisaties | Verwerkt bulk-autorisatiewijzigingen. | UC-DOC-LLN-007 |
| CMD-DOC-LIVE-001 | StartTeacherLiveView | Docent / Live meekijken | Start live-meekijksessie met audit. | UC-DOC-LIVE-003 |
| CMD-DOC-LIVE-002 | EndTeacherLiveView | Docent / Live meekijken | Beëindigt live-meekijksessie. | UC-DOC-LIVE-007 |
Invulregels
| Onderwerp | Regel |
|---|---|
| Commandnaam | Gebruik Engelse technische naam, bij voorkeur PascalCase. |
| Input | Benoem functionele input, niet elk DTO-detail. |
| Controles | Server-side validaties expliciet opnemen. |
| Transactiegrens | Benoem bij foutgevoelige flows of datamutaties en communicatie in één transactie moeten slagen of worden teruggedraaid. |
| Systeemcommand | Gebruik ook een commandregel voor geplande of systeemgestuurde verwerking wanneer die functioneel uit een usecase voortkomt. |
| Nog open ontwerpkeuze | Gebruik een expliciete commandregel met opmerking wanneer een vervolgflow nog moet worden uitgewerkt, zoals ontkoppelverzoeken of doelrolkeuze. |
Beheerder- en ouder-/voogdcontexten
| Command-ID | Commandnaam | Domein | Actor | Doel | Belangrijkste validaties | Gebruikt in |
|---|---|---|---|---|---|---|
| CMD-BEH-FRONT-001 | UpdateFrontPageContentBlock | Frontpagebeheer | Beheerder | Tekstueel contentblok wijzigen | Beheerdercontext, bestaande context/key, validatie titel/tekst | UC-BEH-FRONT-003, UC-BEH-FRONT-004 |
| CMD-BEH-LINK-001 | UpsertManagedUrl | Handige links | Beheerder | URL-record aanmaken of wijzigen | Geldige interne/externe URL, unieke referentie waar nodig | UC-BEH-LINKS-002, UC-BEH-LINKS-003 |
| CMD-BEH-LINK-002 | DeleteManagedUrl | Handige links | Beheerder | URL-record soft-deleten of verwijderen blokkeren | Niet in gebruik in footerplaatsingen | UC-BEH-LINKS-004 |
| CMD-BEH-LINK-003 | UpdateFooterContent | Handige links | Beheerder | Footertekst of footerlinkplaatsing wijzigen | Geldige rolcontext, bestaande URL’s, volgorde uniek | UC-BEH-LINKS-005, UC-BEH-LINKS-006 |
| CMD-BEH-LINK-004 | UpdateStaticPageContent | Vaste pagina’s | Beheerder | Tekstblok op vaste publieke pagina wijzigen | Bestaande pagina/key, layout niet wijzigbaar | UC-BEH-LINKS-007 |
| CMD-BEH-POP-001 | UpdatePopupDefinition | Popupbeheer | Beheerder | Beheerbare popupvelden wijzigen | Bestaande popupkey, technische velden read-only, lengtevalidatie | UC-BEH-POP-003, UC-BEH-POP-004 |
| CMD-BEH-SYSMSG-001 | UpdateSystemMessageTemplate | Systeemberichtenbeheer | Beheerder | Template-inhoud wijzigen | Bestaande key, placeholdervalidatie, lengtevalidatie | UC-BEH-SYSMSG-003, UC-BEH-SYSMSG-004 |
| CMD-BEH-FEAT-001 | UpdateSiteFeatureToggle | Features | Beheerder | Featuretoggle wijzigen | Bestaande toggle, reden, audit | UC-BEH-FEAT-002 |
| CMD-BEH-NOT-001 | CreateSiteNotification | Systeemnotificaties | Beheerder | Systeemnotificatie aanmaken | Geldige doelgroep, type, start/einddatum, displayregel | UC-BEH-FEAT-004 |
| CMD-BEH-NOT-002 | UpdateSiteNotification | Systeemnotificaties | Beheerder | Systeemnotificatie wijzigen | Bestaande notificatie, datumvalidatie, displayregel | UC-BEH-FEAT-005 |
| CMD-BEH-NOT-003 | DisableSiteNotification | Systeemnotificaties | Beheerder | Notificatie uitschakelen door einddatum op nu te zetten | Bestaande actieve/geplande notificatie | UC-BEH-FEAT-006 |
| CMD-BEH-SET-001 | UpdateSystemSetting | Systeeminstellingen | Beheerder | Bestaande systeeminstelling wijzigen | Bestaande key, datatype, invoervorm, reden | UC-BEH-SET-002, UC-BEH-SET-005 |
| CMD-BEH-SET-002 | RefreshConfigurationCache | Systeeminstellingen | Beheerder / Systeem | Configuratiecache verversen | Gewijzigde instelling vereist cacheverversing | UC-BEH-SET-003 |
| CMD-BEH-CAT-001 | UpdateCategoryIdentity | Categoriebeheer | Beheerder | Naam, kleur of icoon wijzigen | Bestaande categorie, reden, afzonderlijke history per veld | UC-BEH-CAT-003 |
| CMD-BEH-CAT-002 | UpdateCategoryStatus | Categoriebeheer | Beheerder | Categoriestatus wijzigen | Geen actieve docentniveau-/oefenkoppelingen bij deactiveren | UC-BEH-CAT-004 |
| CMD-BEH-CAT-003 | MigrateCategory | Categoriebeheer | Beheerder | Broncategorie naar doelcategorie migreren | Doel actief, niet dezelfde categorie, conflictcontrole, reden | UC-BEH-CAT-005, UC-BEH-CAT-006 |
| CMD-BEH-MOD-001 | UpdateExerciseModule | Modulebeheer | Beheerder | Modulemetadata/status wijzigen | Bestaande module, afhankelijkheden, reden | UC-BEH-MOD-003, UC-BEH-MOD-004, UC-BEH-MOD-005 |
| CMD-BEH-MOD-002 | TestExerciseModuleConnectivity | Modulebeheer | Beheerder | Strategy-interface/healthcheck testen | Bestaande module en code reference | UC-BEH-MOD-006 |
| CMD-BEH-MOD-003 | MigrateExerciseModuleForTeacher | Modulebeheer | Beheerder | Oefeningen van één docent migreren | Bron/doelmodule, docent gebruikt bron, compatibiliteitsrisico bevestigd | UC-BEH-MOD-007 |
| CMD-BEH-MOD-004 | MigrateExerciseModuleGlobally | Modulebeheer | Beheerder | Alle oefeningen van bronmodule migreren | Bron/doelmodule, impactcontrole, reden | UC-BEH-MOD-008 |
| CMD-BEH-MOD-005 | TrialMigrateExerciseModule | Modulebeheer | Beheerder | Proefmigratie voor één oefening uitvoeren/controleren | Eén oefening, doelmodule actief, testcontext | UC-BEH-MOD-009 |
| CMD-BEH-DOCSUP-001 | AddStudentLevelAccessAsAdmin | Docentondersteuning | Beheerder | Leerling aan niveau koppelen binnen docentcontext | Docentcontext, leerlingrelatie, niveau, reden | UC-BEH-DOCSUP-008 |
| CMD-BEH-DOCSUP-002 | RemoveStudentLevelAccessAsAdmin | Docentondersteuning | Beheerder | Leerling van niveau ontkoppelen binnen docentcontext | Bestaande autorisatie, reden | UC-BEH-DOCSUP-009 |
| CMD-BEH-DOCSUP-003 | AddLevelCollaboratorAsAdmin | Docentondersteuning | Beheerder | Collaborator toevoegen | Geldige docent-docentcontext of expliciete supportcontext | UC-BEH-DOCSUP-010 |
| CMD-BEH-DOCSUP-004 | RemoveLevelCollaboratorAsAdmin | Docentondersteuning | Beheerder | Collaborator verwijderen | Bestaande collaborator, reden | UC-BEH-DOCSUP-011 |
| CMD-BEH-DOCSUP-005 | ForceTeacherTeacherContext | Docentondersteuning | Beheerder | Docent-docentcontext supportmatig forceren | Beheerdercontext, reden, audit | UC-BEH-DOCSUP-012 |
| CMD-BEH-DOCSUP-006 | TransferLevelOwnershipAsAdmin | Docentondersteuning | Beheerder | Eigenaarschap overdragen | Nieuwe eigenaar is actieve collaborator, reden | UC-BEH-DOCSUP-013 |
| CMD-BEH-ACC-001 | UpdateUserRolesAsAdmin | Accountbeheer | Beheerder | Rollen toekennen/intrekken | Niet-publieke rolregels, geen leerlingcombinatie, audit | UC-BEH-ACC-003, UC-BEH-ACC-004 |
| CMD-BEH-ACC-002 | DisableUserAccountAsAdmin | Accountbeheer | Beheerder | Account tijdelijk uitschakelen | Doelaccount geldig, reden, afhankelijkheden | UC-BEH-ACC-005 |
| CMD-BEH-ACC-003 | ReactivateUserAccountAsAdmin | Accountbeheer | Beheerder | Account heractiveren | Account is gedeactiveerd en niet geanonimiseerd | UC-BEH-ACC-006 |
| CMD-BEH-ACC-004 | AnonymizeUserAccountAsAdmin | Accountbeheer | Beheerder | Account anonimiseren | Impactanalyse, reden, afhankelijke toegang opruimen | UC-BEH-ACC-007 |
| CMD-BEH-ACC-005 | UpdateUserSettingAsAdmin | Accountbeheer | Beheerder | Gebruikersinstelling corrigeren | Ondersteunde instelling, geen credentialdata | UC-BEH-ACC-009 |
| CMD-OVG-KIND-001 | DisconnectGuardianStudentRelationship | Ouder/voogd | Ouder/voogd | Kind ontkoppelen | Actieve ouder-/voogdrelatie, bevestiging, audit | UC-OVG-KIND-005, UC-OVG-KIND-006 |
| CMD-GEN-TIC-016 | ProcessExpiredTicketReopenDeadlines | Meldingen / scheduler | Systeem | Verlopen heropentermijnen verwerken | Alleen Closed tickets met actuele sluiting, verlopen ReopenDeadlineUtc, geen acceptatie en geen latere heropening; geen nieuwe closure; optionele idempotente TicketHistory-regel per verlopen actuele sluiting; schedulerlogging | UC-GEN-TIC-016; TicketReopenDeadlineExpired; schedulerfouten technisch gelogd |
| CMD-OVG-LIVE-001 | StartGuardianLiveView | Ouder/voogd live | Ouder/voogd | Live meekijken starten | Actieve relatie, actieve run, read-only | UC-OVG-LIVE-003 |
| CMD-OVG-LIVE-002 | EndGuardianLiveView | Ouder/voogd live | Ouder/voogd / Systeem | Live meekijken beëindigen | Bestaande live view sessie | UC-OVG-LIVE-007, UC-OVG-LIVE-008 |
| CMD-OVG-RES-001 | LoadGuardianResultSummary | Ouder/voogd resultaten | Ouder/voogd | Resultatensamenvatting van gekoppeld kind laden | Actieve ouder-/voogdrelatie; alleen afgeronde niet-test runs; geen runmutatie | UC-OVG-RES-001 |
| CMD-OVG-RES-002 | LoadGuardianChildHistory | Ouder/voogd resultaten | Ouder/voogd | Kindgeschiedenis van gekoppeld kind laden | Actieve ouder-/voogdrelatie; alleen afgeronde runs; filters en paginering verruimen autorisatie niet | UC-OVG-RES-002 |
| CMD-OVG-RES-003 | ApplyGuardianHistoryFilters | Ouder/voogd resultaten | Ouder/voogd | Geschiedenisfilters toepassen | Filterwaarden bestaan binnen toegestane kinddataset; lege resultaten zijn geldig | UC-OVG-RES-003 |
| CMD-OVG-RES-004 | LoadGuardianRunDetail | Ouder/voogd resultaten | Ouder/voogd | Resultaatdetail en statistieken laden | Run bestaat, is afgerond en hoort bij actief gekoppeld kind; geen score- of antwoordmutatie | UC-OVG-RES-004, UC-OVG-RES-005 |
| CMD-OVG-RES-005 | ExportGuardianResultPdf | Ouder/voogd resultaten | Ouder/voogd | PDF-export van resultaat leveren | Run bestaat, is afgerond en hoort bij actief gekoppeld kind; exportmodel bevat alleen gekozen run | UC-OVG-RES-006 |
| CMD-OVG-RES-006 | DenyGuardianResultAccess | Ouder/voogd resultaten | Backend | Resultaattoegang veilig blokkeren | Geen actieve ouder-/voogdrelatie of run hoort niet bij relatie; geen gedeeltelijke resultaatdata retourneren | UC-OVG-RES-007 |
| CMD-OVG-LIVE-003 | LoadGuardianOnlineOverview | Ouder/voogd live | Ouder/voogd | Online-overzicht gekoppelde kinderen laden | Actieve ouder-/voogdcontext; alleen actief gekoppelde kinderen; geen LiveViewAudit | UC-OVG-LIVE-001 |
| CMD-OVG-LIVE-004 | DetermineGuardianLiveAvailability | Ouder/voogd live | Ouder/voogd / Backend | Livebeschikbaarheid bepalen | Actieve ouderrelatie, featurestatus en actieve run; knopstatus is geen autorisatiebron | UC-OVG-LIVE-002 |
| CMD-OVG-LIVE-005 | ResyncGuardianLiveProgress | Ouder/voogd live | Ouder/voogd / Systeem | Livevoortgang resynchroniseren | Open live sessie, actuele ouderrelatie en run hoort bij kind; geen runmutatie | UC-OVG-LIVE-004, UC-OVG-LIVE-006, UC-OVG-LIVE-008 |
| CMD-OVG-LIVE-006 | BrowseGuardianLiveQuestion | Ouder/voogd live | Ouder/voogd | Door vragen bladeren tijdens live meekijken | Open live sessie; vraagindex binnen run; modulespecifieke previewgrenzen respecteren; lokale UI-state | UC-OVG-LIVE-005 |
| CMD-OVG-LIVE-007 | HandleGuardianLiveDisconnect | Ouder/voogd live | Ouder/voogd / Systeem | Verbindingsverlies en reconnect afhandelen | Maximaal vijf herverbindingspogingen; na herstel autorisatie en runstatus opnieuw controleren; definitief falen beëindigt audit idempotent | UC-OVG-LIVE-008 |