Skip to main content

UC-GEN-MSG-001 — Berichtenoverzicht bekijken

1. Kerngegevens

VeldWaarde
Usecase-IDUC-GEN-MSG-001
NaamBerichtenoverzicht bekijken
DomeinBerichten
Primaire actorIngelogde gebruiker
Secundaire actor(en)Systeem, andere deelnemers aan privéberichtthreads, broncomponenten die systeemberichten hebben aangemaakt
RolcontextIedere ingelogde rolcontext; zichtbaarheid wordt server-side beperkt tot eigen systeemberichten en eigen privéberichtthread-deelname
Betrokken schermenSCH-GEN-02 — Berichtenoverzicht, SCH-GEN-04 — Open bericht als vervolgcontext
Gerelateerde usecasesUC-GEN-MSG-002 — Nieuw privébericht opstellen en verzenden; UC-GEN-MSG-003 — Bericht openen; UC-GEN-MSG-004 — Bericht beantwoorden; UC-GEN-MSG-005 — Privéberichtthread verwijderen
Primaire entiteitenSystemMessages, PrivateMessageThreads, PrivateMessageThreadParticipants, PrivateMessages
Secundaire entiteiten / eventsPrivateMessageThreadEvents, Users, SystemSettings, SiteFeatureToggles, MessageUnreadCountChanged, SystemMessageReadStateChanged, PrivateThreadReadStateChanged, PrivateMessageThreadRemovedFromMailbox
Gerelateerde popupsPOP-GEN-MSG-DELETED
PopupregisterOntwerpbronnen — Popup-register
MoSCoWMust have

2. Omschrijving

De gebruiker opent het centrale berichtenoverzicht om eigen systeemberichten en eigen privéberichtthreads te bekijken. Het overzicht combineert beide berichtsoorten in één mailboxweergave, maar behoudt technisch en functioneel het onderscheid tussen systeemberichten en privéberichten.

De usecase beschrijft het laden van de mailbox, het toepassen van zoek- en filtercriteria, het bepalen van ongelezenstatus, het tonen van dynamische samenvattingswaarden, het direct wijzigen van leesstatus en het starten van de verwijderflow voor een privéberichtthread uit de eigen mailboxweergave. De usecase beschrijft niet de inhoudelijke detailafhandeling van een geopend bericht of het opstellen van een nieuw privébericht.

Bouwfasering: Feature 11 Batch 4 bouwt de mailboxbasis, readmodels, routes, readstate en badgebasis. De muterende privéthreadflows voor opstellen, beantwoorden en participantgebonden verwijderen blijven Batch 6, ook wanneer het overzicht de latere capability conceptueel kent.

3. Scope

Deze usecase beschrijft:

  • het openen van het berichtenoverzicht vanuit het berichtenicoon of een functioneel gelijkwaardige berichtenroute;
  • het samenstellen van één gecombineerd overzicht met systeemberichten en privéberichtthreads;
  • het tonen van één overzichtregel per zichtbare private thread, niet per individueel privébericht;
  • het group-ready samenvatten van private threads met 2+ deelnemers;
  • de server-side zichtbaarheid van eigen berichten en eigen threaddeelname;
  • sortering op meest recente bericht- of threadactiviteit;
  • typefilter, statusfilter, zoekterm en paginering;
  • dynamische aantallen voor ongelezen items, systeemberichten, privéberichtthreads en bewaartermijn;
  • het direct markeren als gelezen of ongelezen vanuit de lijst;
  • het tonen van toegestane acties op basis van het actuele capabilitycontract;
  • het niet-actief tonen of verbergen van muterende privéthreadacties zolang UC-GEN-MSG-005 nog niet is gebouwd;
  • de disabled of afwezige verwijderactie voor systeemberichten;
  • lege staten, foutstaten en timing rond ongelezenindicatoren.

Deze usecase beschrijft niet:

  • het opstellen, verzenden of beantwoorden van privéberichten;
  • het participantgebonden verwijderen van privéthreads wanneer Batch 4 wordt gebouwd; dit hoort bij UC-GEN-MSG-005;
  • de volledige detailweergave van een geopend bericht of thread;
  • het accepteren of afwijzen van relatie-uitnodigingen vanuit een systeembericht;
  • het behandelen van meldingen of tickets waarnaar een systeembericht kan verwijzen;
  • het beheren van systeemberichtsjablonen of systeeminstellingen;
  • het uitvoeren van geplande retentie-cleanup van privéberichten.

4. Pre-condities

IDVoorwaarde
PRE-001De gebruiker is ingelogd.
PRE-002Het systeem kan de actuele gebruiker en actieve frontendcontext bepalen.
PRE-003Het centrale berichtendomein is beschikbaar.
PRE-004Het systeem kan systeemberichten, privéberichtthreads, deelnemersregels, laatste berichtactiviteit en gebruikersgebonden leesstatus ophalen.
PRE-005De systeeminstelling voor de bewaartermijn van privéberichten is uitleesbaar of er is een geldige fallback volgens systeeminstellingenbeleid.

5. Post-condities

IDResultaat
POST-001De gebruiker ziet uitsluitend systeemberichten waarvan de gebruiker ontvanger is.
POST-002De gebruiker ziet uitsluitend privéberichtthreads waarin de gebruiker deelnemer is en die niet voor deze gebruiker uit de mailbox zijn verwijderd.
POST-003De lijst is samengesteld op basis van actuele zoek-, filter- en pagineringscriteria.
POST-004Ongelezenstatus en samenvattingsaantallen zijn gebruikergebonden berekend.
POST-005Bij alleen laden, zoeken, filteren of pagineren worden geen berichten, threads, thread-events of systeemberichten aangemaakt.
POST-006Wanneer de gebruiker een item als gelezen of ongelezen markeert, is alleen de eigen leesstatus gewijzigd.
POST-007Wanneer de gebruiker een privéberichtthread verwijdert, is alleen de eigen participant-/mailboxzichtbaarheid gewijzigd; andere deelnemers behouden hun eigen threadzichtbaarheid.
POST-008Systeemberichten blijven niet-verwijderbaar.

6. Trigger

De gebruiker klikt op het berichtenicoon in de header, kiest een berichtenroute of wordt vanuit een andere functionele context naar het centrale berichtenoverzicht genavigeerd.

7. Normale processtroom

StapActorScherm / componentActieSysteemresponsData / regel
1GebruikerHeader of navigatieOpent Berichten.Het systeem opent SCH-GEN-02 — Berichtenoverzicht.Alleen ingelogde gebruikers mogen het overzicht openen.
2SysteemBackendBepaalt actuele gebruiker en context.Het systeem bereidt de mailboxquery voor.Frontendnavigatie is geen autorisatie.
3SysteemBackendLaadt eigen systeemberichten.Alleen SystemMessages met RecipientUserId van de gebruiker worden opgenomen.Systeemberichten van andere gebruikers zijn uitgesloten.
4SysteemBackendLaadt eigen privéberichtthread-mailboxitems.Alleen threads met een participantregel voor de gebruiker en zonder DeletedAtUtc worden opgenomen.Zichtbaarheid van privéthreads is per deelnemer.
5SysteemBackend / readmodelBepaalt per item type, afzenderweergave, onderwerp, preview, datum/tijd, leesstatus en laatste relevante activiteit.Het systeem bouwt een gecombineerd mailbox-readmodel.Thread-events kunnen bijdragen aan ongelezenstatus.
6SysteemBackend / readmodelPast standaardfilters toe.Bij openen staan typefilter Alles en statusfilter Alle statussen actief.Sortering is aflopend op meest recente bericht- of threadactiviteit.
7SysteemBackend / readmodelBerekent samenvattingswaarden.Ongelezen, systeemberichten, privéberichten en bewaartermijn worden getoond.Waarden zijn dynamisch; mockupwaarden zijn voorbeelddata.
8SysteemBerichtenoverzichtToont berichtenlijst, filters, zoekveld, paginering en samenvattingen.De gebruiker ziet alleen toegestane mailboxitems.Technische identifiers worden niet getoond. Paginagroottes komen uit OefenHub:Messages:PageSizes, standaard 5, 10 en 15.
9GebruikerZoek- en filterbalkPast typefilter, statusfilter of zoekterm aan.Het systeem ververst de lijst binnen de eigen mailboxcontext.Zoeken werkt binnen actieve filters en binnen de geautoriseerde mailboxdataset; bij privéberichtthreads mag de zoekindex zichtbare threadinhoud omvatten, waaronder afzendernaam, onderwerp, laatste preview en functioneel doorzoekbare tekstfragmenten binnen de thread.
10GebruikerPagineringWijzigt pagina of aantal zichtbare berichten.Het systeem toont de bijbehorende subset.Toegestane page sizes zijn 5, 10 en 15.
11GebruikerBerichtregelKiest Markeer als gelezen.Het systeem wijzigt de eigen leesstatus naar gelezen en actualiseert tellerwaarden.Mutatie op SystemMessages.ReadAtUtc of participant-readstate.
12GebruikerBerichtregelKiest Markeer als ongelezen.Het systeem wijzigt de eigen leesstatus naar ongelezen en actualiseert tellerwaarden.Mutatie is gebruikergebonden.
13GebruikerBerichtregelKlikt op een berichtregel.Het systeem opent de detailweergave of threadcontext en markeert het item functioneel als gelezen.Verdere detailafhandeling valt onder de bericht-openenusecase.
14GebruikerPrivéberichtregelKiest Gesprek verlaten.Het systeem start de aparte verwijderflow voor privéberichtthreads. Na bevestiging en succesvolle verwerking verdwijnt de thread uit de eigen mailboxweergave en kan POP-GEN-MSG-DELETED worden getoond.De feitelijke mutatie valt onder UC-GEN-MSG-005.
15GebruikerIntroblokKiest Nieuw privébericht.Het systeem start de vervolgflow voor een nieuw privébericht wanneer de feature en ontvangercontext dit toestaan.Uitvoering valt onder UC-GEN-MSG-002.

