@@ -0,0 +1,32 @@
|
||||
# ADR-0001 — Modulaire Django-monoliet
|
||||
|
||||
- Status: accepted
|
||||
- Datum: 2026-07-20
|
||||
|
||||
## Context
|
||||
|
||||
De applicatie is persoonlijk, self-hosted en heeft meerdere samenhangende domeinen maar beperkte operationele schaal. Afzonderlijke frontend/backend/microservices zouden deployment, auth, transacties, upgrades en debugging op Unraid verzwaren.
|
||||
|
||||
## Besluit
|
||||
|
||||
Gebruik één Django-codebase met domeinapps, server-rendered templates, PostgreSQL en Celery/Redis voor asynchroon werk. Bedrijfslogica blijft in services en adapters zodat latere extractie mogelijk blijft.
|
||||
|
||||
## Gevolgen
|
||||
|
||||
Positief:
|
||||
|
||||
- één image en releaseflow;
|
||||
- eenvoudige auth/CSRF;
|
||||
- transactionele pipeline;
|
||||
- lage beheerlast;
|
||||
- goede testbaarheid.
|
||||
|
||||
Negatief:
|
||||
|
||||
- frontendinteractie is minder SPA-achtig;
|
||||
- domeingrenzen moeten door conventie/tests bewaakt worden;
|
||||
- lange collectiontaken mogen nooit in webrequests draaien.
|
||||
|
||||
## Herzieningstrigger
|
||||
|
||||
Alleen herzien bij meetbare bottleneck, onafhankelijk releasevereiste of team-/tenantgrens die niet met modules/queues kan worden opgelost.
|
||||
@@ -0,0 +1,19 @@
|
||||
# ADR-0002 — Strikt bronbeleid en geen directe platformbots
|
||||
|
||||
- Status: accepted
|
||||
- Datum: 2026-07-20
|
||||
|
||||
## Context
|
||||
|
||||
Grote vacatureplatformen hebben toegangsvoorwaarden, botdetectie en databank-/privacyrisico's. De gebruiker wil minimale handelingen, maar niet ten koste van blokkadeomzeiling of onbeheerbare scraping.
|
||||
|
||||
## Besluit
|
||||
|
||||
Onbekende bronnen starten als `review`. Alleen `allow`-bronnen worden automatisch gefetcht. LinkedIn, Indeed, StepStone, Jobat en VDAB staan standaard op de directe fetchdenylist. Platformvacatures komen binnen via door de gebruiker ingestelde e-mailalerts of handmatige import; de tool probeert de oorspronkelijke werkgeversbron te vinden.
|
||||
|
||||
## Gevolgen
|
||||
|
||||
- minder brede directe platformdekking;
|
||||
- veel lagere juridische/technische onderhoudslast;
|
||||
- bronaudit en policyreview worden productfunctionaliteit;
|
||||
- denylistlinks mogen als alias bestaan maar worden niet automatisch bezocht.
|
||||
@@ -0,0 +1,19 @@
|
||||
# ADR-0003 — Deterministische kern vóór optionele AI
|
||||
|
||||
- Status: accepted
|
||||
- Datum: 2026-07-20
|
||||
|
||||
## Context
|
||||
|
||||
Vacatureteksten zijn onbetrouwbare externe data. Taalmodellen kunnen hallucineren, gevoelig zijn voor prompt injection en niet altijd beschikbaar zijn.
|
||||
|
||||
## Besluit
|
||||
|
||||
Normalisatie, harde uitsluitingen, dedupe, lifecycle en baselinescoring zijn deterministisch. AI is standaard uit en mag alleen gestructureerde aanvullende features, evidence en samenvatting leveren. AI-uitval verandert de kernflow niet.
|
||||
|
||||
## Gevolgen
|
||||
|
||||
- voorspelbaar en offline bruikbaar;
|
||||
- uitlegbare fallback;
|
||||
- minder semantische nuance zonder model;
|
||||
- model-/promptversie en evaluaties vereist vóór rankingimpact.
|
||||
@@ -0,0 +1,19 @@
|
||||
# ADR-0004 — Single-user-first, user-scoped data
|
||||
|
||||
- Status: accepted
|
||||
- Datum: 2026-07-20
|
||||
|
||||
## Context
|
||||
|
||||
Het primaire doel is één persoonlijke Unraid-installatie. Volledige multi-tenant SaaS-architectuur zou onnodige complexiteit toevoegen, maar globale user-onafhankelijke querysets kunnen later datalekken veroorzaken.
|
||||
|
||||
## Besluit
|
||||
|
||||
Optimaliseer UX en beheer voor één gebruiker, maar koppel profielen, feedback, applications en digests altijd aan een Django-user en scope wijzigingsviews op die user. Canonieke vacatures/bronnen zijn installatiebreed gedeeld.
|
||||
|
||||
## Gevolgen
|
||||
|
||||
- eenvoudige installatie;
|
||||
- veilige basis voor een tweede lokale user;
|
||||
- geen tenantbilling, uitnodigingen of isolatie op databaseniveau;
|
||||
- beheerfuncties blijven admin-only in productie.
|
||||
@@ -0,0 +1,19 @@
|
||||
# ADR-0005 — Vacaturemails als platformingress
|
||||
|
||||
- Status: accepted
|
||||
- Datum: 2026-07-20
|
||||
|
||||
## Context
|
||||
|
||||
Vacatureplatformen bieden nuttige zoekalgoritmes en alerts, terwijl directe scraping ongewenst is. E-mail is door de gebruiker geactiveerde, begrensde input.
|
||||
|
||||
## Besluit
|
||||
|
||||
Gebruik een dedicated IMAP-mailbox en idempotente MIME/linkextractie. Bewaar platformlinks als bronalias. Volg een link alleen wanneer bronpolicy dat later toestaat; probeer bij voorkeur een oorspronkelijke werkgeverspagina te vinden.
|
||||
|
||||
## Gevolgen
|
||||
|
||||
- gebruiker stelt alerts eenmalig in;
|
||||
- parser moet variërende e-mailsjablonen verdragen;
|
||||
- dedicated mailbox en retentie nodig;
|
||||
- geen platformcredentials in VacatureRadar.
|
||||
@@ -0,0 +1,18 @@
|
||||
# ADR-0006 — Geen automatische sollicitaties
|
||||
|
||||
- Status: accepted
|
||||
- Datum: 2026-07-20
|
||||
|
||||
## Context
|
||||
|
||||
Automatisch solliciteren kan onjuiste verklaringen, privacyverlies, reputatieschade en ongewenste massacommunicatie veroorzaken. Vacatureformulieren verschillen sterk en bevatten vaak gevoelige vragen.
|
||||
|
||||
## Besluit
|
||||
|
||||
VacatureRadar archiveert, scoort, maakt een dossier en kan conceptinformatie voorbereiden, maar bevat geen externe submitactie. Alleen de gebruiker verstuurt een sollicitatie via het oorspronkelijke kanaal.
|
||||
|
||||
## Gevolgen
|
||||
|
||||
- menselijke controle blijft gegarandeerd;
|
||||
- minder end-to-endautomatisering;
|
||||
- een eventuele toekomstige wijziging vereist een nieuwe expliciete ADR, security/privacyreview en per-submitconfirmatie.
|
||||
@@ -0,0 +1,19 @@
|
||||
# ADR-0007 — PostgreSQL als waarheid, Redis/Celery voor werk
|
||||
|
||||
- Status: accepted
|
||||
- Datum: 2026-07-20
|
||||
|
||||
## Context
|
||||
|
||||
Broncontroles, mailboxpolling en scoring mogen webrequests niet blokkeren. Taken moeten retrybaar zijn, terwijl Redisdata verloren mag gaan zonder canonieke data te verliezen.
|
||||
|
||||
## Besluit
|
||||
|
||||
PostgreSQL is de enige productiebron van waarheid. Redis is uitsluitend broker/resultbackend. Celery worker en beat voeren periodiek/asynchroon werk uit. SQLite en eager tasks blijven beschikbaar voor lokale tests.
|
||||
|
||||
## Gevolgen
|
||||
|
||||
- duidelijke herstelstrategie;
|
||||
- extra twee containers;
|
||||
- taken moeten idempotent zijn omdat at-least-once uitvoering mogelijk is;
|
||||
- schedulerstate mag worden herbouwd uit database/sourcevelden.
|
||||
@@ -0,0 +1,18 @@
|
||||
# ADR-0008 — Server-rendered UI zonder aparte SPA
|
||||
|
||||
- Status: accepted
|
||||
- Datum: 2026-07-20
|
||||
|
||||
## Context
|
||||
|
||||
De interface bestaat vooral uit lijsten, detailpagina's, formulieren en enkele POST-acties. Een React-buildketen verdubbelt contracts, auth, dependencies en deployment zonder duidelijke MVP-winst.
|
||||
|
||||
## Besluit
|
||||
|
||||
Gebruik Django templates, semantische HTML, eigen CSS en minimale vanilla JavaScript. Progressive enhancement mag; kernflows werken zonder clientframework.
|
||||
|
||||
## Gevolgen
|
||||
|
||||
- snelle, toegankelijke en eenvoudige deployment;
|
||||
- minder rijke realtimeinteractie;
|
||||
- API blijft intern tenzij een concrete integratiebehoefte ontstaat.
|
||||
Reference in New Issue
Block a user