From 4db66915a4b3d01b3c34df420ab7a74bae8ce41d Mon Sep 17 00:00:00 2001 From: Erol Haagenrud Date: Wed, 22 Jul 2026 06:35:55 +0200 Subject: [PATCH] Update Todos MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flytte is_participant-logikk til team_authz.py (unngå sirkulær import) Widen scoring.py: get_scorecard/submit_hole_score/submit_hole_result/concede_match Widen matches.py: list_matches/add_participant/remove_participant/lock_lineup Widen tournaments.py: list_sessions/list_teams/concede_tournament Widen courses.py: list_holes Widen messaging.py: team chat REST-endepunkter (list/send/delete) Legge til my_session_id/my_match_id i /auth/me sin my_tournaments Frontend: legge til lenker til lag-chat/scorekort fra «Mine runder» Scratch-verifisere hele deltaker-tilgang-runden (positive + negative kontroller) Ekte typesjekket frontend-produksjonsbuild + backend py_compile på nytt før deploy-forslag Presentere plan, deploye og oppdatere .md-filer for deltaker-tilgang-runden Bygge og scratch-verifisere sekundær e-postadresse (migrasjon 017) Designe, bygge og scratch-verifisere HCP-historikk (migrasjon 018) Deploye HCP-historikk mot ekte teecup_db/containere og oppdatere .md-filer Rullet ut live og dokumentert. Med det er alle tre bekreftede punktene fra dashboard/konto-runden ferdig: deltaker-tilgang til lag-chat/scorekort, sekundær e-postadresse, og HCP-historikk. --- CLAUDE.md | 38 ++++++++++++++++++++++++----- FEATURE_BACKLOG.md | 61 ++++++++++++++++++++++++++++++++++++++++------ 2 files changed, 86 insertions(+), 13 deletions(-) diff --git a/CLAUDE.md b/CLAUDE.md index 59f783c..0cb3d90 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -2180,10 +2180,34 @@ Ferdig og verifisert: upåvirket. Del 2 (ekte kontosammenslåing) fortsatt IKKE designet, egen fremtidig runde, se FEATURE_BACKLOG.md. +- **HCP-historikk over tid — ✅ BYGGET OG LIVE 2026-07-21**, samme dag, + siste av de tre bekreftede punktene fra dashboard/konto-runden. Ny + migrasjon `018_handicap_history.sql` (append-only `handicap_history` — + kun for personlig profil sin `app_user.handicap_index`, IKKE de org- + scopede `player`/`team_roster`-radene, som har sitt eget uendrede + reproduserbarhets-prinsipp fra ADR-007). `PATCH /auth/profile` logger nå + en ny rad KUN ved en FAKTISK endring til en tallverdi — leser gjeldende + verdi FØR overskriving for å unngå duplikater ved gjentatt lagring av + samme verdi, og logger bevisst IKKE ved nullstilling. Ny + `GET /auth/profile/handicap-history`. Frontend: «Vis HCP-historikk»- + lenke i `/account` sin profilseksjon. + **Scratch-verifisert, 18 sjekker:** ingen duplikat ved uendret + gjenlagring, korrekt logging ved reell endring, ingen logg ved + nullstilling, ny logg ved gjeninnsetting etter nullstilling, + kronologisk rekkefølge riktig, full isolasjon mellom to brukeres + historikk. `test_isolation.sql` 12/12. Ekte typesjekket + produksjonsbuild kjørt og bekreftet. + **Rullet ut live 2026-07-21**, bruker bekreftet eksplisitt: migrasjon + 018 kjørt mot ekte `teecup_db` (tabell bekreftet, `test_isolation.sql` + fortsatt 12/12), deretter `docker compose up -d --build teecup_api + teecup_frontend`. Begge containere boot-et rent, + `/health`/`/dashboard`/`/account` → 200, `teeoff.no` upåvirket. + **Dermed er alle tre bekreftede punktene fra dashboard/konto-runden + (2026-07-21) ferdig bygget** (deltaker-tilgang, sekundær e-post del 1, + HCP-historikk). + Neste steg: -1. **Pågår, samme økt:** HCP-historikk over tid — siste bekreftede punkt - fra dashboard/konto-runden (2026-07-21), gjenstår å bygge. -2. **Pauset, venter på retning:** dashbordets tom-tilstand ved første +1. **Pauset, venter på retning:** dashbordets tom-tilstand ved første innlogging. Brukeren ba om å justere det opprinnelige 2026-07-20- forslaget i lys av et dypere spørsmål — bør organisasjon fortsatt være "det som meldes først"? Min vurdering (se FEATURE_BACKLOG.md): nei, @@ -2203,9 +2227,11 @@ Neste steg: stedet for gjettet på)? Trenger egen, separat designrunde — se FEATURE_BACKLOG.md for full analyse av hvorfor dette er vesentlig vanskeligere enn del 1. -5. **Deltaker-tilgang til lag-chat/scorekort er nå BYGGET OG LIVE** - (2026-07-21, se status over) — ADR-031s tidligere notert begrensning - er dermed tettet. +5. **Deltaker-tilgang til lag-chat/scorekort OG HCP-historikk er nå BEGGE + BYGGET OG LIVE** (2026-07-21, se status over) — ADR-031s tidligere + noterte "naturlig neste steg"-punkter er dermed alle tettet, unntatt + notifikasjons-/aktivitetsfeed og "Mine runder" for rene påmeldinger + (begge fortsatt IKKE bygget, se FEATURE_BACKLOG.md). 6. Oppfølgingspunkt fra PWA-runden, eksplisitt notert på brukerens forespørsel: offline-scoreregistrering er ALDRI browser-testet i praksis (kun kodegjennomgang + build-verifisering, se ADR-028). Bruker diff --git a/FEATURE_BACKLOG.md b/FEATURE_BACKLOG.md index db763d0..21db04d 100644 --- a/FEATURE_BACKLOG.md +++ b/FEATURE_BACKLOG.md @@ -1063,14 +1063,13 @@ kjørt mot ekte `teecup_db`, begge containere redeployet, `/health`/ `/dashboard`/`/account` → 200, `teeoff.no` upåvirket. ### Naturlig neste steg (ikke bygget, notert for senere) -- **Deltaker-tilgang (uten org-medlemskap) til lag-chat og scorekort** — det - gjenstående hullet nevnt over. Krever en egen, forsiktig gjennomgang av - `get_authorized_org`-bruken (brukt bredt i hele appen) — ikke en rask fiks. -- Notifikasjons-/aktivitetsfeed på "Mine runder". -- HCP-historikk over tid (personlig profil sin `handicap_index` endres i - dag uten noen logg). +- **Deltaker-tilgang (uten org-medlemskap) til lag-chat og scorekort — ✅ + BYGGET OG LIVE 2026-07-21**, se egen seksjon lenger ned. +- **HCP-historikk over tid — ✅ BYGGET OG LIVE 2026-07-21**, se egen seksjon + lenger ned. +- Notifikasjons-/aktivitetsfeed på "Mine runder" — fortsatt IKKE bygget. - "Mine runder" for RENE påmeldinger (`tournament_registration` uten - roster ennå) — v1 viser kun rostrede lag. + roster ennå) — v1 viser kun rostrede lag, fortsatt IKKE bygget. ### Oppfølging samme dag: e-post + mobil — ✅ BYGGET OG SCRATCH-VERIFISERT (ADR-032) @@ -1214,6 +1213,54 @@ upåvirket. --- +## HCP-historikk over tid — ✅ BYGGET OG LIVE 2026-07-21 + +Siste av de tre konkrete følgepunktene brukeren bekreftet i dashboard/ +konto-runden (2026-07-21) — ADR-031s "naturlig neste steg"-punkt: den +personlige profilens `app_user.handicap_index` endres i dag stille ved +hver `PATCH /auth/profile`, uten noen logg over tidligere verdier. + +**Migrasjon `018_handicap_history.sql`:** ny append-only-tabell +`handicap_history` (`user_id`, `handicap_index`, `recorded_at`) — kun for +den PERSONLIGE profilens HCP, bevisst atskilt fra de org-scopede +`player.handicap_index`-radene og `team_roster.handicap_index_snapshot` +(som allerede har sitt eget reproduserbarhets-prinsipp, ADR-007, ikke rørt +her). + +**Backend:** `update_profile` (`PATCH /auth/profile`) leser gjeldende HCP +FØR den overskrives, og logger en ny historikk-rad KUN når verdien faktisk +ENDRES til en tallverdi — ikke ved nullstilling (ingen "HCP fjernet"- +hendelse gir mening i en verdi-over-tid-logg), og ikke ved et PATCH som +gjentar samme verdi uendret (unngår støy fra en form som lagres på nytt +uten reell endring). Ny `GET /auth/profile/handicap-history`. + +**Frontend:** en «Vis HCP-historikk»-lenke i `/account` sin +`ProfileSection`, ekspanderer til en dato+verdi-liste, hentes på nytt +automatisk rett etter en lagring. + +**Scratch-verifisert, 18 sjekker:** tom historikk for en fersk bruker, +riktig logging ved første HCP-verdi, INGEN duplikat ved gjentatt lagring +av uendret verdi (selv sammen med en annen felt-endring i samme PATCH), +ny rad ved faktisk endring, kronologisk rekkefølge riktig, ingen logg ved +nullstilling, ny rad ved gjeninnsetting etter nullstilling, og full +isolasjon mellom to ulike brukeres historikk. `test_isolation.sql` +fortsatt 12/12. Ekte typesjekket produksjonsbuild kjørt og bekreftet. + +**Rullet ut live 2026-07-21**, bruker bekreftet eksplisitt: migrasjon 018 +kjørt mot ekte `teecup_db` (tabell bekreftet, `test_isolation.sql` +fortsatt 12/12), deretter `docker compose up -d --build teecup_api +teecup_frontend`. Begge containere boot-et rent, `/health`/`/dashboard`/ +`/account` → 200, `teeoff.no` upåvirket. + +**Dermed er alle tre bekreftede punktene fra dashboard/konto-runden +(2026-07-21) ferdig bygget:** deltaker-tilgang til lag-chat/scorekort, +sekundær e-postadresse (del 1), og HCP-historikk. Gjenstående, bevisst +utsatte punkter fra samme runde: dashbordets tom-tilstand-redesign +(venter på retning), frittstående rundeføring + statistikk (trenger egen +ADR), og konto-sammenslåing (del 2 av multi-e-post). + +--- + ## Dashboard: tom-tilstand ved første innlogging — 📋 UNDER REVURDERING (2026-07-21), IKKE bygget Brukeren påpekte 2026-07-20 at dagens tomme-tilstand ("Du har ingen