Skriv ned full gap-analyse for scoring-paritet (frittstående vs. org-turnering)

Erstatter den tidligere kun-muntlige "8-punktslisten" (referert i
ADR-099/100 men aldri committet noe sted) med en grundig, kodeverifisert
liste over 8 gjenstående gap + 1 i motsatt retning, i FEATURE_BACKLOG.md.
Ren dokumentasjon -- ingen kode endret.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
Erol Haagenrud 2026-08-22 05:49:27 +02:00
parent 9d4b4de590
commit a915fa7bc4
2 changed files with 120 additions and 2 deletions

View file

@ -14381,3 +14381,25 @@ Neste steg:
`docker compose build teecup_api teecup_frontend && up -d`, begge `docker compose build teecup_api teecup_frontend && up -d`, begge
containere friske, rene logger. `https://teecup.golf/health` 200 containere friske, rene logger. `https://teecup.golf/health` 200
etter utrulling. etter utrulling.
159. **Gap-analyse skrevet ned: scoring-paritet frittstående runde vs.
org-turnering, 2026-08-22 -- ren dokumentasjon, ingen kode.** Bruker
ba om at den tidligere "avtalte 8-punkts parity-rekkefølgen" (nevnt
kun muntlig, referert i ADR-099/100) ble gjort grundig på nytt og
denne gangen faktisk skrevet ned, siden listen aldri ble committet
til noen fil -- et hull i egen dokumentasjonsdisiplin (CLAUDE.md-
regelen om å holde disse filene oppdatert er noe JEG må huske å
gjøre når arbeid fullføres, ikke en automatisk mekanisme). Grundig
kodesøk (Explore-agent) sammenlignet `round-detail.tsx`/`rounds.py`
mot `individual-tournament-detail.tsx`/`individual_tournaments.py`
på tvers av åtte konkrete kandidat-funksjoner (offline-kø, live
push, stats-dashboard, full flerspiller-scorekort-grid, "plukket
opp"-knapp, GPS-skuddmåling, kommentartråd, tilskuer-metrikkveksling)
pluss én i motsatt retning (print/eksport). Bekreftet at ADR-099/
100/101 samt rangefinder (ADR-064), Flagg-GPS (ADR-066) og kombinert
hull-historikk (ADR-071) allerede er reell paritet og ikke skal
fanges opp på nytt. Full liste, med filnavn/antatt størrelse per
punkt, skrevet inn i FEATURE_BACKLOG.md ("Scoring-paritet:
frittstående runde vs. org-turnering") -- erstatter den tidligere
muntlige listen. Ingen prioritering/bygging startet -- venter på at
bruker velger rekkefølge blant punktene.

View file

@ -7,8 +7,9 @@
> Status-koder: ✅ ferdig · 🔨 pågår · 📋 planlagt/fanget · ❓ trenger beslutning > Status-koder: ✅ ferdig · 🔨 pågår · 📋 planlagt/fanget · ❓ trenger beslutning
> · 🔀 endret fra opprinnelig råd · 💤 utsatt (bevisst) > · 🔀 endret fra opprinnelig råd · 💤 utsatt (bevisst)
> >
> Sist oppdatert: 2026-08-22 (inkrementell deltaker-id/startnummer for > Sist oppdatert: 2026-08-22 (full gap-analyse: scoring-paritet
> turneringer fanget opp, ikke designet -- se nederste seksjon) > frittstående runde vs. org-turnering, erstatter den tidligere kun-
> muntlige "8-punktslisten" -- se nederste seksjon)
--- ---
@ -4923,3 +4924,98 @@ Uavklart, trenger en egen designrunde FØR bygging:
regler, HCP-bryterens eksakte oppførsel, hvor id-en skal vises) FØR regler, HCP-bryterens eksakte oppførsel, hvor id-en skal vises) FØR
datamodell/migrasjon designes -- ingen beslutninger tatt ennå, kun datamodell/migrasjon designes -- ingen beslutninger tatt ennå, kun
fanget opp her for å ikke gå tapt. fanget opp her for å ikke gå tapt.
## Scoring-paritet: frittstående runde vs. org-turnering (2026-08-22) — 📋 fanget, delvis planlagt
Bruker: "Jeg ønsker at opplevelsen skal være tilnærmet identisk, enten
du fører score i en individuell runde, eller om du fører for deg eller
flighten din i en org-turnering." Dette punktet ble opprinnelig avtalt
muntlig som en "8-punkts parity-rekkefølge" (referert i ADR-099/ADR-100)
uten at listen selv noensinne ble skrevet ned ordrett i noen fil -- et
hull i egen dokumentasjonsdisiplin. Denne seksjonen ERSTATTER den
muntlige listen med en fullstendig, gjenfunnet og verifisert
gap-analyse (grundig kodesøk 2026-08-22, ikke bare hukommelse).
**Allerede bygget (ikke fang opp på nytt):** flight/gruppe-scoping i
ScoreTab (ADR-099), kjedet flerspiller hull-for-hull-scoring (ADR-100),
hull-for-hull-utvidelse i den autentiserte leaderboarden for slagspill/
netto/Stableford (ADR-101), rangefinder/avstand-til-flagg (ADR-064,
begge flyter), GPS-"plant flagg" for Flagg-formatet (ADR-066, begge
flyter), kombinert frittstående+turnering hull-historikk (ADR-071).
**Gjenstående gap, rangert etter antatt størrelse/verdi (frittstående
runde HAR, org-turnering MANGLER, om ikke annet er sagt):**
1. **Offline-kø for score-føring.** `round-detail.tsx` (og
`session-scorecard.tsx` for lag-kamper) bruker `frontend/lib/
offline-queue.ts` (IndexedDB, ADR-028) ved tapt nett. `ScoreTab`/
`individual-tournament-detail.tsx` har INGEN referanse til denne
koen i det hele tatt -- mister score ved dårlig dekning på banen.
Antatt **liten** jobb: biblioteket er allerede generisk (bevist ved
at lag-kamper bruker det), ingen backend-endring, kun kabling rundt
PATCH-kallet i ScoreTab.
2. **Sanntidsoppdatering (live push) i den autentiserte scorings-/
leaderboard-visningen.** `round-detail.tsx` åpner en websocket
(`/ws/rounds/{roundId}/live`) og oppdaterer automatisk når andre i
flighten fører score. `individual-tournament-detail.tsx` har ingen
websocket-abonnement -- kun egen-utløst refresh. Backenden
kringkaster allerede (`broadcast_live_update` i
`individual_tournaments.py`), men kun til den OFFENTLIGE
tilskuersiden, ikke den autentiserte. Antatt **liten/middels**.
3. **Personlig stats-dashboard ekskluderer turneringsrunder helt.**
`/rounds/stats/summary`-spørringen (`rounds.py`) leser KUN
`round_participant`/`round_hole` -- `tournament_round_participant`/
`tournament_round_hole` er aldri med. En spillers GIR%/putting/
fairway-trender fra org-turneringer vises aldri i eget stats-bilde,
og org-turneringer har ingen egen tilsvarende endepunkt/side i det
hele tatt. Antatt **middels/stor** -- ekte datamodell-brobygging
(avstemme `stat_level`-forskjeller), ikke bare gjenbruk av UI.
4. **"Vis hele scorekortet" i ScoreTab viser IKKE alle spillere
samtidig.** Frittstående runde sin `ScorecardGrid` er en ekte
alle-spillere×alle-hull-matrise. Org-turneringens likt navngitte
toggle gjenbruker bevisst kun det eksisterende ett-spiller-`HoleGrid`
(kommentar i koden bekrefter dette var en villet avgrensning den
gang, ikke en forglemmelse) -- bytter kun HVEM som vises, viser aldri
alle på én gang. Antatt **middels** -- kjedet scoring (ADR-100) henter
allerede alle flightmedlemmers hull parallelt, så data finnes.
5. **"Plukket opp"-hurtigknapp finnes ikke for turneringer, selv der
Stableford er scoringsmetoden.** `round_hole.picked_up` (migrasjon
038) + knapp finnes i frittstående runder. `tournament_round_hole`
har ingen tilsvarende kolonne, `TournamentScoringWizard` ingen
tilsvarende knapp. Antatt **middels** -- ny migrasjon + backend-speil
av eksisterende capping-logikk (`max_hole_score_for_handicap`).
6. **Slag-for-slag GPS-avstandsmåling (skuddlengde + kølle) kun i
frittstående runder.** `round_shot`-tabellen/`ShotMeasurementEntry`
(ADR-048) har ingen tilsvarende i `individual_tournaments.py`/
`individual-tournament-detail.tsx`. IKKE forveksle med rangefinder
eller Flagg-GPS (begge allerede bygget begge steder, se over). Antatt
**middels/stor** -- `round_shot`s eierskap er i dag kablet til
frittstående-runde-XOR-en (ADR-048 Beslutning C), ekte backend-arbeid.
7. **Kommentarfelt/tråd på runden finnes ikke for turneringsrunder.**
`<RoundMessages>` (ADR-044, med bilde-vedlegg + offline-kø + push) er
kun koblet til `round_id`. Ingen tilsvarende i den autentiserte
turneringsvisningen. Antatt **middels** -- UI-komponenten er stort
sett gjenbrukbar, men trenger enten en ny `tournament_round_message`-
tabell eller en generalisering av eierskapsmodellen.
8. **Tilskuer-metrikkveksling (brutto/netto/Stableford/poeng) finnes kun
for frittstående runder.** `round-leaderboard.tsx` sin `MetricToggle`
har ingen motpart i `stroke-play-leaderboard.tsx` (som eksplisitt har
en "eksakt kontrakt -- ikke endre" på `LeaderboardRow`, ADR-101).
Antatt **middels** -- må legges til additivt for å ikke bryte den
kontrakten.
**Gap i motsatt retning (org-turnering HAR, frittstående MANGLER) --
lavere prioritet per brukerens uttalte fokus, men notert for
fullstendighet:**
9. **Print/eksport.** Org-turneringer har en full utskriftspakke
(kart-lapper/resultatliste/startliste/scorekort, ADR-097).
Frittstående runder har ingen print/eksport-affordance i det hele
tatt. Antatt **liten/middels** -- kan trolig gjenbruke
`print-scorecard.tsx`s tilnærming for én enkelt frittstående runde.
**Neste steg:** bruker prioriterer rekkefølge blant punktene 1-8 (og
avgjør om punkt 9 skal tas med i samme runde eller utsettes). Ingen
bygging startet på noen av disse ennå -- denne seksjonen er kun
gap-fangst, ikke et design. Når et punkt velges, skriv en egen ADR før
bygging (samme mønster som ADR-099/100/101).