8. Alternatieve en exceptionele processtromen

IDVanaf stapSituatieSysteemgedragPopup / meldingDatamutatie
ALT-0011De gebruiker is niet ingelogd.Het systeem weigert toegang en leidt de gebruiker naar de login- of toegangsflow.Generieke autorisatiemelding buiten deze usecase.Geen.
ALT-0023-4De gebruiker heeft geen zichtbare berichten.Het systeem toont een lege mailboxstaat.Inline lege staat.Geen.
ALT-0039De actieve zoek- en filterselectie levert geen resultaat op.Het systeem toont een lege filter-/zoekstaat en behoudt de actieve filterkeuze.Inline lege staat.Geen.
ALT-0043-4Een deel van de mailboxdata kan niet worden geladen.Het systeem toont een foutstaat voor het betrokken deel of blokkeert de lijstweergave wanneer de gegevens niet betrouwbaar kunnen worden samengesteld.Inline foutstaat.Geen gedeeltelijke statusmutatie.
ALT-00511Het item is al gelezen.Het systeem laat de actie niet zien of verwerkt de actie idempotent zonder extra functionele wijziging.Geen popup.Geen of dezelfde gelezenstatus blijft behouden.
ALT-00612Het item is al ongelezen.Het systeem laat de actie niet zien of verwerkt de actie idempotent zonder extra functionele wijziging.Geen popup.Geen of dezelfde ongelezenstatus blijft behouden.
ALT-00711-13Het item hoort niet bij de ingelogde gebruiker.Het systeem weigert de actie server-side.Autorisatiefout of inline melding.Geen.
ALT-00814De gebruiker probeert een systeembericht te verwijderen.De verwijderactie is disabled; wanneer toch een request wordt gedaan weigert de backend de actie.Tooltip of autorisatiefout.Geen.
ALT-00914De privéthread is al uit de eigen mailbox verwijderd.Het systeem toont het item niet meer of verwerkt de actie idempotent.Geen popup of actuele staat.DeletedAtUtc blijft gevuld.
ALT-01014De thread bestaat, maar de gebruiker is geen deelnemer.Het systeem weigert de verwijderactie server-side.Autorisatiefout of inline melding.Geen.
ALT-01111-14De mutatie mislukt technisch.Het systeem houdt de vorige status zichtbaar of herlaadt de actuele serverstatus.Inline foutmelding.Geen succesvolle mutatie registreren.
ALT-0127De bewaartermijninstelling kan niet worden geladen.Het systeem toont geen hardcoded waarde als waarheid en gebruikt alleen een toegestane fallback of foutstaat.Inline foutstaat of fallbacklabel.Geen.
ALT-01315Privéberichten zijn sitebreed uitgeschakeld of er is geen toegestane ontvanger.Het systeem verbergt of disablet Nieuw privébericht en voorkomt de vervolgflow server-side.Inline uitleg of disabled state.Geen.
ALT-0147De actor is een leerling met een actieve oefenrun.Headerbadge, tellerupdates en andere afleidende berichtindicaties blijven tijdelijk verborgen of uitgesteld; de mailboxdata en ongelezenstatus blijven server-side normaal bestaan.Geen popup.Geen extra datamutatie door de zichtbaarheid van de badge.

8.1 Privéthreadregels in het overzicht

Voor privéthreads toont het overzicht één regel per thread, niet één regel per individueel bericht. Het type-label is dynamisch:

  • Privégesprek wanneer de zichtbare actieve threadcontext uit twee deelnemers bestaat;
  • Groepsgesprek wanneer de zichtbare actieve threadcontext uit meer dan twee deelnemers bestaat.

De previewtekst wordt per ingelogde gebruiker bepaald:

  • als er nieuwe activiteit is sinds de eigen participant-readstate, toont de preview het eerste nieuwe bericht of de eerste nieuwe threadgebeurtenis;
  • als er geen nieuwe activiteit is, toont de preview de laatste zichtbare activiteit in de thread.

De threadregel toont het stabiele threadicoon en de threadkleur die bij het aanmaken van de thread zijn gekozen. Deze presentatie is voor alle deelnemers gelijk. De preview, ongelezenstatus en acties blijven user-scoped.

9. Business rules

IDRegel
BR-UC-GEN-MSG-001-001Het berichtenoverzicht toont uitsluitend mailboxitems die bij de ingelogde gebruiker horen.
BR-UC-GEN-MSG-001-002Systeemberichten worden technisch apart opgeslagen van privéberichtthreads, maar worden in dezelfde mailboxweergave getoond.
BR-UC-GEN-MSG-001-003Systeemberichten zijn niet verwijderbaar door de gebruiker.
BR-UC-GEN-MSG-001-004Privéberichtthreads kunnen alleen uit de eigen mailboxweergave worden verwijderd; de thread en berichten blijven voor andere deelnemers bestaan.
BR-UC-GEN-MSG-001-005Gelezen- en ongelezenstatus is gebruikergebonden.
BR-UC-GEN-MSG-001-006Het openen van een bericht of thread geldt als leesactie voor de ingelogde gebruiker.
BR-UC-GEN-MSG-001-007Eén privéthreadregel kan meerdere ongelezen berichten of thread-events vertegenwoordigen.
BR-UC-GEN-MSG-001-008Thread-events zijn geen systeemberichten en geen gewone privéberichten, maar kunnen wel meetellen voor de ongelezenstatus van de thread.
BR-UC-GEN-MSG-001-009De ongelezenbadge en de samenvatting Ongelezen gebruiken dezelfde server-side ongelezenlogica.
BR-UC-GEN-MSG-001-010Tijdens een actieve leerling-oefenrun kan de headerbadge visueel verborgen worden zonder de onderliggende berichtstatus te wijzigen.
BR-UC-GEN-MSG-001-011Previewteksten worden opgebouwd uit veilig gesanitized of veilig geëncodeerde inhoud en mogen geen actieve HTML of JavaScript renderen.
BR-UC-GEN-MSG-001-012De bewaartermijn voor privéberichten wordt uit systeeminstellingen afgeleid en mag niet als vaste schermwaarde worden hardcoded.
BR-UC-GEN-MSG-001-013Systeemberichten vallen niet onder de privéberichtenretentie van de initiële scope.
BR-UC-GEN-MSG-001-014Zoek-, filter- en pagineringsacties mogen de objectautorisatie nooit verruimen.
BR-UC-GEN-MSG-001-015Bij privéberichtthreads mag zoeken alleen plaatsvinden binnen voor de gebruiker zichtbare threadinhoud; niet-zichtbare, verwijderde of niet-geautoriseerde threadinhoud mag geen zoekhit opleveren.
BR-UC-GEN-MSG-001-016Technische identifiers zoals GUID’s, message-id’s, thread-id’s en entity-id’s worden niet zichtbaar in het berichtenoverzicht getoond.

Centrale business rules die hierbij horen:

BusinessRule-IDToepassing
BR-GEN-SEC-001Alle mailboxacties vereisen server-side rol-, relatie- of objectcontrole.
BR-GEN-MSG-001Het berichtenoverzicht is gebruikergebonden en toont alleen eigen mailboxitems.
BR-GEN-MSG-002Systeemberichten zijn niet verwijderbaar door gebruikers.
BR-GEN-MSG-003Verwijderen van een privéthread is participantgebonden en verwijdert de thread niet voor anderen.
BR-GEN-MSG-004Gelezen- en ongelezenstatus wordt gebruiker- of participantgebonden bepaald.
BR-GEN-MSG-005Headerbadge en samenvatting gebruiken dezelfde ongelezenlogica.
BR-GEN-MSG-006Preview- en rich-textinhoud wordt veilig verwerkt voordat deze wordt weergegeven.
BR-GEN-MSG-007De bewaartermijn van privéberichten komt uit systeeminstellingen.
BR-GEN-MSG-008Een privéthread verschijnt als één mailboxitem, ook als er meerdere berichten of replies in dezelfde thread zitten.
BR-GEN-MSG-013Private threads zijn group-ready; deelnemersweergave, readstate en acties mogen niet uitgaan van exact twee deelnemers.
BR-LLN-EXE-001Tijdens een actieve oefenrun worden afleidende tellerindicaties voor leerlingen tijdelijk verborgen.

10. Datavalidatie

Autorisatie en server-side controles

ControleRegel
Pagina openenAlleen ingelogde gebruikers mogen het berichtenoverzicht openen.
Systeemberichten ladenServer-side filter op SystemMessages.RecipientUserId = huidige gebruiker.
Privéthreads ladenServer-side filter op PrivateMessageThreadParticipants.UserId = huidige gebruiker en DeletedAtUtc is null.
Bericht openenAlleen toegestaan wanneer het systeembericht of de thread bij de gebruiker hoort.
Markeren als gelezenAlleen toegestaan voor eigen systeembericht of eigen participant-readstate.
Markeren als ongelezenAlleen toegestaan voor eigen systeembericht of eigen participant-readstate.
Privéthread verwijderenVanuit het overzicht mag alleen de verwijderflow voor de eigen participantregel bij een privéthread worden gestart; de bevestiging en mutatie vallen onder UC-GEN-MSG-005.
Systeembericht verwijderenNiet toegestaan; backend weigert ook wanneer de frontendactie gemanipuleerd wordt.
Nieuw privébericht startenAlleen routeerbaar wanneer privéberichten beschikbaar zijn en server-side minimaal één toegestane ontvanger bestaat.
Zoek/filter/pagineringMag alleen werken binnen de al geautoriseerde mailboxdataset van de gebruiker. Zoekterm, status, type, pagina en paginagrootte worden server-side genormaliseerd en begrensd.
SamenvattingsaantallenWorden berekend met dezelfde objectautorisatie als de lijst of met expliciet beschreven mailboxbrede gebruikercontext.

Veld- en objectvalidatie

Veld / objectValidatie
SystemMessages.RecipientUserIdMoet overeenkomen met de ingelogde gebruiker voor tonen, openen of leesstatusmutatie.
SystemMessages.ReadAtUtcnull betekent ongelezen; gevuld betekent gelezen. Bij markeren als gelezen wordt een actueel UTC-moment vastgelegd.
SystemMessages.EntityTypeWanneer gevuld alleen een toegestane verwijzing, zoals RelationshipInvitation, Ticket of PrivateMessageThread.
SystemMessages.EntityIdWanneer gevuld altijd in combinatie met EntityType; routing wordt in applicatielogica gevalideerd.
PrivateMessageThreadParticipants.UserIdMoet overeenkomen met de ingelogde gebruiker voor zichtbaarheid, openen, leesstatusmutatie en mailboxverwijdering.
PrivateMessageThreadParticipants.DeletedAtUtcThreads met gevulde waarde worden niet meer in de eigen mailboxlijst getoond.
PrivateMessageThreadParticipants.LastReadMessageIdWanneer gevuld moet de waarde horen bij dezelfde thread.
PrivateMessageThreadParticipants.LastReadAtUtcWordt gebruikt voor leespositie en ongelezenbepaling, inclusief thread-events.
PrivateMessages.BodyMag alleen veilig gesanitized of veilig geëncodeerd als preview worden gebruikt.
PrivateMessages.SendAsUserIdMoet de afwijkende afzenderweergave ondersteunen wanneer een bericht namens een gebruiker is verzonden.
PrivateMessageThreadEvents.EventTypeAlleen ondersteunde eventtypes tellen mee in threadweergave en ongelezenbepaling.
TypefilterAlleen toegestane waarden All, System en Private.
StatusfilterAlleen toegestane waarden All en Unread.
Page sizeAlleen toegestane waarden 5, 10 en 15.
ZoektermInvoer veilig behandelen; zoektekst nooit als HTML renderen. De zoekterm wordt uitsluitend toegepast binnen de geautoriseerde mailboxdataset en, bij privéberichtthreads, binnen zichtbaar toegestane threadinhoud.
DatumweergaveUTC-bronwaarden worden lokaal en consistent weergegeven.
BewaartermijnAfgeleid uit systeeminstelling, niet uit mockupwaarde of hardcoded tekst.

11. Datamutaties en events

StapTypeEntiteit / eventMutatie
1-10ReadSystemMessages, PrivateMessageThreads, PrivateMessageThreadParticipants, PrivateMessages, PrivateMessageThreadEvents, Users, SystemSettingsAlleen lezen en samenstellen van het mailbox-readmodel.
11DatabaseSystemMessagesBij systeembericht: ReadAtUtc wordt gevuld met actueel UTC-moment.
11DatabasePrivateMessageThreadParticipantsBij privéthread: LastReadMessageId en/of LastReadAtUtc worden bijgewerkt voor de eigen participantregel.
11EventSystemMessageReadStateChanged of PrivateThreadReadStateChangedLeesstatus is gewijzigd naar gelezen.
11EventMessageUnreadCountChangedOngelezenteller wordt opnieuw bepaald en gecommuniceerd waar van toepassing.
12DatabaseSystemMessagesBij systeembericht: ReadAtUtc wordt geleegd of functioneel teruggezet naar ongelezen.
12DatabasePrivateMessageThreadParticipantsBij privéthread: leespositie wordt zodanig aangepast dat de thread voor deze gebruiker weer ongelezen is.
12EventSystemMessageReadStateChanged of PrivateThreadReadStateChangedLeesstatus is gewijzigd naar ongelezen.
12EventMessageUnreadCountChangedOngelezenteller wordt opnieuw bepaald en gecommuniceerd waar van toepassing.
13DatabaseSystemMessages of PrivateMessageThreadParticipantsOpenen van een item kan dezelfde leesstatusmutatie uitvoeren als markeren als gelezen.
14VervolgflowUC-GEN-MSG-005Het overzicht start de aparte verwijderflow. De bevestiging, participantgebonden mutatie en telleractualisatie worden daar uitgevoerd.

12. Geen datamutaties

EntiteitReden
SystemMessages bij alleen laden, zoeken, filteren of paginerenHet overzicht samenstellen wijzigt geen systeembericht.
PrivateMessageThreadsHet bekijken of uit eigen mailbox verwijderen wijzigt de threadcontainer niet.
PrivateMessagesHet overzicht wijzigt geen berichtinhoud en verwijdert geen berichten hard.
PrivateMessageThreadEventsThread-events worden niet aangemaakt door het bekijken van het overzicht.
PrivateMessageThreadParticipants bij alleen laden, zoeken, filteren of paginerenAlleen expliciete leesstatus- of verwijderacties wijzigen de participantregel.
SystemMessages bij verwijderactieSysteemberichten blijven niet-verwijderbaar.
UsersHet overzicht wijzigt geen gebruikersprofielen of relaties.
SystemSettingsDe bewaartermijn wordt alleen gelezen.
RelationshipInvitations, Tickets, UserRelationshipsEventuele doorklikacties naar onderliggende domeinobjecten worden niet binnen deze overzichtsusecase verwerkt.

13. State diagram — mailboxitemstatus

14. Decision flow — filteren, autoriseren en tonen

15. Data lifecycle diagram — overzicht en lichte mailboxmutaties

16. Sequence diagrammen

Berichtenoverzicht laden

Leesstatus wijzigen

Verwijderflow starten vanuit overzicht

17. Popupverwijzingen

PopupKeyMomentVariantDoel
POP-GEN-MSG-DELETEDNa succesvol verwijderen van een privéberichtthread uit de eigen mailboxweergave.InfoOnlyBevestigt dat de thread voor de gebruiker uit het overzicht is verwijderd.

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

