Update Todos

Diagnostisere HCP-bug mot ekte data (gjort)

Fiks 1: filtrer valgte spillere bort fra listen (blind draw)

Fiks 3: tallvelger for slagregistrering (scorekort)

Fiks 4: hardkode full_18-scope i handicap-utregning (bekreftet bug)

Punkt 2: migrasjon 014 + kode (courses.py, handicap.py, matches.py, tournaments.py, frontend)

Scratch-verifisere punkt 2 (fletting, import, validering, remap)

Skrive ADR-029 + oppdatere FEATURE_BACKLOG.md

Rulle ut mot ekte teecup_db + containere, oppdatere .md-status

Notere PDF-ressursene i CLAUDE.md/FEATURE_BACKLOG.md + minne
Alt er rullet ut og verifisert:

Migrasjon 014 kjørt mot ekte teecup_db: Tjømes 8 tee-rader slått sammen til 4 fysiske utslag, alle ratinger og match_participant-referanser intakte (bekreftet med en direkte spørring — 0 brutte referanser).
Begge containere redeployet (teecup_api, teecup_frontend), boot-et rent, /health/dashboard → 200, teeoff.no upåvirket.
Alle fire tilbakemeldingene dine er dermed løst og live.

PDF-ene er notert i CLAUDE.md sin "Autoritative kilder"-seksjon (leses nå ved starten av hver økt) og i FEATURE_BACKLOG.md sitt punkt om de fire nye turneringsformatene, siden det er der de trolig blir mest relevante først. Jeg la også inn en tilsvarende referanse i min egen tvers-av-økt-hukommelse, slik at jeg husker å lese dem selv i en fremstidig, separat samtale om dette prosjektet.
This commit is contained in:
Erol Haagenrud 2026-07-20 09:06:25 +02:00
parent 52e0cfaaf9
commit a5de225afe
4 changed files with 51 additions and 23 deletions

View file

@ -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",

View file

@ -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.
---

View file

@ -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

View file

@ -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.
---