Harden public demo for 0.3.16
This commit is contained in:
+42
-1
@@ -1,6 +1,6 @@
|
||||
schema_version: 1
|
||||
project: VacatureRadar
|
||||
updated_at: '2026-07-30'
|
||||
updated_at: '2026-08-12'
|
||||
execution_policy:
|
||||
order: file-order, then first ready task whose dependencies are done
|
||||
no_product_questions: true
|
||||
@@ -2376,3 +2376,44 @@ tasks:
|
||||
note: 'Release 0.3.14: geïsoleerde PostgreSQL-benchmark reduceert importduur 44,74% en queries minstens 63,73%;
|
||||
twee volledige gates met 318 tests groen; productie healthy op image sha256:1ee84241, transactionele importsmoke
|
||||
teruggerold en rollbackimage 0.3.13 beschikbaar.'
|
||||
- id: VR-229
|
||||
title: Herstel de publieke demo na de visuele 0.3.15-audit
|
||||
status: done
|
||||
priority: P1
|
||||
requirement_ids:
|
||||
- NFR-008
|
||||
- NFR-009
|
||||
depends_on:
|
||||
- VR-228
|
||||
summary: Maak de publieke demo opnieuw representatief en tijdsbestendig, scheid mailboxingress van URL-fetching
|
||||
en laat operationele statussen exact zeggen wat ze meten.
|
||||
acceptance_criteria:
|
||||
- Iedere nieuwe demosessie herstelt zes fictieve actuele vacatures, scores en toekomstige opvolgdatums zonder
|
||||
duplicaten of groeiende ScoreRun-historiek.
|
||||
- De demo toont negen fictieve, actieve platformmailboxkoppelingen zonder secrets of echte persoonsgegevens.
|
||||
- E-mailbronnen worden nooit door de generieke URL-fetchscheduler gepland en oude mailboxpolicyfouten vervuilen
|
||||
dashboard en activiteit niet meer.
|
||||
- Navigatie en dashboard noemen het zoekprofiel expliciet actief zonder brongezondheid te suggereren; het lege
|
||||
loginwachtwoordveld lijkt niet vooraf ingevuld.
|
||||
- De negen kernroutes blijven in dark/light en op mobiel, desktop en ultrawide zonder overflow, consolefouten
|
||||
of headingregressies bruikbaar; de volledige kwaliteitsgate slaagt.
|
||||
verification:
|
||||
- python -m pytest tests/integration/test_auth_login.py tests/integration/test_tasks_and_more_views.py
|
||||
- Browseraudit op 390x844, 1280x600, 1440x900 en 3440x1440
|
||||
- ./scripts/codex_verify.sh
|
||||
primary_paths:
|
||||
- apps/jobs/services/demo_seed.py
|
||||
- apps/jobs/services/activity.py
|
||||
- apps/jobs/services/cockpit.py
|
||||
- apps/sources/tasks.py
|
||||
- templates/base.html
|
||||
- templates/dashboard/today.html
|
||||
- templates/registration/login.html
|
||||
- tests/integration/test_auth_login.py
|
||||
- tests/integration/test_tasks_and_more_views.py
|
||||
result:
|
||||
completed_at: '2026-08-12'
|
||||
note: Publieke demo wordt bij iedere sessie idempotent hersteld met 6 actuele fictieve vacatures, tijdsbestendige
|
||||
opvolging en 9 fictieve mailboxkoppelingen; EMAIL-bronnen en demo-mailboxen zijn uit de verkeerde schedulers
|
||||
en activityfeeds uitgesloten, statuscopy en loginplaceholder zijn gecorrigeerd. Gerichte 51 tests en volledige
|
||||
gate met 327 tests groen, 84,04% dekking.
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
# Projectstatus
|
||||
|
||||
- Laatst bijgewerkt: 2026-07-30
|
||||
- Repositoryversie: 0.3.15 M365 OAuth en immutable registryrelease
|
||||
- Laatst bijgewerkt: 2026-08-12
|
||||
- Repositoryversie: 0.3.16 publieke demo-hardening
|
||||
- Uitvoeringsmodus: autonome backlog
|
||||
- Eerste uitvoerbare taak: controleer met `python scripts/backlog.py next`
|
||||
|
||||
@@ -21,6 +21,22 @@ De repository bevat een uitvoerbare Django-MVP met:
|
||||
|
||||
## Laatste documentatie-update
|
||||
|
||||
Visuele demo-hardening `VR-229` op 2026-08-12:
|
||||
|
||||
- iedere publieke demosessie herstelt idempotent zes actuele fictieve vacatures,
|
||||
de laatste scores, twee toekomstige opvolgmomenten en negen geïsoleerde
|
||||
`example.test`-platformmailboxkoppelingen;
|
||||
- mailboxbronnen worden niet meer door de URL-fetchscheduler gepland, de
|
||||
publieke demo wordt uitgesloten van echte mailboxpolling en historische
|
||||
mailboxpolicyfouten vervuilen dashboard en activiteit niet langer;
|
||||
- navigatie en dashboard onderscheiden nu expliciet een actief zoekprofiel van
|
||||
bron- of systeemgezondheid; het lege loginwachtwoordveld heeft geen misleidende
|
||||
mask-placeholder meer;
|
||||
- visuele audit: negen kernroutes groen in dark/light op 390×844, 1280×600,
|
||||
1440×900 en 3440×1440 zonder overflow, heading- of consolefouten;
|
||||
- gerichte regressies: 51 tests groen; volledige gate: 327 tests, 0 failures,
|
||||
0 skips en 84,04% branch-aware dekking. Volgende uitvoerbare taak: geen.
|
||||
|
||||
README-update op 2026-07-30:
|
||||
|
||||
- de repository-ingang benoemt release 0.3.15, de groene 324-testgate, de live
|
||||
|
||||
@@ -82,7 +82,7 @@ Django/Celery
|
||||
| T-40 | Verouderde lokale CA-store of ongeldige serverketen lokt een TLS-bypass uit | onderschepte vacature- of mailboxdata en credentialdiefstal | expliciet gepinde `certifi`-CA-bundel voor HTTP, robots en IMAP; hostnaamcontrole en `CERT_REQUIRED`; nooit `verify=False`; dependency- en negatieve TLS-tests bij update | `tests/unit/test_tls.py`, `tests/security/test_robots.py`, `apps/sources/services/tls.py`, `VR-201` |
|
||||
| T-41 | Gemodificeerde `next`-parameter na vacaturefeedback | open redirect naar phishingdomein na een geldige gebruikersactie | terugkeer-URL moet dezelfde host en het actuele HTTPS-beleid respecteren; anders veilige detailfallback | `tests/integration/test_tasks_and_more_views.py`, `VR-206` |
|
||||
| T-42 | Gespoofte proxyheaders of ontbrekende publieke hostconfiguratie | host-headerfouten, onjuiste HTTPS-detectie of omzeilde IP-rate-limiting | `PUBLIC_BASE_URL`, exacte host/CSRF-validatie, proxy moet headers overschrijven, forwarded client-IP alleen vanaf `TRUSTED_PROXY_CIDRS` | `tests/unit/test_public_configuration.py`, `tests/unit/test_network.py`, `VR-225` |
|
||||
| T-43 | Gedeeld demoaccount wijzigt persistente data | bezoekers beïnvloeden elkaars ervaring of echte data | server-side read-only middleware, korte sessie, geen bruikbaar wachtwoord, zichtbare UI-status en productiecheck | `tests/integration/test_auth_login.py`, `tests/unit/test_settings_security.py`, `VR-225` |
|
||||
| T-43 | Gedeeld demoaccount wijzigt persistente data of activeert echte mailboxpolling | bezoekers beïnvloeden elkaars ervaring, echte data of externe accounts | server-side read-only middleware, korte sessie, geen bruikbaar wachtwoord, uitsluitend fictieve `example.test`-mailboxen; de loginseed herstelt begrensd en idempotent en de scheduler sluit de demo-user expliciet uit | `tests/integration/test_auth_login.py`, `tests/integration/test_tasks_and_more_views.py`, `tests/unit/test_settings_security.py`, `VR-225/229` |
|
||||
|
||||
## Misbruikscenario's
|
||||
|
||||
|
||||
@@ -85,6 +85,7 @@ Iedere backlogtaak die een requirement wijzigt, werkt in dezelfde commit deze ma
|
||||
|
||||
## Aanvullende traceability-opmerking
|
||||
- VR-228 levert release 0.3.14 met een fail-closed disposable PostgreSQL-benchmark, run-lokale importcaches, gebundelde veldprovenance en ongewijzigde score-snapshotcopy. De officiële drie iteraties bewijzen 3.264 queries per 250 items, parser 12/12, dedupeprecision/recall 1,0 en nul rankingchurn; bewijs staat in `docs/audit/IMPORT_PERFORMANCE_*.md` en het machineleesbare artifact.
|
||||
- VR-229 houdt de publieke demo representatief door fictieve vacatures, scores, mailboxkoppelingen en opvolgdatums bij iedere demosessie idempotent te herstellen. Mailboxingress is uitgesloten van URL-fetchplanning en operationele UI-copy onderscheidt een actief profiel van bron- en systeemgezondheid.
|
||||
- VR-227 professionaliseert release 0.3.13 integraal: gecentreerd ultrawideframe, mobiele gastbanner en verticale pipeline, begrensde vacaturepaginering, verplichte zes-viewport-Playwrightgate zonder skips, echte runtimeheartbeat, volledige generieke parserbenchmark en SBOM-generatie. Bewijs staat in `docs/audit/`, de E2E-/auth-/runtime-/adaptertests en `USER_INPUT_REQUIRED.md`.
|
||||
- VR-102 is gerealiseerd met auditbare policyreviews (`SourcePolicyReview`), robotscache met TTL/size/SSRF-controles en fail-closed policy-gating op verlopen of conflicterende reviews.
|
||||
- VR-107 is gerealiseerd met `apps/sources/views.py`, `apps/sources/services/manual_import.py`, `templates/sources/list.html`, `static/js/manual_import.js` en bijhorende unit/integration-tests.
|
||||
|
||||
Reference in New Issue
Block a user