Skip to main content

Berichten

Deze map bevat de generieke usecases voor het berichtendomein van OefenHub. Het domein omvat systeemberichten, privéberichtthreads, leesstatus, mailboxweergave, threadgebeurtenissen en vervolgacties vanuit berichten.

De usecases in deze map zijn procesgericht. De schermdocumentatie van de berichtenschermen blijft de bron voor exacte UI-opbouw, labels, posities, iconen, voorbeeldwaarden en responsive gedrag. Deze usecases beschrijven vooral het gedrag achter de schermen: welke mailboxcontext geldt, welke controles server-side plaatsvinden, welke records worden gelezen of gewijzigd, welke ongelezenstatus ontstaat en welke vervolgprocessen worden gestart.

Usecases

UsecaseOmschrijving
UC-GEN-MSG-001 — Berichtenoverzicht bekijkenBekijken van de gebruikergebonden mailboxweergave voor systeemberichten en privéberichtthreads, inclusief sortering, zoeken, filteren, ongelezenstatus, paginering en lichte mailboxacties.
UC-GEN-MSG-002 — Privébericht opstellen en verzendenOpstellen en verzenden van een nieuw privébericht aan een toegestane ontvanger, inclusief ontvangerselectie, relatiecontrole, opslag, readstate en tellerupdate voor de ontvanger.
UC-GEN-MSG-003 — Bericht openenOpenen van een systeembericht of privéberichtthread, inclusief objecttoegang, automatische leesactie, threadcontext, thread-events en afhandeling van niet-beschikbare berichten.
UC-GEN-MSG-004 — Bericht beantwoordenBeantwoorden van een bestaande privéberichtthread, inclusief validatie, relatiecontrole op verzendmoment, optionele onderwerpwijziging en ongelezenstatus voor andere deelnemers.
UC-GEN-MSG-005 — Privéberichtthread verwijderenVerwijderen van een privéberichtthread uit uitsluitend de eigen mailboxweergave, inclusief bevestiging, participantcontrole, readstate-effect en telleractualisatie.

Relevante schermdocumentatie

Scherm / contextRelevantie
SCH-GEN-02 — BerichtenoverzichtPrimaire mailboxpagina voor systeemberichten en privéberichtthreads, inclusief filters, zoeken, ongelezenstatus, samenvattingen en acties.
SCH-GEN-03 — Nieuw privéberichtPagina voor het opstellen van een nieuw privébericht aan een toegestane ontvanger binnen een geldige relatiecontext.
SCH-GEN-04 — Open berichtLeesweergave voor een geopend systeembericht of privéberichtthread, inclusief eerdere berichten en beschikbare vervolgacties.
SCH-GEN-05 — Beantwoord berichtInline antwoordcomponent voor bestaande privéberichtthreads, inclusief compacte editor, veilige opmaak en gewone threadcontext.
Ontwerpbronnen — Popup-registerCentrale bron voor popupkeys, popupteksten, knopacties en inputvelden.
Ontwerpbronnen — Popup-themesCentrale bron voor popupvarianten, themes en importdefaults.

Domeinafbakening

OnderwerpAfbakening
SysteemberichtenWorden opgeslagen als systeemgegenereerde berichten met een functionele verwijzing naar een domeinobject, zoals RelationshipInvitation, Ticket of PrivateMessageThread.
PrivéberichtthreadsWorden opgeslagen als conversatiecontext in PrivateMessageThreads, met deelnemers, berichten, threadgebeurtenissen en participantgebonden mailboxstatus.
PrivéberichtenWorden opgeslagen als individuele berichten binnen een privéberichtthread. Zij zijn alleen toegestaan tussen gebruikers waarvoor de geldende relatie- en contextregels privécommunicatie toestaan.
ThreaddeelnemersWorden participantgebonden vastgelegd, zodat verwijderen, gelezen/ongelezen en zichtbaarheid per gebruiker kunnen verschillen.
ThreadgebeurtenissenWorden binnen de privéthread vastgelegd als PrivateMessageThreadEvents, bijvoorbeeld bij onderwerpwijziging. Zij zijn geen losse systeemberichten en geen gewone privéberichten.
LeesstatusWordt per gebruiker of participant bijgehouden. Het openen van een bericht of thread kan de leespositie van uitsluitend de ingelogde gebruiker wijzigen.
Headerbadge / tellerToont ongelezen berichten voor de ingelogde gebruiker. Bij leerlingen blijft de teller tijdens een actieve oefenrun tijdelijk verborgen zodat de oefenflow niet onderbroken wordt.
RetentiePrivéberichten kennen een bewaartermijn. Systeemberichten blijven functioneel beschikbaar als gebruikersgerichte logging, tenzij later anders vastgelegd.
RelatiebeheerBepaalt wie elkaar privéberichten mogen sturen. De relatieflows zelf worden uitgewerkt in de relatie-usecases.
Meldingen en andere doeldomeinenKunnen systeemberichten of privéberichten veroorzaken, maar hun inhoudelijke proceslogica wordt uitgewerkt in het betreffende domein.

Berichttypen en hoofdobjecten

BerichtcontextHoofdentiteitKenmerk
SysteemberichtSystemMessagesDoor het systeem aangemaakt bericht met EntityType en EntityId voor doorklikbare vervolgactie.
PrivéthreadPrivateMessageThreadsConversatiecontainer met onderwerp, deelnemers, laatste activiteit en threadhistorie.
ThreaddeelnemerPrivateMessageThreadParticipantsParticipantgebonden zichtbaarheid, readstate en mailboxstatus.
PrivéberichtPrivateMessagesDoor gebruiker of systeem namens gebruiker geplaatst bericht binnen een privéthread.
ThreadgebeurtenisPrivateMessageThreadEventsSysteemachtige regel binnen een privéthread, zoals onderwerpwijziging of deelnemerwijziging.
Readstate / readmodelParticipantgebonden afleidingBepaalt gelezen/ongelezenstatus, tellerwaarden en mailboxweergave voor de ingelogde gebruiker.

Bijzondere regels

OnderwerpRegel
Server-side controleFrontend-zichtbaarheid van knoppen, berichten of threads is nooit voldoende autorisatie. Elke actie wordt server-side gecontroleerd op actor, deelnemerschap, relatiecontext, objecttoegang, featurestatus en mailboxstatus.
Gebruikergebonden mailboxHet berichtenoverzicht toont alleen systeemberichten en privéthreads die voor de ingelogde gebruiker zichtbaar zijn. Andere gebruikers, deelnemers of verborgen threads mogen niet uitlekken via zoeken, filters of tellers.
SysteemberichtenSysteemberichten kunnen worden gelezen en als gelezen/ongelezen gemarkeerd, maar zijn niet verwijderbaar door de gebruiker.
Privéthread verwijderenVerwijderen van een privéthread is participantgebonden. De thread verdwijnt alleen uit de mailboxweergave van de gebruiker die verwijdert; andere deelnemers behouden hun eigen zichtbaarheid.
Nieuwe privéberichtenEen nieuw privébericht mag alleen worden verzonden aan een toegestane ontvanger binnen een actuele en geldige relatiecontext. De backend controleert dit opnieuw op verzendmoment.
BeantwoordenBeantwoorden is alleen beschikbaar voor privéberichtthreads. Systeemberichten kennen geen reguliere antwoordactie.
Relatie vervallenWanneer de relatie- of deelnemerscontext bij verzenden of beantwoorden niet meer geldig is, wordt de mutatie geblokkeerd en volgt de passende popupverwijzing.
ThreadgebeurtenissenThreadgebeurtenissen tellen mee in de threadtijdlijn en kunnen bijdragen aan ongelezenstatus, maar worden niet als SystemMessages of PrivateMessages opgeslagen.
OnderwerpwijzigingEen gewijzigde onderwerpwaarde bij beantwoorden wordt vastgelegd als threadgebeurtenis en niet als los systeembericht.
Zoeken en filtersZoeken en filteren werken uitsluitend binnen de geautoriseerde mailboxdataset. Bij privéberichtthreads mag de zoekindex gebaseerd zijn op zichtbare threadinhoud, zoals afzendernaam, onderwerp, laatste preview en functioneel doorzoekbare tekstfragmenten binnen de thread.
Rich textPrivéberichten ondersteunen alleen beperkte veilige opmaak. Vrije HTML, JavaScript, scripts en actieve inhoud worden niet toegestaan en server-side gesanitized.
PopupsUsecases verwijzen alleen naar PopupKey. Titel, tekst, knoppen, inputvelden en theme staan centraal in het popup-register en popup-themes.

Popupverwijzingen binnen bericht-usecases

PopupKeyGebruik
POP-GEN-MSG-NO-RELATIONRelatie- of deelnemerscontext ontbreekt of is niet meer geldig bij het opstellen of beantwoorden van een privébericht.
POP-GEN-MSG-SEND-FAILEDHet verzenden van een privébericht of antwoord mislukt door validatie-, autorisatie- of transactionele fout.
POP-GEN-MSG-NOT-AVAILABLEEen bericht, thread of mailboxitem bestaat niet, is niet toegankelijk, verwijderd of anderszins niet meer beschikbaar.
POP-GEN-MSG-DELETE-CONFIRMBevestiging voordat een privéberichtthread uit de eigen mailboxweergave wordt verwijderd.
POP-GEN-MSG-DELETEDTerugkoppeling nadat een privéberichtthread uit de eigen mailboxweergave is verwijderd.
POP-GEN-MSG-DELETE-FAILEDHet verwijderen van een privéberichtthread mislukt door validatie-, autorisatie- of transactionele fout.

Diagramgebruik binnen bericht-usecases

De bericht-usecases gebruiken diagrammen alleen wanneer zij het proces duidelijker maken.

DiagramtypeGebruik
Sequence diagramVoor interacties tussen gebruiker, frontend, backend, database, SignalR/readstate en eventuele systeembericht- of privéberichtmutaties.
State diagramVoor leesstatus, mailboxzichtbaarheid of thread-/participantstatus wanneer een statusobject geraakt wordt.
Decision flowVoor validatievolgorde, objecttoegang, relatiecontrole, beschikbaarheidscontrole en alternatieve routes.
Data lifecycleVoor inzicht in welke records ontstaan, worden bijgewerkt of juist alleen gelezen worden bij verzenden, beantwoorden en verwijderen.