UC-GEN-TIC-015 — Melding doorzetten naar docent
1. Kerngegevens
| Veld | Waarde |
|---|---|
| Usecase-ID | UC-GEN-TIC-015 |
| Naam | Melding doorzetten naar docent |
| Domein | Meldingen |
| Primaire actor | Beheerder |
| Secundaire actor(en) | Systeem, meldingenservice, berichtensysteem, privéberichtservice, database, melder, docent |
| Rolcontext | Ingelogde gebruiker met actieve beheerdercontext |
| Betrokken schermen | SCH-BEH-02-01 — Meldingenoverzicht beheerder; SCH-GEN-02 — Berichtenoverzicht; SCH-GEN-04 — Open bericht |
| Gerelateerde usecases | UC-GEN-TIC-008 — Beheerdersoverzicht meldingen bekijken; UC-GEN-TIC-009 — Melding openen als beheerder; UC-GEN-TIC-010 — Beheerder koppelen of ontkoppelen; UC-GEN-TIC-013 — Melding oplossen of sluiten; UC-GEN-MSG-001 — Berichtenoverzicht bekijken; UC-GEN-MSG-003 — Bericht openen; UC-GEN-MSG-004 — Bericht beantwoorden |
| Primaire entiteiten | Tickets, TicketClosures, TicketResolutionTypes, TicketForwardedToTeacher, PrivateMessageThreads, PrivateMessages, SystemMessages, TicketHistory |
| Secundaire entiteiten / events | TicketAssignments, TicketDiscussionMessages, PrivateMessageThreadParticipants, Users, UserRelationships, TicketTechnicalSnapshots, TicketForwardedToTeacher, TicketResolvedOrClosedByAdmin, TicketStatusChanged, PrivateMessageCreated, SystemMessageCreated, TicketForwardToTeacherFailed |
| Gerelateerde popups | POP-GEN-TIC-NOT-AVAILABLE, POP-GEN-TIC-FORWARD-TEACHER-CONFIRM, POP-GEN-TIC-FORWARD-TEACHER-NOT-ALLOWED, POP-GEN-TIC-FORWARD-TEACHER-FAILED |
| Popupregister | Ontwerpbronnen — Popup-register |
| MoSCoW | Must have |
2. Omschrijving
Een beheerder zet een melding door naar een docent wanneer tijdens de behandeling blijkt dat de oorzaak niet door beheer zelf moet worden opgelost, maar voortkomt uit inhoud, moduleconfiguratie, oefenconfiguratie of een andere onderwijsinhoudelijke inrichting waarvoor een docent verantwoordelijk is.
Doorzetten naar docent is een samengestelde beheeractie. De melding wordt formeel gesloten met afsluitstatus Module configuratie, de melder ontvangt een systeembericht met een verwijzing naar dezelfde melding en de geselecteerde docent ontvangt een normaal privébericht binnen het centrale privéberichtendomein. Dat privébericht wordt door het systeem namens de melder aangemaakt. In de berichtenweergave krijgt alleen dat specifieke bericht een afwijkende afzenderweergave in de vorm OefenHub Beheerder namens de gebruiker. Latere reguliere antwoorden in dezelfde thread nemen deze afwijkende afzenderweergave niet automatisch over.
De actie mag alleen worden uitgevoerd vanuit een actieve behandelcontext. Een melding met status New mag dus niet direct worden doorgezet naar een docent. De melding moet eerst via UC-GEN-TIC-010 aan minimaal één beheerder gekoppeld worden, waardoor de melding inhoudelijk als in behandeling geldt. Daarmee blijft de betekenis van Nieuw zuiver: nieuw betekent nog niet opgepakt door beheer.
Deze usecase beschrijft niet de gewone gebruikersflow voor het opstellen van privéberichten. Het systeem maakt het privébericht technisch wel aan binnen dezelfde onderliggende privéberichtstructuur, zodat de docent het bericht terugvindt in het gewone berichtenoverzicht en eventueel binnen dezelfde thread kan antwoorden volgens het privéberichtendomein.
3. Scope
Deze usecase beschrijft:
- het openen van de sectie Doorzetten naar docent in de beheerderdetailweergave;
- het bepalen van docenten die op basis van de meldingcontext selecteerbaar zijn;
- het kiezen van één docent door de beheerder;
- het tonen van een waarschuwing dat de beheerder bewust moet beoordelen of de gekozen docent verantwoordelijk is voor de relevante oefening of configuratie;
- het invoeren van een begeleidende toelichting voor de docent;
- het server-side controleren van beheerderautorisatie, tickettoestand, actieve behandelcontext, geselecteerde docent en berichtverwerking;
- het bevestigen van de samengestelde actie;
- het formeel sluiten van de melding met afsluitstatus Module configuratie;
- het vastleggen van de sluitregistratie in
TicketClosures; - het vastleggen van de doorzetactie in
TicketForwardedToTeacher; - het aanmaken van een systeembericht voor de melder met
EntityType = TicketenEntityId = TicketId; - het aanmaken of gebruiken van een privéberichtthread tussen melder en docent;
- het aanmaken van een privébericht namens de melder, zichtbaar voor de docent;
- het bijwerken van participantgebonden ongelezenstatus voor de docent;
- het vastleggen van compacte auditregels in
TicketHistory; - transactionele foutafhandeling wanneer één onderdeel van de samengestelde actie mislukt.
Deze usecase beschrijft niet:
- het aanmaken van de oorspronkelijke melding;
- het gewone oplossen of sluiten door beheer zonder doorzetting;
- het plaatsen van een regulier extern bericht aan de melder;
- het plaatsen van een intern beheerbericht;
- het beheer van docentrelaties of niveauautorisaties;
- het bepalen van de feitelijke inhoudelijke schuldvraag buiten de expliciete keuze van de beheerder;
- het afhandelen van het latere gesprek tussen docent en gebruiker;
- het generiek opstellen van privéberichten door eindgebruikers;
- het wijzigen van oefenconfiguraties door de docent;
- het beheren van systeemberichtsjablonen, popupteksten of seeddata.
4. Pre-condities
| ID | Voorwaarde |
|---|---|
| PRE-001 | De beheerder is ingelogd. |
| PRE-002 | De beheerder heeft een actieve beheerdercontext. |
| PRE-003 | De meldingenfunctionaliteit is sitebreed beschikbaar. |
| PRE-004 | De beheerderdetailweergave van de melding is geopend of er is een geldige ticketreferentie beschikbaar. |
| PRE-005 | De melding bestaat als Tickets-record. |
| PRE-006 | De melding mag door de beheerder in beheercontext gelezen en behandeld worden. |
| PRE-007 | De melding is niet functioneel gesloten. |
| PRE-008 | De melding heeft een actieve behandelcontext via minimaal één actieve beheerderkoppeling. |
| PRE-009 | De melding heeft niet de zuivere onbehandelde status New. |
| PRE-010 | De afsluitstatus Module configuratie bestaat als geldige waarde in TicketResolutionTypes. |
| PRE-011 | Er is minimaal één docent selecteerbaar op basis van de melder, rolcontext, leerlingcontext of actieve relevante docentrelatie die uit de meldingcontext volgt. |
| PRE-012 | Het berichtensysteem kan systeemberichten met EntityType = Ticket aanmaken. |
| PRE-013 | Het privéberichtendomein kan een normale privéberichtthread en een privébericht namens de melder aanmaken. |
| PRE-014 | De beheerder kan een begeleidende toelichting invoeren. |
| PRE-015 | De applicatie kan sluiting, doorzetregistratie, systeembericht, privébericht en history transactioneel verwerken. |
5. Post-condities
| ID | Resultaat |
|---|---|
| POST-001 | De melding is formeel gesloten via een nieuw TicketClosures-record. |
| POST-002 | De sluitregistratie gebruikt afsluitstatus Module configuratie. |
| POST-003 | Tickets.Status is gewijzigd naar Closed. |
| POST-004 | De actuele sluitregistratie bevat een concrete heropen-deadline volgens de geldende meldingeninstelling. |
| POST-005 | De melding wordt voor de melder gebruikersgericht als Opgelost weergegeven zolang de heropentermijn actief is. |
| POST-006 | Er is een TicketForwardedToTeacher-record aangemaakt met de gekozen docent, uitvoerende beheerder, tijdstip, toelichting en verwijzingen naar de relevante ticket- en berichtcontext. |
| POST-007 | De melder heeft een systeembericht ontvangen met verwijzing naar de melding via EntityType = Ticket en EntityId = TicketId. |
| POST-008 | Er is een normale privéberichtthread aangemaakt of hergebruikt tussen melder en docent. |
| POST-009 | Er is een privébericht aangemaakt dat voor de docent zichtbaar is als afkomstig van OefenHub Beheerder namens de melder. |
| POST-010 | De afwijkende namens-weergave geldt alleen voor dit specifieke privébericht. |
| POST-011 | De docent heeft een participantgebonden ongelezenstatus of tellerupdate voor het nieuwe privébericht. |
| POST-012 | De melder krijgt geen los privébericht van zichzelf als ongelezen actie, maar wordt via het systeembericht over de doorzetting geïnformeerd. |
| POST-013 | In TicketHistory zijn compacte auditregels vastgelegd voor de formele sluiting en de doorzetting naar docent. |
| POST-014 | Vrije toelichtingen worden niet volledig in TicketHistory gedupliceerd. |
| POST-015 | Actieve beheerderkoppelingen blijven historisch zichtbaar en worden door deze flow niet automatisch ontkoppeld. |
| POST-016 | Bij annuleren of fout ontstaat geen gedeeltelijke sluiting, geen gedeeltelijk privébericht, geen gedeeltelijk systeembericht en geen gedeeltelijke doorzetregistratie. |
6. Trigger
De usecase start wanneer een beheerder in de beheerderdetailweergave van een behandelbare melding de sectie Doorzetten naar docent gebruikt en de actie kiest om de melding te sluiten en door te zetten naar een docent.
7. Normale processtroom
| Stap | Actor | Scherm / component | Actie | Systeemrespons | Data / regel |
|---|---|---|---|---|---|
| 1 | Beheerder | Beheerderdetailweergave | Opent een melding in beheercontext. | Het systeem toont de beheerderdetailweergave met de sectie Doorzetten naar docent wanneer de tickettoestand dit toestaat. | UC-GEN-TIC-009. |
| 2 | Systeem | Autorisatie- en ticketservice | Controleert sessie, beheerdercontext en objecttoegang. | Alleen bevoegde beheerders mogen de actie gebruiken. | Server-side autorisatie. |
| 3 | Systeem | Ticketservice | Controleert dat de melding bestaat en niet functioneel gesloten is. | De actie wordt alleen aangeboden of verwerkt voor behandelbare meldingen. | Tickets.Status is niet Closed. |
| 4 | Systeem | Ticketservice | Controleert dat een actieve behandelcontext bestaat. | Bij status New of ontbrekende actieve beheerderkoppeling is doorzetten niet toegestaan. | Eerst UC-GEN-TIC-010. |
| 5 | Beheerder | Sectie Doorzetten naar docent | Opent de doorzetsectie. | Het systeem toont de keuze voor een docent en een veld voor begeleidende toelichting. | Schermcomponent in SCH-BEH-02-01. |
| 6 | Systeem | Relatie- en ticketscope | Bepaalt selecteerbare docenten. | Alleen docenten die functioneel bij de melder, leerlingcontext of relevante onderwijscontext horen worden getoond. | Actieve relevante docentrelatie of afgeleide meldingcontext. |
| 7 | Systeem | Sectie Doorzetten naar docent | Toont een waarschuwing bij de docentkeuze. | De beheerder wordt erop gewezen dat de gekozen docent daadwerkelijk verantwoordelijk moet zijn voor de relevante oefening of configuratie en dat gedeelde oefencontext zorgvuldig beoordeeld moet worden. | Functionele waarschuwing, tekst centraal in scherm/popupbron. |
| 8 | Beheerder | Sectie Doorzetten naar docent | Selecteert één docent. | Het systeem registreert de selectie in de niet-opgeslagen formulierstate. | TeacherUserId. |
| 9 | Beheerder | Sectie Doorzetten naar docent | Voert een begeleidende toelichting in. | Het systeem valideert nog niet definitief, maar kan inline basisvalidatie tonen. | Toelichting verplicht. |
| 10 | Beheerder | Sectie Doorzetten naar docent | Kiest de actie Sluit en zet door naar docent. | Het systeem voert server-side validatie uit op ticket, docent, toelichting, behandelcontext en berichtendomeinen. | Geen opslag vóór geldige validatie. |
| 11 | Systeem | Ticketservice | Valideert dat afsluitstatus Module configuratie beschikbaar is. | De afsluitstatus wordt voorbereid voor de sluitregistratie. | TicketResolutionTypes.Code = ModuleConfiguration of equivalente technische code. |
| 12 | Systeem | Berichtensysteem | Valideert dat systeembericht aan melder kan worden aangemaakt. | De systeemverwijzing naar de melding wordt voorbereid. | EntityType = Ticket, EntityId = TicketId. |
| 13 | Systeem | Privéberichtservice | Valideert dat een privébericht naar de geselecteerde docent namens de melder kan worden aangemaakt. | De thread- en berichtmutatie wordt voorbereid. | Normale private message infrastructuur. |
| 14 | Systeem | Popupcomponent | Toont bevestigingspopup. | De beheerder krijgt de mogelijkheid de samengestelde actie bewust te bevestigen of te annuleren. | POP-GEN-TIC-FORWARD-TEACHER-CONFIRM. |
| 15 | Beheerder | Popupcomponent | Bevestigt de actie. | Het systeem start de definitieve transactie. | Vanaf hier is atomiciteit verplicht. |
| 16 | Systeem | Database | Start een transactie. | Alle mutaties worden samen verwerkt. | Transactionele consistentie. |
| 17 | Systeem | Ticketservice | Maakt een formele sluitregistratie aan. | Er ontstaat een TicketClosures-record met afsluitstatus Module configuratie, actor, tijdstip, toelichting of sluitcontext en heropen-deadline. | TicketClosures. |
| 18 | Systeem | Ticketservice | Wijzigt de ticketstatus. | Tickets.Status wordt Closed. | Formele sluiting. |
| 19 | Systeem | Ticketservice | Legt de doorzetting vast. | Er ontstaat een TicketForwardedToTeacher-record met ticket, docent, beheerder, tijdstip, begeleidende toelichting en koppelingen naar berichtcontext. | TicketForwardedToTeacher. |
| 20 | Systeem | Berichtensysteem | Maakt een systeembericht voor de melder aan. | De melder wordt geïnformeerd dat beheer de melding als docentconfiguratie heeft beoordeeld en kan doorklikken naar de melding. | SystemMessages, EntityType = Ticket. |
| 21 | Systeem | Privéberichtservice | Zoekt of maakt een privéberichtthread tussen melder en docent. | Bestaande thread wordt hergebruikt wanneer functioneel passend; anders ontstaat een nieuwe thread met deelnemers. | PrivateMessageThreads, PrivateMessageThreadParticipants. |
| 22 | Systeem | Privéberichtservice | Maakt het privébericht aan namens de melder. | De docent ontvangt een normaal privébericht met technische namens-referentie naar de melder en uitvoerende beheerder. | PrivateMessages. |
| 23 | Systeem | Privéberichtservice | Werkt readstate/ongelezenstatus bij. | Het bericht wordt voor de docent ongelezen of verhoogt diens teller. De melder krijgt geen eigen ongelezenactie voor dit namens-bericht. | Participantgebonden status. |
| 24 | Systeem | Historyservice | Legt compacte audit vast. | Minimaal sluiting met Module configuratie en doorzetting naar docent worden auditbaar geregistreerd. | TicketHistory. |
| 25 | Systeem | Database | Commit de transactie. | Alle wijzigingen worden definitief opgeslagen. | Atomiciteit. |
| 26 | Systeem | Beheerderdetailweergave | Ververst de melding. | De melding wordt als gesloten getoond met doorzetinformatie en afsluitstatus Module configuratie. | Beheerderweergave. |
| 27 | Docent | Berichtenoverzicht | Ziet het nieuwe privébericht. | De docent kan het bericht openen via het reguliere berichtendomein. | UC-GEN-MSG-001 en UC-GEN-MSG-003. |
| 28 | Melder | Berichtenoverzicht / meldingdetail | Ziet het systeembericht en de gesloten melding. | De melder kan de melding openen en de oplossing/sluitcontext raadplegen. | UC-GEN-TIC-003 en UC-GEN-MSG-003. |
8. Alternatieve en exceptionele processtromen
| ID | Vanaf stap | Situatie | Systeemgedrag | Popup / melding | Datamutatie |
|---|---|---|---|---|---|
| ALT-001 | 1-3 | De melding bestaat niet meer of kan niet veilig geladen worden. | Het systeem toont een veilige niet-beschikbaarmelding. | POP-GEN-TIC-NOT-AVAILABLE | Geen. |
| ALT-002 | 2 | De gebruiker heeft geen actieve beheerdercontext. | Het systeem weigert de beheeractie. | Generieke toegang-geweigerd-afhandeling. | Geen. |
| ALT-003 | 2 | De meldingenfunctionaliteit is uitgeschakeld. | Het systeem blokkeert de beheeractie via generieke featureafhandeling. | Generieke featuremelding. | Geen. |
| ALT-004 | 3 | De melding is al functioneel gesloten. | Het systeem toont de doorzetactie niet of weigert verwerking server-side. | POP-GEN-TIC-FORWARD-TEACHER-NOT-ALLOWED. | Geen. |
| ALT-005 | 4 | De melding heeft status New of heeft geen actieve beheerderkoppeling. | Het systeem blokkeert doorzetten en verwijst functioneel naar eerst oppakken via beheerderkoppeling. | POP-GEN-TIC-FORWARD-TEACHER-NOT-ALLOWED. | Geen. |
| ALT-006 | 6 | Er zijn geen selecteerbare docenten beschikbaar. | Het systeem schakelt de definitieve actie uit of toont een niet-toegestaanmelding. | POP-GEN-TIC-FORWARD-TEACHER-NOT-ALLOWED. | Geen. |
| ALT-007 | 8-10 | De beheerder kiest geen docent. | Het systeem weigert de definitieve actie en toont veldvalidatie. | Inline validatie. | Geen. |
| ALT-008 | 8-13 | De gekozen docent is niet langer actief of niet langer geldig binnen de meldingcontext. | Het systeem herberekent de selectie server-side en blokkeert verwerking. | POP-GEN-TIC-FORWARD-TEACHER-NOT-ALLOWED. | Geen. |
| ALT-009 | 9-10 | De begeleidende toelichting ontbreekt of bevat alleen whitespace. | Het systeem weigert de definitieve actie en toont veldvalidatie. | Inline validatie. | Geen. |
| ALT-010 | 9-10 | De begeleidende toelichting bevat onveilige of niet-toegestane inhoud. | Het systeem sanitizet of weigert de invoer volgens centrale tekstregels. | Inline validatie of veilige foutmelding. | Geen bij weigeren; gesanitized opslag bij toegestane correctie. |
| ALT-011 | 10-13 | De afsluitstatus Module configuratie is technisch niet beschikbaar. | Het systeem blokkeert de actie omdat de formele sluitregistratie niet correct kan worden gemaakt. | POP-GEN-TIC-FORWARD-TEACHER-FAILED. | Geen. |
| ALT-012 | 12 | Het systeembericht aan de melder kan niet worden voorbereid. | Het systeem blokkeert verwerking omdat de samengestelde actie niet volledig kan worden uitgevoerd. | POP-GEN-TIC-FORWARD-TEACHER-FAILED. | Geen. |
| ALT-013 | 13 | Het privébericht aan de docent kan niet worden voorbereid. | Het systeem blokkeert verwerking omdat de docentcommunicatie onderdeel is van de samengestelde actie. | POP-GEN-TIC-FORWARD-TEACHER-FAILED. | Geen. |
| ALT-014 | 14 | De beheerder annuleert de bevestigingspopup. | Het systeem sluit de popup en behoudt de actuele tickettoestand. | Geen of popup sluit. | Geen. |
| ALT-015 | 17 | Het TicketClosures-record kan niet worden opgeslagen. | Het systeem rolt de transactie terug. | POP-GEN-TIC-FORWARD-TEACHER-FAILED. | Geen blijvende mutatie. |
| ALT-016 | 18 | De ticketstatus kan niet naar Closed worden gezet. | Het systeem rolt de transactie terug. | POP-GEN-TIC-FORWARD-TEACHER-FAILED. | Geen blijvende mutatie. |
| ALT-017 | 19 | De TicketForwardedToTeacher-registratie kan niet worden opgeslagen. | Het systeem rolt de transactie terug. | POP-GEN-TIC-FORWARD-TEACHER-FAILED. | Geen blijvende mutatie. |
| ALT-018 | 20 | Het systeembericht aan de melder kan niet worden aangemaakt. | Het systeem rolt de volledige transactie terug. | POP-GEN-TIC-FORWARD-TEACHER-FAILED. | Geen blijvende mutatie. |
| ALT-019 | 21-23 | De privéberichtthread, het privébericht of de ongelezenstatus kan niet worden opgeslagen. | Het systeem rolt de volledige transactie terug. | POP-GEN-TIC-FORWARD-TEACHER-FAILED. | Geen blijvende mutatie. |
| ALT-020 | 24 | De historyregistratie kan niet worden aangemaakt. | Het systeem rolt de volledige transactie terug, omdat audit verplicht is. | POP-GEN-TIC-FORWARD-TEACHER-FAILED. | Geen blijvende mutatie. |
| ALT-021 | 10-25 | De melding is ondertussen door een andere beheerder gewijzigd of gesloten. | Het systeem baseert zich op de actuele server-side status en blokkeert de actie wanneer de toestand niet meer geldig is. | POP-GEN-TIC-FORWARD-TEACHER-NOT-ALLOWED of POP-GEN-TIC-NOT-AVAILABLE. | Geen. |
| ALT-022 | 15 | De beheerder klikt herhaald op bevestigen. | Het systeem verwerkt maximaal één doorzetactie voor dezelfde actuele behandeltoestand. | Geen popup of POP-GEN-TIC-FORWARD-TEACHER-NOT-ALLOWED. | Maximaal één samengestelde doorzetmutatie. |
| ALT-023 | 26 | De beheerderdetailweergave kan na succesvolle verwerking niet direct verversen. | De brondata blijft correct opgeslagen en wordt bij opnieuw laden zichtbaar. | Generieke niet-technische foutmelding of geen popup. | Mutatie blijft staan. |
9. Business rules
| ID | Regel |
|---|---|
| BR-001 | Alleen gebruikers met actieve beheerdercontext mogen een melding doorzetten naar een docent. |
| BR-002 | Doorzetten naar docent is alleen toegestaan voor meldingen die nog niet functioneel gesloten zijn. |
| BR-003 | Doorzetten naar docent vereist een actieve behandelcontext met minimaal één actieve beheerderkoppeling. |
| BR-004 | Een melding met status New mag niet rechtstreeks naar een docent worden doorgezet. |
| BR-005 | De beheerder moet eerst beoordelen dat de oorzaak ligt in inhoud, moduleconfiguratie, oefenconfiguratie of docentgebonden inrichting. |
| BR-006 | De beheerder moet precies één docent kiezen uit de server-side geldige docentselectie. |
| BR-007 | Selecteerbare docenten worden server-side bepaald op basis van de melder, rolcontext, leerlingcontext en actieve relevante docentrelaties die uit de meldingcontext volgen. |
| BR-008 | De beheerder moet een begeleidende toelichting voor de docent invoeren. |
| BR-009 | De actie moet expliciet bevestigd worden voordat mutaties worden opgeslagen. |
| BR-010 | Doorzetten naar docent sluit de melding formeel. |
| BR-011 | De formele sluiting gebruikt afsluitstatus Module configuratie. |
| BR-012 | Doorzetten naar docent zet Tickets.Status naar Closed. |
| BR-013 | Doorzetten naar docent maakt een TicketForwardedToTeacher-record aan. |
| BR-014 | De melder ontvangt een systeembericht met verwijzing naar dezelfde melding. |
| BR-015 | Het systeembericht gebruikt EntityType = Ticket en EntityId = TicketId. |
| BR-016 | De docent ontvangt een normaal privébericht binnen het centrale privéberichtendomein. |
| BR-017 | Het privébericht wordt namens de melder aangemaakt en toont voor dit specifieke bericht de afwijkende afzenderweergave OefenHub Beheerder namens de gebruiker. |
| BR-018 | De namens-weergave geldt alleen voor het door het systeem aangemaakte doorzetbericht en niet automatisch voor latere reguliere antwoorden in dezelfde thread. |
| BR-019 | Doorzetten naar docent maakt geen apart nieuw berichttype aan. |
| BR-020 | Doorzetten naar docent gebruikt geen losse database-URL als verwijzing voor het systeembericht. |
| BR-021 | De docent krijgt participantgebonden ongelezenstatus voor het nieuw ontvangen privébericht. |
| BR-022 | De melder krijgt geen ongelezen privéberichtactie voor het namens hem of haar aangemaakte bericht; de melder wordt via systeembericht geïnformeerd. |
| BR-023 | De doorzetactie wordt auditbaar vastgelegd in TicketHistory. |
| BR-024 | Vrije toelichtingstekst hoort in de formele doorzet- of berichtcontext en wordt niet volledig als vrije tekst in TicketHistory gedupliceerd. |
| BR-025 | Actieve beheerderkoppelingen worden door doorzetten naar docent niet automatisch ontkoppeld. |
| BR-026 | Doorzetten naar docent mag geen nieuwe melding aanmaken. |
| BR-027 | Doorzetten naar docent mag geen TicketReopenRequests aanmaken. |
| BR-028 | De samengestelde actie moet transactioneel zijn; sluiting, doorzetregistratie, systeembericht, privébericht en history mogen niet gedeeltelijk ontstaan. |
10. Datavalidatie
| Veld / object | Validatie |
|---|---|
TicketId / ticketreferentie | Verplicht, geldig formaat en bestaand Tickets-record. |
| Actieve gebruiker | Moet ingelogd zijn en actieve beheerdercontext hebben. |
| Featurestatus meldingen | Meldingenfunctionaliteit moet beschikbaar zijn. |
| Beschikbaarheid melding | De melding moet in beheercontext veilig geopend en behandeld kunnen worden. |
Tickets.Status | Mag niet Closed zijn en mag niet onbehandeld New blijven voor deze actie. |
| Actieve beheerderkoppeling | Minimaal één actieve TicketAssignments-koppeling moet bestaan. |
ResolutionTypeId | Moet verwijzen naar de geldige afsluitstatus Module configuratie. |
| Selecteerbare docentenlijst | Wordt server-side opgebouwd op basis van de relevante melding- en relatiecontext. |
TeacherUserId | Verplicht, bestaand actief gebruikersaccount met docentrol en geldig binnen de doorzetcontext. |
| Begeleidende toelichting | Verplicht, niet leeg, niet alleen whitespace en begrensd volgens de geldende maximale tekstlengte. |
| Toelichtingstekst | Alleen toegestane veilige tekst/opmaak is toegestaan; invoer wordt server-side gesanitized en veilig geëncodeerd. |
SystemMessages.EntityType | Moet Ticket zijn voor het systeembericht aan de melder. |
SystemMessages.EntityId | Moet het concrete TicketId bevatten. |
| Privéberichtthread | Moet bestaan of aangemaakt kunnen worden tussen melder en geselecteerde docent. |
| Namens-referentie | Het privébericht moet technisch kunnen verwijzen naar de melder namens wie het bericht is aangemaakt en naar de beheerder die de actie uitvoerde. |
| Readstate docent | Het nieuwe privébericht moet voor de docent als ongelezen kunnen worden geregistreerd. |
| Actor bij mutatie | De uitvoerende beheerder wordt vastgelegd bij sluiting, doorzetregistratie en history. |
| Tijdstippen | Worden server-side in UTC vastgelegd. |
| Transactionele verwerking | Sluitregistratie, statuswijziging, doorzetregistratie, systeembericht, privébericht en history moeten consistent samen verwerkt worden. |
11. Datamutaties en events
| Stap | Type | Entiteit / event | Mutatie |
|---|---|---|---|
| 17 | Create | TicketClosures | Formele sluitregistratie met TicketId, ResolutionTypeId = ModuleConfiguration, uitvoerende beheerder, tijdstip, toelichting/sluitcontext en ReopenDeadlineUtc. |
| 17 | Event | TicketResolvedOrClosedByAdmin | Domeinevent of afgeleide eventregistratie voor formele sluiting door beheer via doorzetten. |
| 18 | Update | Tickets | Status wordt gewijzigd naar Closed; laatste wijzigingsmetadata wordt bijgewerkt. |
| 18 | Event | TicketStatusChanged | Statusovergang naar Closed wordt geregistreerd. |
| 19 | Create | TicketForwardedToTeacher | Doorzetregistratie met ticket, gekozen docent, uitvoerende beheerder, tijdstip, toelichting en relevante berichtverwijzingen. |
| 19 | Event | TicketForwardedToTeacher | Domeinevent of afgeleide eventregistratie voor doorzetten naar docent. |
| 20 | Create | SystemMessages | Systeembericht voor de melder met verwijzing naar de melding via EntityType = Ticket en EntityId = TicketId. |
| 20 | Event | SystemMessageCreated | Event of afgeleide registratie voor melding aan melder. |
| 21 | Create/Read | PrivateMessageThreads | Bestaande thread tussen melder en docent wordt hergebruikt of nieuwe thread wordt aangemaakt. |
| 21 | Create/Update | PrivateMessageThreadParticipants | Deelnemers voor melder en docent worden vastgelegd of geactiveerd voor de thread. |
| 22 | Create | PrivateMessages | Privébericht aan docent wordt aangemaakt met namens-referentie naar de melder en uitvoerende beheerder. |
| 22 | Event | PrivateMessageCreated | Event of afgeleide registratie voor het aangemaakte privébericht. |
| 23 | Update | PrivateMessageThreadParticipants / readstate | Ongelezenstatus of laatste gelezen positie van de docent wordt bijgewerkt zodat het bericht als nieuw zichtbaar is. |
| 24 | Create | TicketHistory | Compacte auditregel voor formele sluiting met Module configuratie. |
| 24 | Create | TicketHistory | Compacte auditregel voor doorzetten naar de gekozen docent. |
| 24 | Event | TicketHistoryRecorded | Event of afgeleide registratie voor verplichte history. |
| ALT-015 t/m ALT-020 | Event | TicketForwardToTeacherFailed | Alleen wanneer fout- of technische events worden geregistreerd. |
12. Geen datamutaties
| Entiteit | Reden |
|---|---|
TicketReopenRequests | Doorzetten naar docent is een sluit- en doorzetflow, geen heropenflow. |
TicketAssignments | Actieve beheerderkoppelingen blijven ongewijzigd; deze flow ontkoppelt geen beheerders. |
TicketTechnicalSnapshots | De technische momentopname van het moment van melden wordt alleen gelezen. |
TicketDiscussionMessages | De begeleidende toelichting wordt niet als regulier ticketdiscussiebericht gedupliceerd. |
TicketResolutionTypes | De afsluitstatus Module configuratie wordt alleen gelezen en niet beheerd. |
UserRelationships | Docentrelaties worden alleen gebruikt om geldige selectie te bepalen; deze usecase maakt of wijzigt geen relaties. |
LevelAuthorizations | Doorzetten naar docent wijzigt geen leerlingautorisaties. |
ExerciseRuns | De meldingafhandeling wijzigt geen oefenruns of resultaten. |
ExerciseModules / Exercises | De docent kan later inhoud of configuratie beoordelen, maar deze usecase wijzigt geen oefenmodule of oefening. |
Nieuw Tickets-record | Doorzetten sluit de bestaande melding en maakt geen nieuwe melding aan. |
13. State diagram — doorzetten naar docent
14. Decision flow — melding doorzetten naar docent
15. Data lifecycle diagram — doorzetten naar docent
16. Sequence diagrammen
16.1 Melding sluiten en doorzetten naar docent
16.2 Doorzetten wordt geblokkeerd bij status Nieuw
16.3 Transactionele fout bij privébericht aan docent
17. Popupverwijzingen
| PopupKey | Moment | Variant | Doel |
|---|---|---|---|
POP-GEN-TIC-NOT-AVAILABLE | Wanneer de melding niet bestaat, niet beschikbaar is of niet geopend mag worden. | InfoOnly | Voorkomen dat een beheerder handelt op een ontbrekende of ontoegankelijke melding. |
POP-GEN-TIC-FORWARD-TEACHER-CONFIRM | Vlak vóór definitief sluiten en doorzetten naar docent. | Confirm | Bevestigen dat de beheerder de melding formeel sluit, afsluitstatus Module configuratie gebruikt en een privébericht namens de melder aan de docent laat sturen. |
POP-GEN-TIC-FORWARD-TEACHER-NOT-ALLOWED | Wanneer doorzetten niet toegestaan is, bijvoorbeeld bij status Nieuw, ontbrekende behandelcontext, gesloten melding, ontbrekende docent of ongeldige docentselectie. | InfoOnly | Uitleggen dat de doorzetactie niet kan worden uitgevoerd. |
POP-GEN-TIC-FORWARD-TEACHER-FAILED | Wanneer sluiting, doorzetregistratie, systeembericht, privébericht of history transactioneel mislukt. | InfoOnly | Veilige foutmelding tonen zonder technische details. |
18. Afleiding naar Functioneel Ontwerp / Technisch Ontwerp / Software Requirements Specification
| Doeldocument | Afleiding |
|---|---|
| Functioneel Ontwerp | Beschrijft doorzetten naar docent als samengestelde beheeractie vanuit de sectie Doorzetten naar docent op de beheerderdetailweergave. |
| Functioneel Ontwerp | Beschrijft dat doorzetten naar docent alleen mag vanuit een actieve behandelcontext en dus niet rechtstreeks vanuit status Nieuw. |
| Functioneel Ontwerp | Beschrijft dat de beheerder een docent kiest uit een server-side bepaalde geldige docentselectie. |
| Functioneel Ontwerp | Beschrijft dat de beheerder een begeleidende toelichting invoert en bewust bevestigt dat de gekozen docent verantwoordelijk kan zijn voor de relevante oefening of configuratie. |
| Functioneel Ontwerp | Beschrijft dat de melding formeel wordt gesloten met afsluitstatus Module configuratie en dat de melder een systeembericht ontvangt. |
| Functioneel Ontwerp | Beschrijft dat de docent een regulier privébericht ontvangt dat namens de melder door OefenHub Beheerder is geplaatst. |
| Technisch Ontwerp | Technisch Ontwerp: meldingen, tickets en beheerafhandeling, communicatie, background jobs en logging en foutafhandeling beschrijven de technische uitwerking. Beschrijft de transactionele verwerking uit voor TicketClosures, Tickets.Status, TicketForwardedToTeacher, SystemMessages, PrivateMessageThreads, PrivateMessages, readstate en TicketHistory. |
| Technisch Ontwerp | Technisch Ontwerp: meldingen, tickets en beheerafhandeling, communicatie, background jobs en logging en foutafhandeling beschrijven de technische uitwerking. Beschrijf hoe het privébericht namens de melder technisch wordt opgeslagen zonder apart berichttype en met afwijkende afzenderweergave alleen voor dat bericht. |
| Technisch Ontwerp | Technisch Ontwerp: meldingen, tickets en beheerafhandeling, communicatie, background jobs en logging en foutafhandeling beschrijven de technische uitwerking. Beschrijf hoe selecteerbare docenten server-side uit melder-, leerling-, relatie- en ticketcontext worden afgeleid. |
| Technisch Ontwerp | Technisch Ontwerp: meldingen, tickets en beheerafhandeling, communicatie, background jobs en logging en foutafhandeling beschrijven de technische uitwerking. Beschrijf dat systeemberichten naar tickets via EntityType = Ticket en EntityId = TicketId verwijzen. |
| Software Requirements Specification | Beschrijft requirements voor actieve behandelcontext, geldige docentselectie, verplichte toelichting, bevestiging, formele sluiting, systeembericht, privébericht namens melder, audit en transactionele consistentie. |
| Database-informatie | Controleer dat TicketForwardedToTeacher voldoende verwijzingen kan vastleggen naar ticket, docent, beheerder, toelichting, sluiting en aangemaakt privébericht. |
| Database-informatie | Controleer dat PrivateMessages of de bijbehorende metadata de namens-weergave kan ondersteunen zonder apart berichttype. |
| Popupregister | Neem POP-GEN-TIC-FORWARD-TEACHER-CONFIRM, POP-GEN-TIC-FORWARD-TEACHER-NOT-ALLOWED en POP-GEN-TIC-FORWARD-TEACHER-FAILED op; hergebruik POP-GEN-TIC-NOT-AVAILABLE. |
| Systeemberichtenbeheer | Neem een systeemberichtsjabloon op voor de melder bij doorzetten naar docent met verwijzing naar de melding. |
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-GEN-TIC-015-001 | SRS-TIC-003 SRS-TCH-001 SRS-ADM-001 AC-TIC-003 AC-TCH-001 AC-ADM-001 | Alleen gebruikers met actieve beheerdercontext toestaan om een melding naar een docent door te zetten |
REQ-UC-GEN-TIC-015-002 | SRS-AUTH-001 SRS-TIC-003 SRS-ADM-002 SRS-ADM-001 AC-AUTH-001 AC-TIC-003 AC-ADM-002 AC-ADM-001 | Vóór verwerking server-side controleren of de melding bestaat en door de beheerder behandeld mag worden |
REQ-UC-GEN-TIC-015-003 | SRS-TIC-002 AC-TIC-002 | Voorkomen dat een functioneel gesloten melding via deze flow opnieuw wordt doorgezet |
REQ-UC-GEN-TIC-015-004 | SRS-TIC-002 SRS-TCH-001 AC-TIC-002 AC-TCH-001 | Voorkomen dat een melding met status Nieuw rechtstreeks naar een docent wordt doorgezet |
REQ-UC-GEN-TIC-015-005 | SRS-TIC-003 SRS-TCH-001 SRS-ADM-001 AC-TIC-003 AC-TCH-001 AC-ADM-001 | Doorzetten naar docent alleen toestaan wanneer minimaal één actieve beheerderkoppeling bestaat |
REQ-UC-GEN-TIC-015-006 | SRS-AUTH-001 SRS-REL-001 SRS-TIC-002 SRS-LRN-009 SRS-TCH-001 AC-AUTH-001 AC-REL-001 AC-TIC-002 AC-LRN-009 AC-TCH-001 | Selecteerbare docenten server-side bepalen op basis van de relevante melder-, leerling-, relatie- en ticketcontext |
REQ-UC-GEN-TIC-015-007 | SRS-AUTH-004 SRS-TIC-002 SRS-TCH-001 AC-AUTH-004 AC-TIC-002 AC-TCH-001 | Vereisen dat precies één geldige docent wordt geselecteerd |
REQ-UC-GEN-TIC-015-008 | SRS-TIC-002 SRS-TCH-001 AC-TIC-002 AC-TCH-001 | Voorkomen dat een niet-actieve, niet-docent of niet-relevante gebruiker als doorzetdocent wordt gekozen |
REQ-UC-GEN-TIC-015-009 | SRS-TIC-002 SRS-TCH-001 AC-TIC-002 AC-TCH-001 | Een begeleidende toelichting verplicht stellen bij doorzetten naar docent |
REQ-UC-GEN-TIC-015-010 | SRS-AUTH-001 SRS-TIC-002 SRS-NFR-SEC-001 AC-AUTH-001 AC-TIC-002 AC-NFR-SEC-001 | De begeleidende toelichting server-side valideren, sanitizen en veilig renderen |
REQ-UC-GEN-TIC-015-011 | SRS-TIC-002 SRS-POP-001 AC-TIC-002 AC-POP-001 | Vlak vóór definitieve verwerking een bevestigingspopup tonen |
REQ-UC-GEN-TIC-015-012 | SRS-TIC-007 SRS-TCH-001 AC-TIC-007 AC-TCH-001 | De melding formeel sluiten wanneer zij naar een docent wordt doorgezet |
REQ-UC-GEN-TIC-015-013 | SRS-TIC-007 SRS-MOD-003 AC-TIC-007 AC-MOD-003 | Voor deze sluiting afsluitstatus Module configuratie gebruiken |
REQ-UC-GEN-TIC-015-014 | SRS-TIC-001 AC-TIC-001 | Een TicketClosures-record aanmaken met actor, tijdstip, afsluitstatus, sluitcontext en heropen-deadline |
REQ-UC-GEN-TIC-015-015 | SRS-TIC-002 AC-TIC-002 | Tickets.Status naar Closed wijzigen bij succesvolle doorzetting |
REQ-UC-GEN-TIC-015-016 | SRS-TIC-004 AC-TIC-004 | De melder de melding gebruikersgericht als Opgelost tonen zolang de heropentermijn actief is |
REQ-UC-GEN-TIC-015-017 | SRS-TIC-001 AC-TIC-001 | Een TicketForwardedToTeacher-record aanmaken bij succesvolle doorzetting |
REQ-UC-GEN-TIC-015-018 | SRS-AUTH-004 SRS-TIC-003 SRS-TCH-001 SRS-ADM-001 SRS-NFR-AUD-001 AC-AUTH-004 AC-TIC-003 AC-TCH-001 AC-ADM-001 AC-NFR-AUD-001 | In TicketForwardedToTeacher minimaal ticket, geselecteerde docent, uitvoerende beheerder, tijdstip en toelichting vastleggen |
REQ-UC-GEN-TIC-015-019 | SRS-MSG-001 SRS-TIC-002 SRS-TCH-001 AC-MSG-001 AC-TIC-002 AC-TCH-001 | De melder een systeembericht sturen wanneer een melding naar een docent wordt doorgezet |
REQ-UC-GEN-TIC-015-020 | SRS-MSG-001 SRS-TIC-002 AC-MSG-001 AC-TIC-002 | Dit systeembericht koppelen met EntityType = Ticket en EntityId = TicketId |
REQ-UC-GEN-TIC-015-021 | SRS-MSG-001 SRS-TIC-001 SRS-TCH-001 AC-MSG-001 AC-TIC-001 AC-TCH-001 | Een normale privéberichtthread tussen melder en docent aanmaken of hergebruiken |
REQ-UC-GEN-TIC-015-022 | SRS-AUTH-004 SRS-MSG-001 SRS-TIC-001 SRS-TCH-001 AC-AUTH-004 AC-MSG-001 AC-TIC-001 AC-TCH-001 | Een privébericht aan de geselecteerde docent aanmaken namens de melder |
REQ-UC-GEN-TIC-015-023 | SRS-MSG-001 SRS-TIC-002 SRS-NFR-AUD-001 AC-MSG-001 AC-TIC-002 AC-NFR-AUD-001 | Voor dit privébericht technisch kunnen vastleggen namens welke gebruiker het bericht is verzonden |
REQ-UC-GEN-TIC-015-024 | SRS-MSG-001 SRS-TIC-003 SRS-ADM-001 SRS-NFR-AUD-001 AC-MSG-001 AC-TIC-003 AC-ADM-001 AC-NFR-AUD-001 | Voor dit privébericht technisch kunnen vastleggen welke beheerder de namens-verzending heeft uitgevoerd |
REQ-UC-GEN-TIC-015-025 | SRS-MSG-001 SRS-TIC-003 SRS-ADM-001 AC-MSG-001 AC-TIC-003 AC-ADM-001 | Dit specifieke privébericht in de berichtenweergave tonen als afkomstig van OefenHub Beheerder namens de melder |
REQ-UC-GEN-TIC-015-026 | SRS-MSG-001 SRS-TIC-002 SRS-LRN-003 AC-MSG-001 AC-TIC-002 AC-LRN-003 | De namens-weergave niet automatisch toepassen op latere reguliere antwoorden binnen dezelfde thread |
REQ-UC-GEN-TIC-015-027 | SRS-MSG-006 SRS-TIC-002 SRS-TCH-001 AC-MSG-006 AC-TIC-002 AC-TCH-001 | Het aangemaakte privébericht voor de docent als ongelezen beschikbaar maken |
REQ-UC-GEN-TIC-015-028 | SRS-MSG-006 SRS-TIC-003 AC-MSG-006 AC-TIC-003 | Het namens de melder aangemaakte bericht niet als eigen ongelezen actie voor de melder behandelen |
REQ-UC-GEN-TIC-015-029 | SRS-TIC-002 SRS-TCH-001 SRS-NFR-AUD-001 AC-TIC-002 AC-TCH-001 AC-NFR-AUD-001 | Doorzetten naar docent auditbaar vastleggen in TicketHistory |
REQ-UC-GEN-TIC-015-030 | SRS-TIC-007 SRS-MOD-003 SRS-NFR-AUD-001 AC-TIC-007 AC-MOD-003 AC-NFR-AUD-001 | De formele sluiting met afsluitstatus Module configuratie auditbaar vastleggen |
REQ-UC-GEN-TIC-015-031 | SRS-TIC-002 SRS-NFR-AUD-001 AC-TIC-002 AC-NFR-AUD-001 | Vrije toelichtingsteksten niet volledig in TicketHistory dupliceren |
REQ-UC-GEN-TIC-015-032 | SRS-TIC-001 SRS-TCH-001 AC-TIC-001 AC-TCH-001 | Bij doorzetten naar docent geen TicketReopenRequests aanmaken |
REQ-UC-GEN-TIC-015-033 | SRS-TIC-001 SRS-TCH-001 AC-TIC-001 AC-TCH-001 | Bij doorzetten naar docent geen nieuwe melding aanmaken |
REQ-UC-GEN-TIC-015-034 | SRS-AUTH-001 SRS-REL-001 SRS-TIC-001 SRS-CAT-001 SRS-TCH-002 AC-AUTH-001 AC-REL-001 AC-TIC-001 AC-CAT-001 AC-TCH-002 | Bij doorzetten naar docent geen docentrelatie of niveauautorisatie aanmaken of wijzigen |
REQ-UC-GEN-TIC-015-035 | SRS-MSG-001 SRS-TIC-007 SRS-TCH-001 SRS-NFR-AUD-001 AC-MSG-001 AC-TIC-007 AC-TCH-001 AC-NFR-AUD-001 | Doorzetten naar docent transactioneel uitvoeren met sluitregistratie, statuswijziging, doorzetregistratie, systeembericht, privébericht, readstate en history |
REQ-UC-GEN-TIC-015-036 | SRS-MSG-001 SRS-TIC-007 SRS-SHR-001 SRS-NFR-AVL-001 AC-MSG-001 AC-TIC-007 AC-SHR-001 AC-NFR-AVL-001 | Bij mislukte transactionele verwerking geen gedeeltelijke sluiting, gedeeltelijke doorzetregistratie of gedeeltelijke berichtverwerking zichtbaar maken |
REQ-UC-GEN-TIC-015-037 | SRS-TIC-002 AC-TIC-002 | Bij niet-beschikbare melding POP-GEN-TIC-NOT-AVAILABLE gebruiken |
REQ-UC-GEN-TIC-015-038 | SRS-TIC-002 AC-TIC-002 | Bij niet-toegestane doorzetting POP-GEN-TIC-FORWARD-TEACHER-NOT-ALLOWED gebruiken |
REQ-UC-GEN-TIC-015-039 | SRS-TIC-002 AC-TIC-002 | Vlak vóór definitieve doorzetting POP-GEN-TIC-FORWARD-TEACHER-CONFIRM gebruiken |
REQ-UC-GEN-TIC-015-040 | SRS-TIC-002 AC-TIC-002 | Bij technische of transactionele fout POP-GEN-TIC-FORWARD-TEACHER-FAILED gebruiken |