DoeldocumentAfleiding
Functioneel OntwerpBeschrijft het berichtenoverzicht als centrale mailboxflow met gecombineerde weergave van systeemberichten en privéberichtthreads, inclusief zoek/filter/paginering, ongelezenstatus, eigen mailboxverwijdering en dynamische samenvattingen.
Technisch OntwerpTechnisch Ontwerp: berichten, systeemberichten, notificaties en privéthreads en Technisch Ontwerp: readmodels, tellers, badges, caching en materialisatie beschrijven het mailbox-readmodel, server-side objectautorisatie, ongelezenlogica over SystemMessages, participant-readstate en thread-events, lichte commands voor readstate en mailboxverwijdering, realtime tellerupdates en veilige previewopbouw.
Software Requirements SpecificationDestilleert requirements over gebruikergebonden mailboxinzage, niet-verwijderbare systeemberichten, participantgebonden privéthreadverwijdering, dynamische tellerwaarden, veilige contentweergave, retentieafleiding en fout-/leegstaten.
Database-informatieDe actuele database-informatie dekt de hoofdentiteiten. De usecase introduceert geen nieuwe tabel, maar bevestigt het gebruik van SystemMessages.ReadAtUtc, PrivateMessageThreadParticipants en PrivateMessageThreadEvents als bron voor overzicht en ongelezenstatus.

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-GEN-MSG-001-001SRS-RDM-001
SRS-RDM-007
SRS-MSG-001
AC-RDM-001
AC-RDM-007
AC-MSG-001
Voor iedere ingelogde gebruiker een centraal berichtenoverzicht kunnen tonen
REQ-UC-GEN-MSG-001-002SRS-AUTH-003
SRS-MSG-001
AC-AUTH-003
AC-MSG-001
Systeemberichten en privéberichtthreads in één gecombineerde mailboxweergave kunnen tonen
REQ-UC-GEN-MSG-001-003SRS-MSG-002
SRS-SHR-002
SRS-SHR-005
AC-MSG-002
AC-SHR-002
AC-SHR-005
Alleen systeemberichten tonen waarvan de ingelogde gebruiker ontvanger is
REQ-UC-GEN-MSG-001-004SRS-MSG-003
AC-MSG-003
Alleen privéberichtthreads tonen waarin de ingelogde gebruiker deelnemer is en die niet voor die deelnemer uit de mailbox zijn verwijderd
REQ-UC-GEN-MSG-001-005SRS-RDM-001
SRS-RDM-007
SRS-MSG-001
AC-RDM-001
AC-RDM-007
AC-MSG-001
Mailboxitems standaard sorteren op meest recente bericht- of threadactiviteit
REQ-UC-GEN-MSG-001-006SRS-AUTH-001
SRS-RDM-001
SRS-RDM-007
SRS-MSG-001
AC-AUTH-001
AC-RDM-001
AC-RDM-007
AC-MSG-001
Zoeken op afzender, onderwerp, laatste preview en functioneel doorzoekbare tekstfragmenten binnen zichtbare privéthreadinhoud ondersteunen binnen de geautoriseerde mailboxdataset
REQ-UC-GEN-MSG-001-007SRS-RDM-001
SRS-RDM-007
SRS-MSG-001
AC-RDM-001
AC-RDM-007
AC-MSG-001
Typefiltering ondersteunen op alles, systeemberichten en privéberichten
REQ-UC-GEN-MSG-001-008SRS-RDM-001
SRS-MSG-006
AC-RDM-001
AC-MSG-006
Statusfiltering ondersteunen op alle statussen en ongelezen
REQ-UC-GEN-MSG-001-009SRS-RDM-001
SRS-MSG-001
AC-RDM-001
AC-MSG-001
Zoekterm, typefilter en statusfilter gecombineerd toepassen
REQ-UC-GEN-MSG-001-010SRS-RDM-001
SRS-MSG-001
SRS-NFR-PER-001
AC-RDM-001
AC-MSG-001
AC-NFR-PER-001
Paginering ondersteunen met de page sizes 5, 10 en 15
REQ-UC-GEN-MSG-001-011SRS-MSG-006
AC-MSG-006
Ongelezenstatus gebruikergebonden bepalen
REQ-UC-GEN-MSG-001-012SRS-MSG-006
AC-MSG-006
Thread-events na de laatst gelezen positie kunnen meenemen in de ongelezenstatus van een privéthread
REQ-UC-GEN-MSG-001-013SRS-MSG-007
AC-MSG-007
Het openen van een bericht of thread moet het item voor de ingelogde gebruiker als gelezen kunnen markeren
REQ-UC-GEN-MSG-001-014SRS-RDM-001
SRS-RDM-007
SRS-MSG-006
AC-RDM-001
AC-RDM-007
AC-MSG-006
De gebruiker moet een eigen ongelezen mailboxitem direct vanuit het overzicht als gelezen kunnen markeren
REQ-UC-GEN-MSG-001-015SRS-RDM-001
SRS-RDM-007
SRS-MSG-006
AC-RDM-001
AC-RDM-007
AC-MSG-006
De gebruiker moet een eigen gelezen mailboxitem direct vanuit het overzicht als ongelezen kunnen markeren
REQ-UC-GEN-MSG-001-016SRS-RDM-001
SRS-RDM-002
SRS-MSG-006
AC-RDM-001
AC-RDM-002
AC-MSG-006
Bij readstatewijzigingen de ongelezenteller opnieuw kunnen bepalen
REQ-UC-GEN-MSG-001-017SRS-MSG-003
AC-MSG-003
Systeemberichten niet-verwijderbaar maken voor gebruikers
REQ-UC-GEN-MSG-001-018SRS-AUTH-001
SRS-MSG-003
AC-AUTH-001
AC-MSG-003
De verwijderactie voor systeemberichten server-side weigeren
REQ-UC-GEN-MSG-001-019SRS-MSG-003
AC-MSG-003
De gebruiker moet een privéberichtthread uit de eigen mailboxweergave kunnen verwijderen
REQ-UC-GEN-MSG-001-020SRS-MSG-003
AC-MSG-003
Het verwijderen van een privéberichtthread uit de eigen mailbox mag de thread of berichten voor andere deelnemers niet verwijderen
REQ-UC-GEN-MSG-001-021SRS-MSG-003
AC-MSG-003
Na succesvolle eigen mailboxverwijdering POP-GEN-MSG-DELETED kunnen tonen
REQ-UC-GEN-MSG-001-022SRS-RDM-001
SRS-RDM-002
SRS-RDM-007
SRS-MSG-004
AC-RDM-001
AC-RDM-002
AC-RDM-007
AC-MSG-004
Dynamische samenvattingswaarden tonen voor ongelezen items, systeemberichten, privéberichten en bewaartermijn
REQ-UC-GEN-MSG-001-023SRS-RDM-001
SRS-RDM-007
SRS-MSG-004
AC-RDM-001
AC-RDM-007
AC-MSG-004
De bewaartermijn voor privéberichten moet uit systeeminstellingen worden afgeleid en mag niet hardcoded uit mockupwaarden komen
REQ-UC-GEN-MSG-001-024SRS-MSG-004
AC-MSG-004
Systeemberichten moeten buiten de privéberichtenretentie vallen zolang geen aparte retentie voor systeemberichten is vastgesteld
REQ-UC-GEN-MSG-001-025SRS-MSG-001
SRS-NFR-SEC-001
AC-MSG-001
AC-NFR-SEC-001
Previewteksten veilig opbouwen zonder actieve HTML of JavaScript te renderen
REQ-UC-GEN-MSG-001-026SRS-RDM-001
SRS-RDM-007
SRS-MSG-001
AC-RDM-001
AC-RDM-007
AC-MSG-001
UTC-brondatums lokaal en consistent tonen in het berichtenoverzicht
REQ-UC-GEN-MSG-001-027SRS-RDM-001
SRS-RDM-007
SRS-MSG-001
AC-RDM-001
AC-RDM-007
AC-MSG-001
Technische identifiers niet zichtbaar tonen in het berichtenoverzicht
REQ-UC-GEN-MSG-001-028SRS-RDM-001
SRS-RDM-007
SRS-MSG-001
AC-RDM-001
AC-RDM-007
AC-MSG-001
Een lege staat tonen wanneer de gebruiker geen berichten heeft of wanneer de actieve zoek-/filterselectie geen resultaten oplevert
REQ-UC-GEN-MSG-001-029SRS-MSG-001
SRS-NFR-LOG-001
AC-MSG-001
AC-NFR-LOG-001
Technische fouten bij laden of lichte mailboxmutaties tonen zonder de gebruiker ten onrechte een succesvolle verwerking te suggereren
REQ-UC-GEN-MSG-001-030SRS-RDM-001
SRS-RDM-002
SRS-RDM-005
SRS-RDM-006
SRS-MSG-006
SRS-LRN-005
AC-RDM-001
AC-RDM-002
AC-RDM-005
AC-RDM-006
AC-MSG-006
AC-LRN-005
De ongelezenbadge voor leerlingen tijdens een actieve oefenrun kunnen verbergen zonder de onderliggende ongelezenstatus te wijzigen

8.2 Openen met #new/#latest

Vanuit het overzicht navigeert een privéthreadregel via de /open-route. Die route bepaalt vóór het markeren als gelezen of de gebruiker naar de marker Nieuwe berichten of naar het laatste zichtbare timeline-item moet springen. De redirect gebruikt een hash-anker (#new of #latest). Omdat browser-/Blazor-enhanced navigation fragments kan verliezen bij redirects, moet de overzichtlink gewone browsernavigatie gebruiken wanneer dat nodig is voor betrouwbare anchor-scroll.

De previewtekst in het overzicht volgt dezelfde readstate: bij ongelezen threads wordt het eerste nieuwe bericht of eerste nieuwe thread-event getoond; bij gelezen threads de laatste zichtbare activiteit.