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:
parent
9d4b4de590
commit
a915fa7bc4
2 changed files with 120 additions and 2 deletions
22
CHANGELOG.md
22
CHANGELOG.md
|
|
@ -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.
|
||||||
|
|
|
||||||
|
|
@ -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).
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue