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
|
||||
containere friske, rene logger. `https://teecup.golf/health` 200
|
||||
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
|
||||
> · 🔀 endret fra opprinnelig råd · 💤 utsatt (bevisst)
|
||||
>
|
||||
> Sist oppdatert: 2026-08-22 (inkrementell deltaker-id/startnummer for
|
||||
> turneringer fanget opp, ikke designet -- se nederste seksjon)
|
||||
> Sist oppdatert: 2026-08-22 (full gap-analyse: scoring-paritet
|
||||
> 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
|
||||
datamodell/migrasjon designes -- ingen beslutninger tatt ennå, kun
|
||||
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