Skip to main content

Technisch Ontwerp besluiten- en aandachtspuntenregister

Dit register bewaart de praktische detailregistratie van technische ontwerpbesluiten, implementatieverificaties en aandachtspunten. Hoofdstuk Open punten, ontwerpbesluiten en Technisch Ontwerp-besluitenregister bevat de samenvattende baseline-laag; dit register ondersteunt opvolging en controle.

Het register introduceert geen nieuwe functionele requirements en is geen tweede bron voor definitieve technische regels. Definitieve regels horen in het relevante inhoudelijke hoofdstuk van het Technisch Ontwerp. Wanneer een aandachtspunt functionele regels, requirements of datamodelbroninformatie raakt, wordt het geëscaleerd naar het Functioneel Ontwerp, de Software Requirements Specification of database-informatie.

Statuswaarden

StatusBetekenis
VastgelegdDe keuze is onderdeel van de V1.0-baseline van het Technisch Ontwerp.
ImplementatieverificatieDe ontwerprichting is vastgesteld, maar concrete technische configuratie of tooling moet vóór implementatie aantoonbaar worden gevalideerd.
Buiten huidige baselineHet onderwerp is bewust niet nodig voor de V1.0-baseline en vereist een nieuw ontwerpbesluit voordat het wordt toegevoegd.
VervallenHet punt is bewust niet meer van toepassing.
Escaleren naar Functioneel Ontwerp, Software Requirements Specification of database-informatieHet punt raakt functionele regels, requirements of datamodelbroninformatie en hoort niet uitsluitend in het Technisch Ontwerp te worden opgelost.

Besluiten

