Files
VacatureRadar/docs/quality/BENCHMARKS.md
Jens b8091e59bd
deploy / deploy (push) Canceled after 0s
Initial deploy setup
2026-07-21 14:00:00 +02:00

59 lines
2.0 KiB
Markdown

# Benchmarks en kwaliteitsrapportage (VR-116)
## Doel
VR-116 levert een reproduceerbaar benchmarkpakket voor:
- parservelddekking;
- deduplicatie-kwaliteit (precision/recall, false merges/missed merges);
- rankingstabiliteit (top-N churn, onbekende-data ratio);
- performance (p50/p95, querycount en memory peak).
De CLI werkt zonder live netwerk met de synthetische fixtures uit `fixtures/benchmark/`.
## Datasets
`fixtures/benchmark/quality_benchmark.json`
- bevat parsercases met verwachte parserkey/version en verwachte minima;
- bevat dedupe seeds en querycases met verwachte matchlabels;
- bevat geen echte broninhoud of persoonlijke gegevens.
## CLI
```bash
uv run python scripts/benchmark.py --quick
uv run python scripts/benchmark.py --jobs 25000 --top-n 25
uv run python scripts/benchmark.py --jobs 25000 --json --top-n 25
uv run python scripts/benchmark.py --skip-performance --quick
```
## Rapportformat
De JSON-rapportage bevat minimaal:
- `parser`: dekking en onbekend-aandeel;
- `dedupe`: precision, recall, false merges, missed merges;
- `ranking`: top-N churn en unknown-data ratio;
- `performance`: p50, p95, querycount, peak memory, totale duur;
- `nfr_007`: gegraveerde metingstatus/passing van p95 < 1000 ms.
## Drempels en interpretatie
- Parser: standaard doel `coverage_ratio >= 0.90`.
- Dedupe: standaard doel `precision >= 0.90` en `recall >= 0.90`.
- Ranking: standaard doel `churn <= 0.35`.
- NFR-007: enkel als `nfr_007.measured == true` wordt de p95-check als afgewerkt beoordeeld.
## Uitvoeringsmodus
- `--quick`: voert parser/dedupe/ranking uit met 250 ingestaste jobs.
- standaardmodus: voert ook een performancepass uit op 25.000 jobs (mits runtime toelaatbaar).
- `--skip-performance`: nuttig voor CI/quickvalidatie zonder de lange performance-run.
## Afwijkingen
Wanneer p95 of dedupe niet voldoet, rapporteert het script een status `failed` met detaildata per case.
Die output is bedoeld als regressiebasis voor foutanalyse en threshold-sturing.