# NFR Design Plan — Unit 03: Availability Module Dit plan beschrijft de stappen voor het technisch ontwerpen van de non-functional requirements voor Unit 03. ## NFR Design Stappen - [x] Ontwerpen van de `AvailabilityMiddleware` en de bypass logica. - [x] Definiëren van de `PersistentAvailabilityService` implementatie. - [x] Uitwerken van het database schema voor de globale status. - [x] Ontwerpen van de `AvailabilityController` endpoints (publiek status, beheer status). - [x] Vastleggen van de integratie met de `AuditLogs` (Unit 02). ## Vragen voor NFR Design (Unit 03) ### 1. Middleware Registratie **Vraag 1.1**: Waar moet de `AvailabilityMiddleware` in de pipeline worden geplaatst? - A) **Helemaal vooraan**: Zelfs vóór de exception handler en logging (maximaal effectief, maar minder informatie bij fouten). - B) **Na de Exception Handler**: Fouten in de check worden dan netjes afgevangen door de globale handler (Aanbevolen). - C) **Na Authentication**: Dan weten we al wie de gebruiker is (nodig voor de bypass check), maar dan is de authenticatie overhead al geweest voor geblokkeerde requests. ### 2. Status Update Endpoint **Vraag 2.1**: Hoe moet het endpoint voor het wijzigen van de status beveiligd worden? - A) **Policy-based**: Gebruik de `OwnerOnly` policy (Unit 02). - B) **Internal-only**: Alleen bereikbaar vanaf de lokale host of via een intern netwerk (minder flexibel voor cloud beheer). ### 3. Fallback Gedrag (Circuit Breaker) **Vraag 3.1**: Als de database herhaaldelijk onbereikbaar is voor de status-check, hoe lang moet de fallback status (`Available`) worden aangehouden voordat we het opnieuw proberen? - A) Elke request opnieuw proberen. - B) Implementeer een eenvoudige circuit breaker (bijv. 30 seconden fallback na 3 opeenvolgende fouten). ## Volgende Stappen Na beantwoording van deze vragen worden de technische ontwerpen gegenereerd in `aidlc-docs/construction/availability-module/nfr-design/`.