IDOnderwerpStatusVerwerkt inAantekening
TO-BES-001Middel-zware modulaire monolietVastgelegdHoofdstuk 01, 02, 03OefenHub wordt uitgewerkt als middel-zware modulaire monoliet: één deploybare applicatie met expliciete modulegrenzen.
TO-BES-002Eén database en één applicatieconnectionstringVastgelegdHoofdstuk 02, 07, 20De eerste technische baseline gebruikt één relationele database en één applicatieconnectionstring.
TO-BES-003Project, DbContext en schema horen bij elkaarVastgelegdHoofdstuk 02, 06, 07Eén domeinproject heeft maximaal één eigen DbContext en daarmee één primair databaseschema.
TO-BES-004Naamgeving databaseschema's, tabellen en kolommenVastgelegdHoofdstuk 02, 07Databaseschema's worden in kleine letters geschreven; tabellen en kolommen gebruiken PascalCase.
TO-BES-005Geen aparte basisprojecten voor audit, security, workflows of readmodelsVastgelegdHoofdstuk 02, 06, 19, 20Er komen in de basis geen aparte projecten OefenHub.Audit, OefenHub.Security, OefenHub.Workflows of OefenHub.ReadModels.
TO-BES-006Domeinspecifieke audit en historyVastgelegdHoofdstuk 06, 14, 19, 25Audit en history worden primair domeinspecifiek opgeslagen naast de brondata van het domein.
TO-BES-007Security verdeeld over bestaande lagenVastgelegdHoofdstuk 19, 20Security wordt volledig beschreven, maar verdeeld over Web, Infrastructure, Identity, Authorization, Scheduling en domeinmodules.
TO-BES-008Practice als module voor oefenruns en resultatenVastgelegdHoofdstuk 02, 10OefenHub.Practice is de module voor oefenruns, voortgang, resultaten, gedeelde oefeningen en PDF-brondata.
TO-BES-009Publieke modulecontracten en internal implementatiesVastgelegdHoofdstuk 03Module-implementaties zijn standaard internal; alleen publieke contracten in Contracts zijn bedoeld voor gebruik door andere modules.
TO-BES-010Web zonder domeinlogica of DbContext-toegangVastgelegdHoofdstuk 03, 24OefenHub.Web bevat UI-compositie, routing en viewmodels, maar geen domeinlogica, DbContexts of module-interne entities.
TO-BES-011Soft links en snapshots over modulegrenzenVastgelegdHoofdstuk 06, 07Cross-module verwijzingen zijn standaard soft links of soft links met snapshot; harde foreign keys over modulegrenzen zijn uitzondering.
TO-BES-012Foreign key + snapshot binnen domein; soft link over modulegrenzenVastgelegdHoofdstuk 07, 25Foreign key + snapshot wordt primair binnen hetzelfde domein toegepast; over modulegrenzen geldt soft link + snapshot als standaardpatroon.
TO-BES-013Workflowgerichte transaction boundariesVastgelegdHoofdstuk 03, 07, 12, 14, 18Per cross-module workflow wordt expliciet bepaald welke stappen onderdeel zijn van de functionele transactie.
TO-BES-014Kritieke of retrybare systeemberichten per workflowVastgelegdHoofdstuk 12, 13, 14, 18Een systeembericht kan kritiek of retrybaar zijn afhankelijk van de functionele rol binnen de workflow.
TO-BES-015Scheduling als technische jobeigenaarVastgelegdHoofdstuk 18, 21OefenHub.Scheduling is eigenaar van de technische joblifecycle zodra een job succesvol is aangemaakt.
TO-BES-016Domeinmodules blijven eigenaar van jobdomeinlogicaVastgelegdHoofdstuk 18Domeinmodules blijven eigenaar van de domeinlogica die door jobs wordt uitgevoerd.
TO-BES-017TickerQ zonder externe message brokerVastgelegdHoofdstuk 18, 21TickerQ wordt gebruikt voor periodieke en uitgestelde verwerking; er komt geen RabbitMQ of externe message broker in de eerste baseline.
TO-BES-018Module-eigen readmodelsVastgelegdHoofdstuk 03, 17Module-eigen readmodels staan onder Models/ReadModels; er komt geen centraal ReadModels-project in de basis.
TO-BES-019Naamvorm concrete oefenmoduleprojectenVastgelegdHoofdstuk 02, 09Concrete oefenmodules gebruiken de naamvorm OefenHub.Modules.<ModuleCategory>.<ModuleName>.
TO-BES-020Modules.Abstractions als primaire moduleafhankelijkheidVastgelegdHoofdstuk 09Concrete oefenmodules gebruiken OefenHub.Modules.Abstractions als primaire afhankelijkheid.
TO-BES-021SharedKernel alleen bewust en DRY-gedrevenVastgelegdHoofdstuk 03, 09Gebruik van OefenHub.SharedKernel door concrete oefenmodules is toegestaan wanneer dit aantoonbaar generieke duplicatie voorkomt.
TO-BES-022PDF-bestanden als tijdelijke outputVastgelegdHoofdstuk 10, 16, 25PDF-bestanden zijn tijdelijke output; Practice blijft bron van run- en resultaatdata.
TO-BES-023SignalR als transportVastgelegdHoofdstuk 10, 15SignalR is transport voor realtime updates; Practice blijft bron van oefenvoortgang.
TO-BES-024Testprojecten per moduleVastgelegdHoofdstuk 02, 03, 23Testprojecten worden per module georganiseerd onder een solution folder of fysieke map tests.
TO-BES-025Architecture tests voor dependencyregelsVastgelegdHoofdstuk 03, 23Architecture tests bewaken dependencyregels aanvullend op internal en projectreferences.
TO-BES-026Module-eigen idempotente seeddataVastgelegdHoofdstuk 07, 08, 13, 20Seeddata is module-eigen, idempotent en mag beheerbare content niet ongemerkt overschrijven.
TO-BES-027Correlation-id in relevante technische flowsVastgelegdHoofdstuk 18, 19, 21Iedere relevante technische flow draagt een correlation-id door voor logging, jobs en cross-module herleidbaarheid.
TO-BES-028Fallbackgedrag zonder autorisatie-/privacyomzeilingVastgelegdHoofdstuk 22, 25Fallbackgedrag mag autorisatie, privacy, brondata of historische reconstructie nooit omzeilen.
TO-BES-029Vaste anonimiseringswaardenVastgelegdHoofdstuk 25Accountanonimisering gebruikt vaste waarden: FirstName = Anoniem, MiddleName = #, LastName = <niet-voorspelbare systeemcode> en Email = anoniem.<code>@verwijderd.acc.
TO-BES-030Serilog + Seq als loggingbaselineVastgelegdHoofdstuk 19, 21Serilog met Seq is de loggingbaseline voor gestructureerde technische logging en centrale loganalyse.
TO-BES-031Aspire development-onlyVastgelegdHoofdstuk 20Aspire wordt alleen gebruikt als development-only ondersteuning voor configuratie-, dependency- en secrets-pariteit.
TO-BES-032Geen publieke API of smartphonefocusVastgelegdHoofdstuk 02, 22, 24OefenHub heeft in de eerste baseline geen publieke functionele API-laag voor externe clients of mobiele apps; desktop en tablet zijn leidend.
TO-BES-033MudBlazor met OefenHub-componentenlaagVastgelegdHoofdstuk 24MudBlazor is de primaire componentenbibliotheek voor de interactieve Blazor Web UI, toegepast via een eigen OefenHub-componentenlaag en niet als losse pagina-opbouw of domeinafhankelijkheid.
TO-BES-034ArchUnitNET voor architecture testsVastgelegdHoofdstuk 02, 23ArchUnitNET is de primaire tooling voor architecture tests in OefenHub.ArchitectureTests; NetArchTest is geen baseline.
TO-BES-035PDF-regressieteststrategieVastgelegdHoofdstuk 16, 23PDF-regressietests gebruiken primair structurele Verify/PdfPig-snapshots en beperken visuele golden masters tot stabiele kernlayouts; byte-identieke PDF-vergelijking is geen primaire regressiemethode.
TO-BES-036Initiële materialisatiekandidaten voor readmodelsVastgelegdHoofdstuk 17, 22De initiële materialisatiekandidaten voor readmodels zijn vastgesteld; mailbox-, badge-, ticket-, guardian-summary- en zware beheerprojecties zijn kandidaat, terwijl geschiedenisdetails, PDF-export en live availability querymatig of runtime blijven tenzij meetgegevens anders aantonen.
TO-BES-037Beheerbare seeddata voor popups, templates en instellingenVastgelegdHoofdstuk 07, 13, 20Beheerbare seeddata voor popups, systeemberichttemplates, systeeminstellingen, featuretoggles, notificaties en contentblokken gebruikt stabiele technische keys, create-if-missing-seeding en expliciete migratie/backfill voor technische wijzigingen; beheerwaarden worden niet stilzwijgend overschreven.
TO-BES-038Aspire-developmentpariteit gevalideerdVastgelegdHoofdstuk 20Aspire-developmentpariteit is gevalideerd als development-only inrichting met vaste guardrails voor scope, projectgrens, configuratiebinding, secrets, lokale data en observability; productiegebruik van Aspire vereist een nieuw besluit.
TO-BES-039MudBlazor- en componentenstrategie gevalideerdVastgelegdHoofdstuk 24De MudBlazor- en OefenHub-componentenstrategie is gevalideerd: MudBlazor blijft Web-only componentbasis, OefenHub levert theme en herbruikbare wrappercomponenten, en HTML-mockups blijven ontwerpinput in plaats van implementatiecode.
TO-BES-040Backup- en restorebaselineVastgelegdHoofdstuk 21, 25De backup- en restorebaseline gebruikt een RPO van maximaal 5 × 24 uur en een RTO van maximaal 3 werkdagen na restorebesluit; high-availability, active-active, hot standby en zero-downtime restore vallen buiten de V1.0-baseline.
TO-BES-041Performancegrenzen per hoofdflowVastgelegdHoofdstuk 22, 23De V1.0-performancegrenzen per hoofdflow zijn vastgesteld als lichte richtwaarden voor acceptabele performance; OefenHub krijgt geen top-tier latency- of high-scale-performancebaseline.
TO-BES-042EF Core migration history per schemaVastgelegdHoofdstuk 07, 23EF Core migration history staat per persistente module-DbContext in het eigen schema als __EFMigrationsHistory; een centrale gedeelde historytabel zonder contextonderscheid is niet toegestaan.
TO-BES-043Tijdelijke PDF-opslag en cleanuptermijnVastgelegdHoofdstuk 16, 18, 21, 25Tijdelijke PDF-output wordt buiten webroot opgeslagen via OefenHub:Reporting:TempExportPath, standaard na 24 uur cleanupeligible en minimaal iedere 6 uur opgeschoond; achterstand vanaf 48 uur wordt zichtbaar gemaakt.
TO-BES-044Blazor componenttests en end-to-endtestsVastgelegdHoofdstuk 23, 24Blazor componenttests gebruiken bUnit en end-to-endtests gebruiken Playwright .NET; E2E-dekking blijft beperkt tot primaire smoke- en regressieflows.
TO-BES-045SignalR reconnectinstellingenVastgelegdHoofdstuk 15, 22, 23, 24SignalR live-reconnect gebruikt vijf automatische pogingen met delays 0, 2, 10, 30 en 60 seconden; na falen toont de UI een veilige verbroken status en wordt actuele server-side state bij reconnect opnieuw opgehaald.
TO-BES-046Serilog-/Seq-configuratie en logretentieVastgelegdHoofdstuk 19, 21, 25Serilog-/Seq-configuratie en logretentie zijn vastgesteld als lichte V1.0-baseline met centrale configuratie, Seq als interne viewer, privacybewuste scrubbing en begrensde retentietermijnen per omgeving/logcategorie.
TO-BES-047Securityevents standaard technisch loggenVastgelegdHoofdstuk 19, 20, 25Securityevents blijven standaard technische logs in Serilog/Seq; er komt geen generieke persistente securityeventtabel of apart securityschema in V1.0. Persistente opslag gebeurt alleen wanneer een domeinactie functioneel bronhoudende historie vereist.
TO-BES-048Content Security Policy baselineVastgelegdHoofdstuk 20, 23, 24De CSP-baseline staat externe bronnen standaard niet toe, gebruikt geen inline scripts, staat inline styles alleen beperkt toe voor Blazor/MudBlazor, en wordt centraal in OefenHub.Web als header geconfigureerd.
TO-BES-049Rate limits per routecategorieVastgelegdHoofdstuk 20, 22, 23Rate limiting wordt per routecategorie ingericht met lichte V1.0-limieten voor publieke pagina's, login/provisioning, Blazor UI, relaties, berichten, tickets, search/filter, PDF-export, beheer, SignalR en interne tooling.
TO-BES-050Initiële technische modulecategorie en eerste concrete oefenmoduleVastgelegdHoofdstuk 02, 03, 09, 23De eerste technische oefenmodulecategorie is Arithmetic en de eerste concrete technische oefenmodule is OefenHub.Modules.Arithmetic.AdditionSubtractionSimple, functioneel beschreven als Optellen & Aftrekken (simpel) binnen het moduledossier oefen_modules/rekenen/optellen_en_aftrekken_simpel.
TO-BES-051Cross-module transaction boundaries voor V1.0-kritieke workflowsVastgelegdHoofdstuk 03, 07, 12, 14, 18, 25, 26Cross-module transaction boundaries voor V1.0-kritieke workflows zijn gevalideerd; primaire bronmutaties liggen bij de functionele eigenaar en afgeleide signalering, readmodels, caches, PDF-generatie, e-mail en SignalR blijven idempotent of retrybaar waar dat veilig is.
TO-BES-052Moq als baseline mockinglibraryVastgelegdHoofdstuk 23Moq is de baseline mockinglibrary voor interface-gebaseerde unit-testmocks, tenzij een concrete testbehoefte of security-/dependencyreview een afwijking vereist.
TO-BES-053Engelstalige technische loggingVastgelegdHoofdstuk 19Technische logging gebruikt Engelstalige eventnamen, propertynamen en vaste logmessage-templates; gebruikersgerichte teksten blijven Nederlandstalig.
TO-BES-054Retrydefaults per jobtypeVastgelegdHoofdstuk 18, 21, 23Retrydefaults per jobtype zijn vastgesteld als lichte V1.0-baseline met beperkte retries voor periodieke/onderhoudsjobs, ruimere retries voor maildelivery en beheer-/supportgestuurde hersteljobs.
TO-BES-055Docker V1.0-secretbaselineVastgelegdHoofdstuk 20, 21De secretbaseline voor de eerste Docker-livegang gebruikt met het huidige inzicht file-based secrets via Docker Compose secrets, read-only secretbestanden of, bij Swarm, Docker/Portainer secrets; de exacte route blijft afhankelijk van deploymentinrichting.

Implementatieverificaties en aandachtspunten

IDOnderwerpStatusVerwerkt inVereiste opvolging
TO-OPEN-001TickerQ-tabellen in schema schedulingImplementatieverificatieHoofdstuk 18, 21Configuratie, migrations en deployment controleren.
TO-OPEN-002Interne TickerQ-webinterfaceImplementatieverificatieHoofdstuk 18, 20, 21Interne toegang, autorisatie en logging van beheeracties controleren.

Gebruik van dit register

Werk een aandachtspunt bij zodra de bijbehorende verificatie is uitgevoerd of wanneer een nieuw ontwerpbesluit nodig blijkt. Bij verwerking gelden de volgende regels:

  1. definitieve technische regels worden verwerkt in het relevante hoofdstuk van het Technisch Ontwerp;
  2. functionele of requirementgerichte uitkomsten worden teruggelegd in Functioneel Ontwerp of Software Requirements Specification;
  3. datamodelbroninformatie wordt verwerkt in database-informatie;
  4. bewust niet opgenomen uitbreidingen krijgen status Buiten huidige baseline;
  5. vervallen punten blijven kort traceerbaar met reden wanneer zij eerder besluitvorming hebben beïnvloed.

Bij de V1.0-baseline mogen alleen aandachtspunten met een expliciete status en vervolgroute blijven bestaan.