synops/maskinrommet
vegard 1425a82cdd Fullfører oppgave 14.17: A/B-testing for presentasjonselementer
Implementerer automatisk A/B-testing for forside-varianter:

- PG-migrasjon 012: ab_events-tabell for impression/klikk-logging
  med hour_of_week (0-167) for tidspunkt-normalisering
- Variant-rotasjon: ab_select() velger tilfeldig blant testing-varianter
  ved forside-rendering, winner prioriteres, retired filtreres bort
- Impression-logging: asynkron fire-and-forget ved forside-serve
  (både cache-hit og -miss), lagres i ab_events
- Klikk-attribusjon: artikkelbesøk sjekker forside-cache for aktive
  AB-varianter og logger klikk. Eksplisitt tracking via
  GET /pub/{slug}/t/{article_id}?v={edge_id}
- Periodisk evaluator (300s intervall): z-test for proporsjoner
  (p < 0.05), minimum 100 impressions per variant, oppdaterer
  edge-metadata (ab_status, impressions, clicks, ctr)
- Redaktør-overstyring: POST /intentions/ab_override markerer
  valgt variant som winner, andre som retired (krever owner/admin)
- Auto-initialisering: maybe_start_ab_test() setter ab_status=testing
  automatisk når >1 variant av samme type opprettes

Alle 42 tester passerer inkludert 3 nye z-test-tester.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-18 03:13:39 +00:00
..
src Fullfører oppgave 14.17: A/B-testing for presentasjonselementer 2026-03-18 03:13:39 +00:00
.gitignore Maskinrommet Rust-skjelett med Dockerfile (oppgave 2.1) 2026-03-17 12:20:39 +01:00
Cargo.lock Fullfører oppgave 14.17: A/B-testing for presentasjonselementer 2026-03-18 03:13:39 +00:00
Cargo.toml Fullfører oppgave 14.17: A/B-testing for presentasjonselementer 2026-03-18 03:13:39 +00:00
Dockerfile Skrivestien: POST /intentions/create_node (oppgave 2.4) 2026-03-17 13:09:50 +01:00