| Organisatie | Prefix | Bron | Klant sinds | Websites | Snapshots | Status | Looptijd | Kwaliteit |
|---|
| Klant | Oordeel | Toelichting | Frequentie |
|---|
Quality Review
Archiefweb.eu — Decentrale overheid
Sitearchief.nl — Rijksoverheid
Architectuur & Pipeline
Hoe de data-enrichment en quality check pipelines werken
Enrichment Pipeline
Elke client wordt periodiek verrijkt via een Laravel Horizon queue. Per client draait update_client.py dat alle data ophaalt en berekent.
Quality Check Pipeline
Per client+subsites draait een batch quality checks. Playwright maakt een screenshot, Haiku AI classificeert en scoort de kwaliteit.
update_client.py
Unified enrichment script. Verrijkt één client volledig: sitesettings, versions, subsites, computed fields.
quality-check.js
Playwright-based quality checker. Maakt screenshots, analyseert DOM-structuur en tracked gefaalde resources per archief-URL.
- Screenshot: base64-encoded PNG van de gearchiveerde pagina
- DOM stats: text length, CSS/JS count, images, content height, links, forms
- Resources: gefaalde requests met URL, status, first-party flag, type (CSS/JS/image/font)
- Console errors: aantal JavaScript-fouten in de pagina
breakpoint_finder.py
Binary search om te vinden wanneer een gearchiveerde site kapotging. Doorzoekt gateway CDX-timestamps via HTTP (geen browser nodig).
- not-broken: nieuwste snapshot is in orde
- found: breekpunt gevonden met datum-range en aantal dagen kapot
- always-broken: oudste snapshot was al kapot
lib.py
Shared helpers voor alle Python tools. Voorkomt code-duplicatie.
- HTTP: fetch_json, fetch_text met retries en rate limiting (4s per host)
- Gateway: fetch_gateway_range voor PyWB CDX en OpenWayback queries
- Dates: ts_to_date, epoch_ms_to_date
- Berekeningen: calc_crawls_per_month, freq_label, is_active, calc_duration_years
- Data I/O: load_data, save_data, find_client
- Proxy: ondersteunt ARCHIEFWEB_PROXY env var
validate.py
Schema-validatie voor data.json en data-sitearchief.json.
- Required fields, types, date formats
- first_snapshot ≤ last_snapshot
- frequency matcht crawls_per_month thresholds
--fixbackfill ontbrekende velden
Queue & Jobs
Laravel Horizon verwerkt enrichment en quality jobs via Redis queues.
- UpdateClientJob (enrichment queue): roept update_client.py aan, parsed JSON, upsert naar DB. Retry 3x (10m, 30m, 60m)
- QualityCheckJob (quality queue): roept quality-check.js aan, stuurt screenshot naar Haiku AI voor classificatie + scores, slaat resultaat op. Retry 2x (5m, 15m). Bij broken/degraded: draait breakpoint_finder.py
- aw:enrich: plant enrichment jobs in,
--spread=Nverdeelt over N dagen - aw:quality-check: plant quality jobs in als batches (1 per client + subsites)
- aw:import: importeert data.json naar database
Datamodel
Bronnen
- archiefweb.eu: ~478 clients met volledige subsite metrics
- sitearchief.nl: ~87 clients, subsite metrics zijn null (API-beperking)
API endpoints
Frequentie-classificatie
Gebaseerd op crawls per maand (gemiddelde over recente 2 jaar):