3.1 Doel
Dit hoofdstuk bevat de functionele requirementset. De requirements zijn gegroepeerd per domein en verwijzen naar de primaire FO-bronnen.
Acceptatiecriteria staan centraal in Acceptatiecriteria. De kolom Acceptatie-ID verwijst naar de bijbehorende toetsbare set.
De functionele requirements bevatten centrale eisen voor readmodels, tellers en afgeleide schermwaarden, zodat schermrequirements niet als dubbele normatieve tekst worden overgenomen. De concrete teller- en readmodeldefinities staan in het readmodel- en tellerdefinitieregister.
3.2 Rollen, context en autorisatie
| ID | Titel | Type | Prioriteit | Bron | Acceptatie-ID | Status |
|---|
| SRS-AUTH-001 | Server-side permissioncheck per route, scherm en actie | Functioneel/Security | Must | FO-02, FO-19 | AC-AUTH-001 | Vastgesteld |
| SRS-AUTH-002 | UI-zichtbaarheid is nooit autorisatiebewijs | Functioneel/Security | Must | FO-02, FO-19 | AC-AUTH-002 | Vastgesteld |
| SRS-AUTH-003 | Combinatierollen leveren samengestelde permissiongedreven UI zonder objectscope te mengen | Functioneel/Security | Must | FO-02, FO-04 | AC-AUTH-003 | Vastgesteld |
| SRS-AUTH-004 | Directe objectroutes worden buiten actuele context geweigerd | Functioneel/Security | Must | FO-02, FO-19 | AC-AUTH-004 | Vastgesteld |
| SRS-AUTH-005 | Rol- of permissionwijziging vernieuwt cache, context en navigatie | Functioneel/UX | Should | FO-02, FO-03, FO-04 | AC-AUTH-005 | Vastgesteld |
3.3 Account, profiel en voorkeuren
| ID | Titel | Type | Prioriteit | Bron | Acceptatie-ID | Status |
|---|
| SRS-ACC-001 | Eerste login provisiont een intern account | Functioneel | Must | FO-05 | AC-ACC-001 | Vastgesteld |
| SRS-ACC-002 | Account zonder actieve rol krijgt beperkte context | Functioneel | Must | FO-05, FO-04 | AC-ACC-002 | Vastgesteld |
| SRS-ACC-003 | Gebruiker kan profielgegevens wijzigen binnen toegestane velden | Functioneel | Should | FO-05 | AC-ACC-003 | Vastgesteld |
| SRS-ACC-004 | Accountverwijdering start anonimiseer- en opruimflow | Functioneel/Privacy | Must | FO-05, FO-19 | AC-ACC-004 | Vastgesteld |
| SRS-ACC-005 | Toegankelijkheidsvoorkeuren synchroniseren vóór en na login | Functioneel/Privacy | Should | FO-05 | AC-ACC-005 | Vastgesteld |
| SRS-ACC-006 | Inactief of uitgeschakeld account krijgt geen reguliere applicatietoegang | Functioneel/Security | Must | FO-05, FO-12 | AC-ACC-006 | Vastgesteld |
| SRS-ACC-007 | Uitloggen beëindigt de applicatiesessie | Functioneel/Security | Must | FO-05 | AC-ACC-007 | Vastgesteld |
| SRS-ACC-008 | Geanonimiseerde accounts zijn niet selecteerbaar voor nieuwe relaties of communicatie | Functioneel/Privacy | Must | FO-05, FO-12, FO-19 | AC-ACC-008 | Vastgesteld |
3.4 Relatiebeheer
| ID | Titel | Type | Prioriteit | Bron | Acceptatie-ID | Status |
|---|
| SRS-REL-001 | Relatie-uitnodiging vereist toegestane relatiecontext | Functioneel | Must | FO-06 | AC-REL-001 | Vastgesteld |
| SRS-REL-002 | Relatieacceptatie controleert actuele status | Functioneel | Must | FO-06 | AC-REL-002 | Vastgesteld |
| SRS-REL-003 | Ontkoppeling beëindigt toekomstige relatiecontext | Functioneel/Privacy | Must | FO-06, FO-11 | AC-REL-003 | Vastgesteld |
| SRS-REL-004 | Verlopen relatie-uitnodiging kan niet worden geaccepteerd | Functioneel | Must | FO-06 | AC-REL-004 | Vastgesteld |
| SRS-REL-005 | Dubbele actieve relatie-uitnodigingen worden voorkomen | Functioneel/Data | Should | FO-06 | AC-REL-005 | Vastgesteld |
| SRS-REL-006 | Relatiebeëindiging verwijdert historische domeinrecords niet blind | Functioneel/Privacy | Must | FO-06, FO-19 | AC-REL-006 | Vastgesteld |
| SRS-REL-007 | Relatiebeheer kent geen aparte blokkeerfunctie | Functioneel/Scope | Must | FO-06 | AC-REL-007 | Vastgesteld |
| SRS-REL-008 | Relatiebeheer kent geen functioneel hard maximum per relatietype | Functioneel/Scope | Must | FO-06 | AC-REL-008 | Vastgesteld |
| SRS-REL-009 | Beheerder kan relaties geforceerd ontkoppelen binnen beheercontext | Functioneel/Security | Must | FO-06, FO-12 | AC-REL-009 | Vastgesteld |
| SRS-REL-010 | Conflicterende relatie-uitnodigingen worden server-side voorkomen | Functioneel/Data | Must | FO-06 | AC-REL-010 | Vastgesteld |
| SRS-REL-011 | Externe relatie-uitnodiging vereist veilige mailqueue-aanvraag | Functioneel/Communicatie | Must | FO-06, FO-13 | AC-REL-011 | Vastgesteld |
| SRS-REL-012 | Relatie-uitnodiging herinneren en intrekken is status- en cooldowngebonden | Functioneel/UX | Must | FO-06, FO-13 | AC-REL-012 | Vastgesteld |
3.5 Oefencatalogus
| ID | Titel | Type | Prioriteit | Bron | Acceptatie-ID | Status |
|---|
| SRS-CAT-001 | Leerling ziet alleen toegankelijke catalogusitems | Functioneel | Must | FO-07, FO-08 | AC-CAT-001 | Vastgesteld |
| SRS-CAT-002 | Centrale categorie en niveaukoppeling blijven gescheiden | Functioneel | Must | FO-07 | AC-CAT-002 | Vastgesteld |
| SRS-CAT-003 | Concrete oefening vereist geldige moduleconfiguratie | Functioneel | Must | FO-07, FO-22 | AC-CAT-003 | Vastgesteld |
| SRS-CAT-004 | Historische runs worden niet herschreven door categorie- of modulewijziging | Functioneel/Data | Must | FO-07, FO-22, FO-19 | AC-CAT-004 | Vastgesteld |
| SRS-CAT-005 | Oefeningen in onderhoud zijn niet startbaar voor reguliere leerlingen | Functioneel | Must | FO-07, FO-08 | AC-CAT-005 | Vastgesteld |
| SRS-CAT-006 | Open en privé niveaus begrenzen leerlingtoegang volgens niveaucontext | Functioneel/Security | Must | FO-07, FO-10 | AC-CAT-006 | Vastgesteld |
| SRS-CAT-007 | Categoriemigratie werkt prospectief voor actieve configuraties | Functioneel/Data | Must | FO-07, FO-12, FO-19 | AC-CAT-007 | Vastgesteld |
3.6 Leerling oefenen
| ID | Titel | Type | Prioriteit | Bron | Acceptatie-ID | Status |
|---|
| SRS-LRN-001 | Leerling kan een toegankelijke oefening starten | Functioneel | Must | FO-08 | AC-LRN-001 | Vastgesteld |
| SRS-LRN-002 | Leerling kan hervatbare run vervolgen | Functioneel | Must | FO-08 | AC-LRN-002 | Vastgesteld |
| SRS-LRN-003 | Antwoordverwerking slaat voortgang server-side op | Functioneel | Must | FO-08 | AC-LRN-003 | Vastgesteld |
| SRS-LRN-004 | Geen idee verwerkt als ondersteunde antwoordactie | Functioneel | Should | FO-08 | AC-LRN-004 | Vastgesteld |
| SRS-LRN-005 | Actieve oefening onderdrukt afleidende signalen | Functioneel/UX | Must | FO-08, FO-13 | AC-LRN-005 | Vastgesteld |
| SRS-LRN-006 | Afronden maakt resultaat beschikbaar | Functioneel | Must | FO-08, FO-18 | AC-LRN-006 | Vastgesteld |
| SRS-LRN-007 | Onderbroken run blijft hervatbaar zolang de context geldig is | Functioneel | Must | FO-08 | AC-LRN-007 | Vastgesteld |
| SRS-LRN-008 | Afgeronde run wordt niet opnieuw gewijzigd door antwoordacties | Functioneel/Data | Must | FO-08, FO-19 | AC-LRN-008 | Vastgesteld |
| SRS-LRN-009 | Toegang wordt opnieuw gecontroleerd bij starten, hervatten en beantwoorden | Functioneel/Security | Must | FO-08, FO-19 | AC-LRN-009 | Vastgesteld |
| SRS-LRN-010 | Geschiedenis toont alleen geautoriseerde historische runs | Functioneel/Privacy | Must | FO-08, FO-18 | AC-LRN-010 | Vastgesteld |
3.7 Gedeelde oefeningen
| ID | Titel | Type | Prioriteit | Bron | Acceptatie-ID | Status |
|---|
| SRS-SHR-001 | Leerling kan afgeronde eigen run delen met toegestane vriend | Functioneel | Should | FO-09 | AC-SHR-001 | Vastgesteld |
| SRS-SHR-002 | Gedeelde oefening start niet door alleen systeembericht te openen | Functioneel/Security | Must | FO-09, FO-13 | AC-SHR-002 | Vastgesteld |
| SRS-SHR-003 | Eerste start gebruikt bronrun-vraaginhoud | Functioneel | Must | FO-09 | AC-SHR-003 | Vastgesteld |
| SRS-SHR-004 | Ontvanger kan gedeelde oefening uit eigen overzicht verwijderen | Functioneel/Privacy | Should | FO-09 | AC-SHR-004 | Vastgesteld |
| SRS-SHR-005 | Systeembericht voor gedeelde oefening gebruikt SharedExercise-verwijzing | Functioneel/Data | Must | FO-09, FO-13 | AC-SHR-005 | Vastgesteld |
| SRS-SHR-006 | Opnieuw maken van gedeelde oefening creëert zelfstandige ontvangerrun | Functioneel/Data | Must | FO-09, FO-08 | AC-SHR-006 | Vastgesteld |
| SRS-SHR-007 | Verwijderen uit gedeeld overzicht is ontvangergebonden | Functioneel/Privacy | Should | FO-09 | AC-SHR-007 | Vastgesteld |
| SRS-SHR-008 | Snapshot van gedeelde oefening wordt niet achteraf herschreven | Functioneel/Data | Must | FO-09, FO-19 | AC-SHR-008 | Vastgesteld |
3.8 Docentfunctionaliteit
| ID | Titel | Type | Prioriteit | Bron | Acceptatie-ID | Status |
|---|
| SRS-TCH-001 | Docent werkt vanuit eigen docentcontext | Functioneel/Security | Must | FO-10 | AC-TCH-001 | Vastgesteld |
| SRS-TCH-002 | Docent kan niveau en categorieën beheren binnen rechten | Functioneel | Must | FO-10, FO-07 | AC-TCH-002 | Vastgesteld |
| SRS-TCH-003 | Docent kan leerlingen aan niveau autoriseren | Functioneel | Must | FO-10 | AC-TCH-003 | Vastgesteld |
| SRS-TCH-004 | Docentresultaatinzage is contextgebonden | Functioneel/Security | Must | FO-10, FO-18 | AC-TCH-004 | Vastgesteld |
| SRS-TCH-005 | Docenttestruns tellen niet mee als leerlingresultaten | Functioneel/Data | Must | FO-10, FO-22 | AC-TCH-005 | Vastgesteld |
| SRS-TCH-006 | Collaboratorrechten worden binnen niveaucontext afgedwongen | Functioneel/Security | Must | FO-10 | AC-TCH-006 | Vastgesteld |
| SRS-TCH-007 | Eigenaarschapsoverdracht vereist geldige kandidaat | Functioneel/Security | Must | FO-10, FO-12 | AC-TCH-007 | Vastgesteld |
| SRS-TCH-008 | Bulkautorisatie valideert alle geselecteerde leerlingen en niveaus | Functioneel/Security | Should | FO-10 | AC-TCH-008 | Vastgesteld |
3.9 Ouder-/voogdfunctionaliteit
| ID | Titel | Type | Prioriteit | Bron | Acceptatie-ID | Status |
|---|
| SRS-GUA-001 | Ouder/voogd ziet alleen actief gekoppelde kinderen | Functioneel/Security | Must | FO-11 | AC-GUA-001 | Vastgesteld |
| SRS-GUA-002 | Ouder/voogd heeft read-only resultaatinzage | Functioneel/Security | Must | FO-11, FO-18 | AC-GUA-002 | Vastgesteld |
| SRS-GUA-003 | Ouder/voogd kan kindrelatie ontkoppelen waar toegestaan | Functioneel/Privacy | Should | FO-11 | AC-GUA-003 | Vastgesteld |
| SRS-GUA-004 | Ontkoppelen beëindigt toekomstige ouder-/voogdinzage | Functioneel/Privacy | Must | FO-11, FO-06 | AC-GUA-004 | Vastgesteld |
| SRS-GUA-005 | Ouder/voogd kan geen oefening namens kind starten of wijzigen | Functioneel/Security | Must | FO-11, FO-08 | AC-GUA-005 | Vastgesteld |
| SRS-GUA-006 | Ouder-/voogd live meekijken vereist actieve kindrelatie | Functioneel/Security | Must | FO-11, FO-15 | AC-GUA-006 | Vastgesteld |
3.10 Beheerderfunctionaliteit
| ID | Titel | Type | Prioriteit | Bron | Acceptatie-ID | Status |
|---|
| SRS-ADM-001 | Beheerdertoegang is geen vrije bypass | Functioneel/Security | Must | FO-12, FO-19 | AC-ADM-001 | Vastgesteld |
| SRS-ADM-002 | Beheerder kan accountrollen beheren binnen toegestane rollen | Functioneel/Security | Must | FO-12 | AC-ADM-002 | Vastgesteld |
| SRS-ADM-003 | Beheerder kan accounts anonimiseren volgens functionele flow | Functioneel/Privacy | Must | FO-12, FO-05 | AC-ADM-003 | Vastgesteld |
| SRS-ADM-004 | Modulebeheer wijzigt geen historische runs | Functioneel/Data | Must | FO-12, FO-22 | AC-ADM-004 | Vastgesteld |
| SRS-ADM-005 | Beheerder kan account tijdelijk uitschakelen en heractiveren | Functioneel/Security | Must | FO-12 | AC-ADM-005 | Vastgesteld |
| SRS-ADM-006 | Categoriebeheer migreert niet zonder expliciete beheeractie | Functioneel/Data | Must | FO-12, FO-07 | AC-ADM-006 | Vastgesteld |
| SRS-ADM-007 | Systeeminstellingen valideren datatype en invoervorm | Functioneel/Security | Must | FO-12, FO-17 | AC-ADM-007 | Vastgesteld |
| SRS-ADM-008 | Docentondersteuning is auditbaar binnen docentcontext | Functioneel/Audit | Must | FO-12, FO-10 | AC-ADM-008 | Vastgesteld |
3.11 Berichten, communicatie en notificaties
| ID | Titel | Type | Prioriteit | Bron | Acceptatie-ID | Status |
|---|
| SRS-MSG-001 | Mailbox toont alleen eigen geautoriseerde items | Functioneel/Security | Must | FO-13 | AC-MSG-001 | Vastgesteld |
| SRS-MSG-002 | Privébericht verzenden vereist actuele relatiecontext en geldige berichtgrenzen | Functioneel/Security | Must | FO-13, FO-06 | AC-MSG-002 | Vastgesteld |
| SRS-MSG-003 | Privéthread verwijderen is participantgebonden | Functioneel/Privacy | Should | FO-13 | AC-MSG-003 | Vastgesteld |
| SRS-MSG-004 | Privéberichten volgen functionele bewaartermijn | Functioneel/Privacy | Must | FO-13, FO-19 | AC-MSG-004 | Vastgesteld |
| SRS-MSG-005 | SharedExercise systeemberichten routeren naar gedeelde-oefeningcontext | Functioneel/Data | Must | FO-13, FO-09 | AC-MSG-005 | Vastgesteld |
| SRS-MSG-006 | Ongelezenbadges zijn afgeleid en geen autorisatiebewijs | Functioneel/Security | Must | FO-13, FO-19 | AC-MSG-006 | Vastgesteld |
| SRS-MSG-007 | Openen van systeembericht verwerkt geen domeinactie automatisch | Functioneel/Security | Must | FO-13 | AC-MSG-007 | Vastgesteld |
| SRS-MSG-008 | Uitgeschakelde privéberichten blokkeren nieuwe berichten maar behouden historie | Functioneel/Data | Should | FO-13, FO-17 | AC-MSG-008 | Vastgesteld |
| SRS-MSG-009 | Privéthreads tonen één geautoriseerde gesprekstimeline | Functioneel/UX/Security | Must | FO-13 | AC-MSG-009 | Vastgesteld |
| SRS-MSG-010 | Threadpresentatie en participantaccenten zijn stabiel en server-side begrensd | Functioneel/Data/UX | Should | FO-13 | AC-MSG-010 | Vastgesteld |
| SRS-MAIL-001 | Externe applicatiemail is template-, consent-, bronstatus- en SMTP-securityconfiguratiegedreven | Functioneel/Privacy | Must | FO-13, FO-06 | AC-MAIL-001 | Vastgesteld |
Nadere invulling SRS-MSG-009 en SRS-MSG-010
Voor privéthreads gelden de volgende normatieve uitwerkingen bij SRS-MSG-009 en SRS-MSG-010:
- De privéthreaddetailweergave is één geautoriseerde timeline van oud naar nieuw. Er is geen apart concept laatst ontvangen bericht voor privéthreads.
#new en #latest zijn toegestane hash-ankers omdat zij naar echte posities in de pagina verwijzen. Technische querystrings voor mutatiefeedback of cursorpaginering zijn niet toegestaan.
- Het eerste zichtbare startpunt wordt bepaald vóór het markeren als gelezen. Daarna mag de thread als gelezen worden gemarkeerd voor de ingelogde participant. Eigen berichten en eigen thread-events tellen voor de actor niet als nieuwe activiteit.
- Oudere timeline-items worden via een beveiligde POST met opaque cursor geladen. De cursor is Data Protection-protected of gelijkwaardig beschermd en bevat intern thread-, user- en oldest-itemcontext. Een cursor mag nooit als autorisatiebewijs dienen.
- Bij elke cursoractie controleert de server current user, route-thread, cursorcontext, participantstatus, visibility/deleted-state en batchlimieten opnieuw.
- Threadkleur en icon key zijn server-side beheerde threadwaarden. Participantaccentkleur is een threadspecifieke participantwaarde. Vrije HTML, vrije CSS en clientinput zijn hiervoor niet toegestaan.
- Thread-events zoals
SubjectChanged en ParticipantLeft tonen wie de actie uitvoerde, voor zover dat binnen de threadcontext zichtbaar is.
- Als een participant alleen overblijft, zijn beantwoorden en onderwerp wijzigen niet meer toegestaan en moet de UI dit vóór submit duidelijk maken; de server blijft dit ook afdwingen.
3.12 Meldingen en ticketafhandeling
| ID | Titel | Type | Prioriteit | Bron | Acceptatie-ID | Status |
|---|
| SRS-TIC-001 | Gebruiker kan eigen melding indienen | Functioneel | Must | FO-14 | AC-TIC-001 | Vastgesteld |
| SRS-TIC-002 | Gebruiker ziet uitsluitend eigen meldingen | Functioneel/Security | Must | FO-14 | AC-TIC-002 | Vastgesteld |
| SRS-TIC-003 | Beheerder behandelt meldingen via actieve behandelcontext | Functioneel | Must | FO-14, FO-12 | AC-TIC-003 | Vastgesteld |
| SRS-TIC-004 | Heropenen behoudt eerdere sluitregistraties | Functioneel/Data | Must | FO-14 | AC-TIC-004 | Vastgesteld |
| SRS-TIC-005 | Gebruikersreactie is alleen mogelijk in toegestane ticketstatus | Functioneel/Security | Must | FO-14 | AC-TIC-005 | Vastgesteld |
| SRS-TIC-006 | Interne ticketdiscussie is nooit zichtbaar voor melder | Functioneel/Privacy | Must | FO-14 | AC-TIC-006 | Vastgesteld |
| SRS-TIC-007 | Oplossing accepteren sluit de actuele heropenmogelijkheid | Functioneel | Must | FO-14 | AC-TIC-007 | Vastgesteld |
| SRS-TIC-008 | Periodieke verwerking van verlopen heropentermijnen is idempotent | Functioneel/Data | Should | FO-14, FO-23 | AC-TIC-008 | Vastgesteld |
3.13 Live meekijken
| ID | Titel | Type | Prioriteit | Bron | Acceptatie-ID | Status |
|---|
| SRS-LIVE-001 | Live meekijken is read-only | Functioneel/Security | Must | FO-15 | AC-LIVE-001 | Vastgesteld |
| SRS-LIVE-002 | Live meekijken vereist rol-specifieke autorisatie | Functioneel/Security | Must | FO-15 | AC-LIVE-002 | Vastgesteld |
| SRS-LIVE-003 | LiveViewAudit ontstaat bij daadwerkelijke start | Functioneel/Audit | Must | FO-15 | AC-LIVE-003 | Vastgesteld |
| SRS-LIVE-004 | Browsemodus overschrijft actuele livepositie niet onverwacht | Functioneel/UX | Should | FO-15 | AC-LIVE-004 | Vastgesteld |
| SRS-LIVE-005 | Reconnect beëindigt liveweergave veilig bij blijvend verbindingsverlies | Functioneel/Betrouwbaarheid | Should | FO-15 | AC-LIVE-005 | Vastgesteld |
| SRS-LIVE-006 | Beheerder heeft geen generieke live-meekijkbypass | Functioneel/Security | Must | FO-15, FO-12 | AC-LIVE-006 | Vastgesteld |
3.14 Contentbeheer
| ID | Titel | Type | Prioriteit | Bron | Acceptatie-ID | Status |
|---|
| SRS-CNT-001 | Contentbeheer wijzigt tekst, niet structuur | Functioneel | Must | FO-16 | AC-CNT-001 | Vastgesteld |
| SRS-CNT-002 | Footerlinks gebruiken bestaande URL-records | Functioneel | Should | FO-16 | AC-CNT-002 | Vastgesteld |
| SRS-CNT-003 | Vaste publieke pagina’s blijven codegedreven qua route en formulierlogica | Functioneel | Must | FO-16 | AC-CNT-003 | Vastgesteld |
| SRS-CNT-004 | URL-records worden gevalideerd vóór opslag | Functioneel/Security | Must | FO-16 | AC-CNT-004 | Vastgesteld |
| ID | Titel | Type | Prioriteit | Bron | Acceptatie-ID | Status |
|---|
| SRS-POP-001 | Popupbeheer wijzigt geen codegedreven acties | Functioneel/Security | Must | FO-17 | AC-POP-001 | Vastgesteld |
| SRS-POP-002 | Systeemnotificaties tonen na frontpageload | Functioneel/UX | Should | FO-17, FO-04 | AC-POP-002 | Vastgesteld |
| SRS-POP-003 | Featuretoggle verwijdert geen domeindata | Functioneel/Data | Must | FO-17, FO-19 | AC-POP-003 | Vastgesteld |
| SRS-POP-004 | Templateplaceholdervalidatie blokkeert onbekende placeholders | Functioneel/Security | Must | FO-17, FO-13 | AC-POP-004 | Vastgesteld |
| SRS-POP-005 | OncePerBrowser-notificaties gebruiken alleen clientside marker | Functioneel/Privacy | Should | FO-17, FO-13 | AC-POP-005 | Vastgesteld |
3.16 PDF-export en resultaatpresentatie
| ID | Titel | Type | Prioriteit | Bron | Acceptatie-ID | Status |
|---|
| SRS-PDF-001 | PDF-export gebruikt historische resultaatbron | Functioneel/Data | Must | FO-18 | AC-PDF-001 | Vastgesteld |
| SRS-PDF-002 | PDF-export maakt geen persistent PDF-domeinrecord | Functioneel/Data | Must | FO-18 | AC-PDF-002 | Vastgesteld |
| SRS-PDF-003 | PDF-export respecteert rol-specifieke resultaattoegang | Functioneel/Security | Must | FO-18, FO-08, FO-10, FO-11 | AC-PDF-003 | Vastgesteld |
| SRS-PDF-004 | PDF-export gebruikt veilige fallback bij ontbrekende module-rendering | Functioneel/Data | Should | FO-18, FO-22 | AC-PDF-004 | Vastgesteld |
3.17 Oefenmodules en modulepayloads
| ID | Titel | Type | Prioriteit | Bron | Acceptatie-ID | Status |
|---|
| SRS-MOD-001 | Modulepayload bevat moduleKey en schemaVersion | Functioneel/Data | Must | FO-22 | AC-MOD-001 | Vastgesteld |
| SRS-MOD-002 | Geen extra generieke schema-kolom voor modulepayload | Functioneel/Data | Must | FO-22 | AC-MOD-002 | Vastgesteld |
| SRS-MOD-003 | Modulebeschikbaarheid en testzichtbaarheid bepalen selecteerbaarheid | Functioneel | Must | FO-22, FO-12 | AC-MOD-003 | Vastgesteld |
| SRS-MOD-004 | Modulemigratie raakt alleen expliciet gekozen toekomstscope | Functioneel/Data | Must | FO-22, FO-12 | AC-MOD-004 | Vastgesteld |
| SRS-MOD-005 | Oude modulepayloads blijven interpreteerbaar via schemaVersion | Functioneel/Data | Must | FO-22, FO-19 | AC-MOD-005 | Vastgesteld |
3.18 Readmodels, tellers en afgeleide schermwaarden
| ID | Titel | Type | Prioriteit | Bron | Acceptatie-ID | Status |
|---|
| SRS-RDM-001 | Afgeleide schermwaarden gebruiken actuele brondata | Functioneel/Data | Must | FO-04, FO-21, FO-19 | AC-RDM-001 | Vastgesteld |
| SRS-RDM-002 | Tellerdefinities zijn expliciet en contextbegrensd | Functioneel/Data | Must | FO-04, FO-21 | AC-RDM-002 | Vastgesteld |
| SRS-RDM-003 | Frontpage-samenvattingen blijven runtime-afgeleid en read-only | Functioneel/Data | Must | FO-04, FO-16, FO-21 | AC-RDM-003 | Vastgesteld |
| SRS-RDM-004 | Beheer- en supportreadmodels tellen alleen actuele beheerbare objecten | Functioneel/Data | Must | FO-12, FO-17, FO-22 | AC-RDM-004 | Vastgesteld |
| SRS-RDM-005 | Onderwijsstructuurreadmodels volgen docent-, niveau- en autorisatiecontext | Functioneel/Data | Must | FO-10, FO-07, FO-02 | AC-RDM-005 | Vastgesteld |
| SRS-RDM-006 | Run-, geschiedenis-, resultaat- en live-readmodels gebruiken opgeslagen runcontext | Functioneel/Data | Must | FO-08, FO-09, FO-11, FO-15, FO-18 | AC-RDM-006 | Vastgesteld |
| SRS-RDM-007 | Communicatie-, relatie- en ticketreadmodels gebruiken zichtbare dataset en status | Functioneel/Data | Must | FO-06, FO-13, FO-14 | AC-RDM-007 | Vastgesteld |
| SRS-RDM-008 | Presentatievoorkeuren wijzigen geen domein- of autorisatiecontext | Functioneel/UX | Should | FO-05, FO-21, FO-03 | AC-RDM-008 | Vastgesteld |
| SRS-RDM-009 | Readmodel-fouten worden veilig zichtbaar en technisch herleidbaar | Functioneel/Betrouwbaarheid | Should | FO-21, FO-23, FO-19 | AC-RDM-009 | Vastgesteld |
Concrete functionele definities voor tellers, badges, samenvattingswaarden en readmodels staan in het readmodel- en tellerdefinitieregister. Deze definities voegen geen nieuwe requirementlaag toe, maar concretiseren SRS-RDM-* voor implementatie- en testvoorbereiding.
3.19 Functionele architectuurcontext
| ID | Titel | Type | Prioriteit | Bron | Acceptatie-ID | Status |
|---|
| SRS-ARCH-001 | Webapp blijft functionele bron voor businesslogica | Functioneel/Architectuur | Must | FO-23 | AC-ARCH-001 | Vastgesteld |
| SRS-ARCH-002 | Identity provider blijft externe authenticatiebron | Functioneel/Architectuur | Must | FO-23, FO-05 | AC-ARCH-002 | Vastgesteld |
| SRS-ARCH-003 | Realtime transport blijft transportlaag en geen domeinbron | Functioneel/Architectuur | Must | FO-23, FO-13, FO-15 | AC-ARCH-003 | Vastgesteld |
| SRS-ARCH-004 | Background jobs zijn idempotent waar domeinstatus kan wijzigen | Functioneel/Architectuur | Should | FO-23, FO-14, FO-19 | AC-ARCH-004 | Vastgesteld |
| SRS-REL-013 | Externe relatie-uitnodigingen worden na registratie geclaimd maar niet automatisch geaccepteerd | Functioneel/Privacy | Must | FO-06, FO-05 | AC-REL-013 | Vastgesteld |
| SRS-REL-014 | Eerste onboarding dwingt beoordeling van geclaimde relatie-uitnodigingen af | Functioneel/UX | Must | FO-06, FO-05 | AC-REL-014 | Vastgesteld |
| SRS-ACC-009 | Accountonboarding wordt centraal afgerond op accountniveau | Functioneel/Security | Must | FO-05, FO-03 | AC-ACC-009 | Vastgesteld |
| SRS-AUTH-006 | OIDC remote failures worden veilig afgehandeld | Security/UX | Must | FO-05 | AC-AUTH-006 | Vastgesteld |
| SRS-AUTH-007 | Permissions worden per gebruiker gecachet en expliciet geïnvalideerd | Functioneel/Performance/Security | Must | FO-02, TO-05, RBAC-permissieregister | AC-AUTH-007 | Vastgesteld |