Skip to content

fix(validatie): seed_bulk gebruikt resolve_oer_pad voor wees-detectie#65

Merged
EdF2021 merged 1 commit into
mainfrom
fix/seed-bulk-path-resolution
May 10, 2026
Merged

fix(validatie): seed_bulk gebruikt resolve_oer_pad voor wees-detectie#65
EdF2021 merged 1 commit into
mainfrom
fix/seed-bulk-path-resolution

Conversation

@EdF2021
Copy link
Copy Markdown
Contributor

@EdF2021 EdF2021 commented May 10, 2026

Summary

seed_bulk._reset_database() ruimt OER-rijen op met geindexeerd=0 waarvan het bronbestand niet meer bestaat. De check gebruikte echter een bare Path(r["bestandspad"]).exists(), terwijl de paden in de DB relatief zijn aan de oeren-tree (bv. oeren/davinci_oeren/x.pdf) en pas via OEREN_PAD correct te resolven zijn.

Effect vóór deze fix: de exists()-check faalde altijd vanuit validatie_samenwijzer/ (cwd) en élke unindexed rij werd verwijderd, ongeacht of het bestand nog op schijf stond. Dat leidde tot het stille verdwijnen van 13 Da Vinci-rijen tijdens de bootstrap-run van gisteren — wat ik aanvankelijk verkeerd diagnosticeerde als een baseline-mismatch (PR #64). Het achterliggende issue is hier.

Fix

Vervang Path(r["bestandspad"]).exists() door resolve_oer_pad(r["bestandspad"]).exists() zodat OEREN_PAD wordt toegepast.

Verificatie

Inline test invoegt twee dummy unindexed-rijen en draait _reset_database():

Dummy bestandspad Verwacht na reset
real oeren/davinci_oeren/25642_BBL_…haarstylist-dame.pdf (bestaat) behouden
fake oeren/this_does_not_exist.pdf (bestaat niet) verwijderd

Resultaat: ✅ real_id behouden=True, fake_id behouden=False.

Vervolgens seed_bulk.py opnieuw gedraaid om de seed-data te herstellen, en check_bootstrap.sh is volledig groen — de baseline van (68, 68) voor Da Vinci klopt ook na de fix, omdat een schone ingest --alles op de huidige Box-tree geen unindexed Da Vinci-rijen produceert (parseer_bestandsnaam slaagt voor alle bestanden die ingest succesvol verwerkt). De 13 rijen die op de master-machine de (81, 68)-baseline produceerden waren stale data uit eerdere oeren-trees, niet output van de huidige pipeline.

Test plan

  • Inline test: dummy real-path-rij behouden, fake-path-rij verwijderd
  • uv run python scripts/seed_bulk.py — succesvol re-seed (600 studenten + 30 mentoren)
  • ./scripts/check_bootstrap.sh — alle checks groen
  • uv run python -m pytest — 63 passed
  • uv run ruff check scripts/seed_bulk.py — clean

🤖 Generated with Claude Code

_reset_database deed de exists()-check via bare Path() op het bestandspad
in de DB. Die paden zijn relatief aan de oeren-tree (bv.
"oeren/davinci_oeren/x.pdf") en exists() lost dat op vanuit de cwd, niet
vanuit OEREN_PAD's parent. Resultaat: de check faalde altijd, waardoor
élke unindexed rij werd verwijderd in plaats van alleen wezen waarvan het
bronbestand echt weg is.

Geverifieerd via een test die twee dummy-rijen invoegt (een met echt pad,
een met fake pad) en _reset_database aanroept: na de fix blijft de echte
rij staan en wordt alleen de fake verwijderd.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@EdF2021 EdF2021 merged commit f55a041 into main May 10, 2026
1 check passed
@EdF2021 EdF2021 deleted the fix/seed-bulk-path-resolution branch May 10, 2026 10:06
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant