Synthetics: het testproduct en de bestelcheck¶
Een check op de Freeze AI-VM loopt elk uur de bestelflow van de winkel door: het
testproduct openen, in de winkelwagen leggen, de checkout als gast invullen en op
"Afrekenen" klikken. Vlak vóór de betaling stopt hij. Faalt een stap, dan komt er een
melding op ntfy (freeze-ai-alerts) met een screenshot.
Ontwerp: repo Voorman/watchtower, docs/plans/2026-11-05-freeze-ai-synthetics.md.
Todo: .planning/todos/pending/synthetics-testproduct.md.
Het testproduct¶
- Slug
synthetics-testproduct, naam "Synthetics testproduct", € 1, één variant. - Niet gelist (
is_listeduit): niet in de shop, zoekresultaten, categorieën, sitemap of productfeed. De pagina/producten/synthetics-testproductwerkt wel, metnoindex. - Niet verwijderen of activeren in de shop. Zonder dit product meldt de check elk uur een storing.
- Maken of herstellen (idempotent, veilig op productie):
Op staging: ssh freeze-staging, dan in /opt/webshop
COMPOSE_FILE=docker-compose.staging.yml docker compose exec -T backend python manage.py ensure_synthetic_product.
is_listed werkt voor elk product: uit = alleen bereikbaar via de directe link. In de
Django-admin staat het veld bij de productstatus en als filter.
Waarom er nooit een order ontstaat¶
- De check breekt het checkout-verzoek (
POST /api/orders/checkout/) in de browser af en controleert alleen wat er verstuurd zou worden. - Vangnet: komt het verzoek toch aan, dan antwoordt de checkout met 422
{"code": "synthetic_product"}zolang het testproduct in de winkelwagen zit, vóór er een order of Mollie-betaling wordt gemaakt (apps/orders/views.py,checkout).
De check zet ook freeze_intern (geen PostHog-events) en blokkeert de herinneringsmail en
de nieuwsbrief in de browser. Het testadres is synthetics@freezedesign.nl.
Opruimen¶
Celery beat cart-purge-stale (taak cart.purge_stale, dagelijks 02:30) verwijdert
gastwinkelwagens zonder order die 30 dagen niet zijn bijgewerkt, en daarna de verlopen
sessies (clearsessions). Dat ruimt ook de lege winkelwagens van de check op. Winkelwagens
van klantaccounts en winkelwagens met een order blijven staan.