diff --git a/.claude/settings.local.json b/.claude/settings.local.json index 4e46533..c4b7c5a 100644 --- a/.claude/settings.local.json +++ b/.claude/settings.local.json @@ -325,7 +325,8 @@ "Bash(python3 -c \"import httpx\")", "Bash(curl -s http://localhost:18800/health)", "Bash(python3 /tmp/claude-1000/-opt-teecup/a8bd2fc3-4b9c-4682-a2be-cf36e143de78/scratchpad/test_hcp_fix.py)", - "Bash(python3 /tmp/claude-1000/-opt-teecup/a8bd2fc3-4b9c-4682-a2be-cf36e143de78/scratchpad/test_tee_gender.py)" + "Bash(python3 /tmp/claude-1000/-opt-teecup/a8bd2fc3-4b9c-4682-a2be-cf36e143de78/scratchpad/test_tee_gender.py)", + "Bash(curl -s -o /dev/null -w \"%{http_code}\\\\n\" https://teeoff.no)" ], "additionalDirectories": [ "/opt/teeoff/deploy", diff --git a/ARCHITECTURE_DECISIONS.md b/ARCHITECTURE_DECISIONS.md index 3c98fea..d6f9303 100644 --- a/ARCHITECTURE_DECISIONS.md +++ b/ARCHITECTURE_DECISIONS.md @@ -1396,12 +1396,13 @@ rader. (6) `_remap_course`: bane-bytte til en bane UTEN matchende kjønnsrating avvist tydelig, bane-bytte til en bane MED matchende rating lykket. -**Status: ✅ BYGGET OG SCRATCH-VERIFISERT 2026-07-19, IKKE ENNÅ RULLET UT** -mot ekte `teecup_db` -- migrasjon 014 endrer ekte produksjonsdata -(Tjøme-utslagene slås faktisk sammen), venter derfor på eksplisitt -brukerbekreftelse før den kjøres mot den ekte databasen, i tråd med -CLAUDE.md sin regel om å alltid vise planen og vente på bekreftelse før -noe som migrerer ekte data kjøres. +**Status: ✅ BYGGET OG LIVE 2026-07-19.** Migrasjon 014 kjørt mot ekte +`teecup_db`, bruker bekreftet eksplisitt: Tjømes 8 tee-rader slått sammen +til 4 fysiske utslag, alle 8 `tee_rating`-rader fikk riktig `gender`, +`match_participant`-referansene forble gyldige (0 brutte fremmednøkler +etter migrasjonen, bekreftet med en direkte spørring). Begge containere +(`teecup_api`, `teecup_frontend`) bygget og redeployet, `/health`/ +`/dashboard` → 200, `teeoff.no` upåvirket. --- diff --git a/CLAUDE.md b/CLAUDE.md index ee87039..de37732 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -3,10 +3,22 @@ Les dette først i hver økt. Det koder hva vi har bestemt og hvordan vi jobber. ## Autoritative kilder (les før du gjør noe) -- `ARCHITECTURE_DECISIONS.md` — hva som er bestemt og hvorfor (ADR-001…018). Fasit. +- `ARCHITECTURE_DECISIONS.md` — hva som er bestemt og hvorfor (ADR-001…029). Fasit. - `FEATURE_BACKLOG.md` — hva som gjenstår, hva som er utsatt, hva som mangler. - Endres en beslutning: legg til en ny ADR, ikke slett historikk. Hold begge filene oppdatert når noe avgjøres. +- **Regelverk for HCP/slagfordeling — tre PDF-er lastet opp av brukeren til + prosjektroten 2026-07-19** (ikke innsjekket i git, kun lokale filer på + serveren): `spilletyper-og-spilleformer-2023.pdf`, + `Live Tourney _ A Guide to Handicap Scoring in Golf for Tournaments.pdf`, + `SCGA Club Digest.pdf`. Brukeren: disse tre gir til sammen en tydelig + beskrivelse av hvordan HCP og mottatte/tildelte slag skal beregnes/ + fordeles. Les disse FØR videre arbeid med `handicap_engine.py`, + `app/handicap.py`, allowance-strategier (ADR-005/014) eller + slagfordeling (ADR-008) — spesielt relevant for de fire + turneringsformatene som ennå ikke er designet (Københavner/High-low-high/ + Robbins/Try all, se FEATURE_BACKLOG.md), siden disse dokumentene trolig + dekker akkurat de reglene som trengs der. ## Sikkerhetsregler (ufravikelige) - Rør ALDRI `teeoff`-databasen eller den ekte `teecup_db` uten at brukeren @@ -1832,8 +1844,9 @@ Ferdig og verifisert: container (`python:3.12-slim`, `app/` og `handicap_engine.py` montert read-only), alt ryddet opp etter verifisering. Typesjekket produksjonsbuild kjørt for frontend-fiksene (1+3), alle 16 ruter listet. - **Ikke rullet ut ennå** — venter på utrullingsbekreftelse. Punkt 2 - (tee/kjønn-modellen) venter på designavklaring med bruker før noe bygges. + **Rullet ut live 2026-07-19**, bruker bekreftet eksplisitt, se eget + punkt lenger ned for punkt 2 (som ble bygget og rullet ut sammen med + disse tre i én utrulling). - **Punkt 2 (tee/kjønn) BYGGET OG SCRATCH-VERIFISERT (2026-07-19, ADR-029), samme dag, rett etter designavklaringen:** bruker bekreftet begge @@ -1886,10 +1899,13 @@ Ferdig og verifisert: avvist tydelig, bane-bytte til en bane MED matchende rating lykket. Ekte typesjekket produksjonsbuild av frontend kjørt på nytt og bekreftet etter blind draw-forenklingen. - **Ikke rullet ut ennå** — migrasjon 014 endrer EKTE produksjonsdata - (slår sammen Tjømes 8 tee-rader til 4), venter derfor på eksplisitt - brukerbekreftelse før den kjøres mot ekte `teecup_db`, sammen med de - tre andre fiksene (1/3/4) i samme utrulling. + **Rullet ut live 2026-07-19**, bruker bekreftet eksplisitt: migrasjon + 014 kjørt mot ekte `teecup_db` FØRST (Tjømes 8 tee-rader slått sammen + til 4 — bekreftet 0 brutte `match_participant.tee_id`-referanser + etterpå med en direkte spørring), deretter `docker compose up -d + --build teecup_api teecup_frontend` sammen med punkt 1/3/4 i samme + utrulling. Begge containere boot-et rent, `/health`/`dashboard` → 200, + `teeoff.no` upåvirket. Neste steg: 1. **Oppfølgingspunkt fra PWA-runden, eksplisitt notert på brukerens @@ -1902,10 +1918,8 @@ Neste steg: Rewrite/medlemsside-bugen (#2) er den mest presserende siden siden er helt utilgjengelig i dag. 3. **Alle fire nye hull (spillerliste, tee/kjønn-modell ADR-029, - tallvelger, hcp-scope-bug) er FIKSET OG SCRATCH-VERIFISERT** (se over) - — venter på utrullingsbekreftelse. Punkt 2 KREVER en ekte migrasjon - (`014_tee_gender_to_rating.sql`, endrer Tjømes tee-data) i tillegg til - kode-redeploy av begge containere. En liten, urelatert 500-krasj + tallvelger, hcp-scope-bug) er FIKSET OG LIVE** (se over, 2026-07-19, + migrasjon 014 kjørt mot ekte data). En liten, urelatert 500-krasj (stroke-innsending på bane uten hull) ble også funnet under verifiseringen, ikke fikset — egen, liten sak. 4. Fortsatt åpne beslutninger fra FEATURE_BACKLOG.md: kode-regenerering for diff --git a/FEATURE_BACKLOG.md b/FEATURE_BACKLOG.md index 9e0ac76..a886e17 100644 --- a/FEATURE_BACKLOG.md +++ b/FEATURE_BACKLOG.md @@ -551,6 +551,13 @@ (lavest kostnad) hvis en rask seier er ønskelig, eller med «Københavner» hvis en bredere individuell/felt-basert turneringstype uansett skal bygges først som fundament for de andre. +- **Ressurs, lagt til 2026-07-19:** brukeren har lastet opp tre PDF-er til + prosjektroten (`spilletyper-og-spilleformer-2023.pdf`, `Live Tourney _ A + Guide to Handicap Scoring in Golf for Tournaments.pdf`, `SCGA Club + Digest.pdf`) som til sammen skal gi en tydelig beskrivelse av hvordan HCP + og mottatte/tildelte slag beregnes/fordeles — les disse FØR design av + handicap-/slagfordelingslogikken for disse fire formatene, se CLAUDE.md + sin "Autoritative kilder"-seksjon. --- @@ -824,8 +831,7 @@ en reell skjemamigrasjon (`014_tee_gender_to_rating.sql`). Fikset: `roster`-listen FILTRERES nå ned til kun ledige spillere før den rendres, i stedet for å deaktivere valget. -2. **✅ FIKSET OG SCRATCH-VERIFISERT 2026-07-19 (ADR-029), IKKE ENNÅ RULLET - UT mot ekte data.** Brukeren presiserte at min opprinnelige forståelse +2. **✅ FIKSET OG LIVE 2026-07-19 (ADR-029).** Brukeren presiserte at min opprinnelige forståelse var feil: en golfbane har IKKE fysisk kjønnsdelte utslag — begge kjønn kan som regel spille fra ethvert utslag. Det eneste som faktisk varierer per kjønn er om klubben har VALGT å slope (rate) et gitt @@ -895,9 +901,15 @@ en reell skjemamigrasjon (`014_tee_gender_to_rating.sql`). **Designspørsmålene for punkt 2 er avklart** (bruker valgte det anbefalte alternativet på begge, se ADR-029 Beslutning B/C): helautomatisk tee-valg (ingen manuell kjønnsvelger), og "feil høyt" ved manglende kjønn/rating -(ingen stille fallback). Migrasjon 014 er skrevet og scratch-verifisert, -men IKKE kjørt mot ekte `teecup_db` ennå — venter på eksplisitt -brukerbekreftelse (endrer ekte Tjøme-data: slår sammen 8 tee-rader til 4). +(ingen stille fallback). Migrasjon 014 kjørt mot ekte `teecup_db` +2026-07-19, bruker bekreftet eksplisitt — Tjømes 8 tee-rader slått sammen +til 4, alle referanser intakte. + +**Alle fire punkter rullet ut live 2026-07-19**, bruker bekreftet +eksplisitt: migrasjon 014 + `docker compose up -d --build teecup_api +teecup_frontend`. Verifisert: `/health`/`dashboard` → 200, `teeoff.no` +upåvirket, 0 brutte `match_participant.tee_id`-referanser etter +sammenslåingen. ---