CHANGELOG/ADR-096/BACKLOG: logg for shotgun-start
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
parent
9f81797324
commit
30d009b490
3 changed files with 214 additions and 2 deletions
|
|
@ -9725,6 +9725,89 @@ faktisk radrekkefølge og `aria-sort`-tilstand for alle tre sykluser.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
## ADR-096: Shotgun-start bygget -- reverserer/utvider migrasjon 084s bevisste "IKKE shotgun" (2026-08-21)
|
||||||
|
|
||||||
|
Migrasjon 084 (2026-08-18) valgte BEVISST bort shotgun-start for
|
||||||
|
utslagsgrupper, etter en tre-spørsmål-avklaring med bruker den gang:
|
||||||
|
"TRADISJONELT utslag (samme starthull for alle, allerede rundens eget
|
||||||
|
start_hole -- ingen endring der), staggerte klokkeslett PER GRUPPE med
|
||||||
|
fast intervall -- IKKE shotgun (ulike hull samtidig)." Samme
|
||||||
|
begrensning fantes uavhengig på Cup-/lagformatets side (`session`/
|
||||||
|
`match`) fra migrasjon 006 av, aldri eksplisitt vurdert der.
|
||||||
|
|
||||||
|
Bruker, i forbindelse med planlegging av utskriftsklare startlister:
|
||||||
|
"Det må komme frem om det er Shotgun eller løpende start, med hvilket
|
||||||
|
hull man starter på. Sorteringen av startlisten gjøres etter
|
||||||
|
utslagsform (løpende = tidspunkt, shotgun = starthull)." Presentert to
|
||||||
|
alternativer (ekte støtte vs. kun utskrift-deko) -- bruker valgte ekte
|
||||||
|
støtte: "Bygg ekte shotgun-støtte nå."
|
||||||
|
|
||||||
|
**Endres eksplisitt her, ikke slettet fra historikken**: migrasjon 084
|
||||||
|
sin begrunnelse for å utelate shotgun den gang (unødvendig kompleksitet
|
||||||
|
for et behov som ikke forelå ennå) er fortsatt gyldig SOM BESKRIVELSE AV
|
||||||
|
DA -- dette er en bevisst UTVIDELSE når et nytt, konkret behov (utskrift)
|
||||||
|
gjorde det nødvendig, ikke en korrigering av en feil beslutning.
|
||||||
|
|
||||||
|
**Migrasjon 088** (samme text+CHECK-mønster som migrasjon 087, ikke en
|
||||||
|
ny `CREATE TYPE ... AS ENUM`):
|
||||||
|
- `tournament_round.start_mode` / `session.start_mode` -- 'consecutive'
|
||||||
|
(standard, UENDRET oppførsel) / 'shotgun'.
|
||||||
|
- `tournament_round_group.start_hole` / `match.start_hole` -- valgfritt,
|
||||||
|
KUN meningsfullt når forelderen er 'shotgun'. `NULL` for en
|
||||||
|
'consecutive'-runde/økt, som fortsatt bruker den delte
|
||||||
|
`start_hole`/`tee_interval_minutes`-modellen (uendret siden migrasjon
|
||||||
|
040/006).
|
||||||
|
|
||||||
|
**Klokkeslett-beregning** (`_compute_group_tee_time` i
|
||||||
|
individual_tournaments.py, `_compute_tee_time` i matches.py -- begge
|
||||||
|
utvidet identisk): shotgun = ALLE grupper/matcher går ut på ETT felles
|
||||||
|
tidspunkt (`scheduled_at`, uansett `sequence`) -- intervallet er
|
||||||
|
meningsløst i denne modusen (ulikt HULL, ikke ulikt klokkeslett). En
|
||||||
|
eksplisitt per-gruppe/per-match `tee_time_override` vinner fortsatt over
|
||||||
|
begge modiene (uendret unntaksmekanisme).
|
||||||
|
|
||||||
|
**Visningsrekkefølge**: løpende sorteres etter klokkeslett (allerede =
|
||||||
|
sequence-rekkefølgen for 'consecutive', ingen endring), shotgun sorteres
|
||||||
|
etter STARTHULL i stedet (ikke tildelt = sist, aldri først). Håndhevet
|
||||||
|
BÅDE i backend (`_fetch_round_groups`/`fetch_matches`) OG i frontend --
|
||||||
|
fant og rettet en reell bug under scratch-verifisering: begge
|
||||||
|
frontend-skjermene (`round-groups-panel.tsx`, `session-blind-draw.tsx`)
|
||||||
|
hadde en HARDKODET `.sort((a, b) => a.sequence - b.sequence)` som
|
||||||
|
overstyrte backendens shotgun-sortering fullstendig, uansett hva
|
||||||
|
serveren faktisk sendte. Rettet til å sortere etter starthull når
|
||||||
|
shotgun, sequence ellers -- gjelder nå også LOKALE, ulagrede endringer
|
||||||
|
(et nettopp justert starthull flytter gruppen i visningen umiddelbart,
|
||||||
|
ikke først ved neste lagring/reload).
|
||||||
|
|
||||||
|
**Frontend:**
|
||||||
|
- `round-groups-panel.tsx` (individuell, hånd-kodet fra før -- samme
|
||||||
|
mønster videreført, ikke sendt via V0): Løpende/Shotgun-veksler,
|
||||||
|
intervall-feltet skjules i shotgun, hver gruppe får et eget
|
||||||
|
starthull-tallfelt i stedet.
|
||||||
|
- `tournament-program.tsx` sin `EditSessionForm` (Cup, V0-bygget fra
|
||||||
|
før): samme veksler-mønster, øktens eget "Starthull"-felt skjules i
|
||||||
|
shotgun (blir per-match i stedet), sesjonslisten viser en tydelig
|
||||||
|
"Shotgun"/"Løpende start"-merkelapp.
|
||||||
|
- `session-blind-draw.tsx` (Cup, blind draw-trekningen): "Legg til
|
||||||
|
match" spør om starthull når økten er shotgun, vist på matchkortet
|
||||||
|
(før OG etter avsløring) i stedet for utslagstid.
|
||||||
|
|
||||||
|
**Testet, ikke bare gjennomgått:** 5 nye backend-tester
|
||||||
|
(`test_round_groups.py` for individuell, `test_shotgun_start_cup.py` for
|
||||||
|
Cup) -- felles tidspunkt uansett sequence, riktig sortering etter
|
||||||
|
starthull, override vinner fortsatt, regresjonsvern for at
|
||||||
|
'consecutive' er helt uendret. Alle 163 backend-tester grønne mot
|
||||||
|
scratch-database. Frontend verifisert i egen `tmp-preview`-rute som
|
||||||
|
monterer den EKTE `RoundGroupsPanel` med en stateful `window.fetch`-mock
|
||||||
|
(speiler faktisk server-oppførsel, ikke bare statiske svar) -- bekreftet
|
||||||
|
at veksling til shotgun skjuler intervall-feltet og viser starthull-felt
|
||||||
|
per gruppe, at et lokalt satt starthull REORDNER visningen umiddelbart
|
||||||
|
(fanget nettopp sorterings-bug-en over), og at lagring+reload beholder
|
||||||
|
riktig rekkefølge. `tsc --noEmit` rent på hele frontend-prosjektet.
|
||||||
|
Scratch-ruten slettet etterpå, bekreftet med `git status --short`.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
## Utviklingsplan (rekkefølge)
|
## Utviklingsplan (rekkefølge)
|
||||||
|
|
||||||
1. ✅ Land tenant-modell → **Organisasjon** (ADR-001/002/003)
|
1. ✅ Land tenant-modell → **Organisasjon** (ADR-001/002/003)
|
||||||
|
|
|
||||||
47
CHANGELOG.md
47
CHANGELOG.md
|
|
@ -13924,3 +13924,50 @@ Neste steg:
|
||||||
CHANGELOG), deretter `docker compose build teecup_api
|
CHANGELOG), deretter `docker compose build teecup_api
|
||||||
teecup_frontend && up -d`, begge containere friske, rene logger.
|
teecup_frontend && up -d`, begge containere friske, rene logger.
|
||||||
Ingen migrasjon.
|
Ingen migrasjon.
|
||||||
|
|
||||||
|
149. **Shotgun-start bygget, 2026-08-21 (ADR-096, migrasjon 088).**
|
||||||
|
Reverserer/utvider migrasjon 084 sitt bevisste "IKKE shotgun"-valg
|
||||||
|
fra 2026-08-18 -- oppdaget som et behov mens utskriftsklare
|
||||||
|
startlister ble planlagt: "Det må komme frem om det er Shotgun
|
||||||
|
eller løpende start, med hvilket hull man starter på. Sorteringen
|
||||||
|
av startlisten gjøres etter utslagsform." Bruker valgte ekte
|
||||||
|
støtte fremfor kun utskrift-deko.
|
||||||
|
|
||||||
|
Ny `start_mode` ('consecutive'/'shotgun') på BÅDE `tournament_round`
|
||||||
|
(individuell) og `session` (Cup) -- samme arkitektoniske hull fantes
|
||||||
|
uavhengig begge steder. Ny valgfri `start_hole` på
|
||||||
|
`tournament_round_group`/`match`, kun meningsfull i shotgun.
|
||||||
|
Shotgun: alle grupper/matcher går ut på ETT felles tidspunkt
|
||||||
|
(intervallet meningsløst i denne modusen), sortert etter STARTHULL i
|
||||||
|
stedet for klokkeslett. 'consecutive' er uendret oppførsel, ingen
|
||||||
|
regresjon.
|
||||||
|
|
||||||
|
**Reell bug funnet OG rettet under scratch-verifisering:** begge
|
||||||
|
berørte frontend-skjermene (`round-groups-panel.tsx`,
|
||||||
|
`session-blind-draw.tsx`) hadde en hardkodet
|
||||||
|
`.sort((a,b) => a.sequence - b.sequence)` som stille overstyrte
|
||||||
|
backendens shotgun-sortering, uansett hva serveren faktisk sendte --
|
||||||
|
ville vist grupper/matcher i FEIL rekkefølge for enhver shotgun-runde
|
||||||
|
hvis den ikke var fanget opp. Rettet til å sortere etter starthull
|
||||||
|
når shotgun (inkludert LOKALE, ulagrede endringer -- en nettopp
|
||||||
|
justert starthull flytter gruppen i visningen umiddelbart).
|
||||||
|
|
||||||
|
Frontend: `round-groups-panel.tsx` (individuell, hånd-kodet fra
|
||||||
|
før) fikk en Løpende/Shotgun-veksler + per-gruppe starthull-felt.
|
||||||
|
`tournament-program.tsx` sin `EditSessionForm` (Cup) fikk samme
|
||||||
|
veksler + en tydelig modus-merkelapp i øktlisten.
|
||||||
|
`session-blind-draw.tsx` fikk et starthull-felt ved "Legg til
|
||||||
|
match" i shotgun-modus, vist på matchkortet både før og etter
|
||||||
|
avsløring.
|
||||||
|
|
||||||
|
**Testet, ikke bare gjennomgått:** 5 nye backend-tester (felles
|
||||||
|
tidspunkt uansett sequence, riktig starthull-sortering, override
|
||||||
|
vinner fortsatt, regresjonsvern for uendret 'consecutive'-
|
||||||
|
oppførsel) -- alle 163 backend-tester grønne mot scratch-database.
|
||||||
|
Frontend verifisert i en `tmp-preview`-rute som monterer den EKTE
|
||||||
|
`RoundGroupsPanel` med en STATEFUL `window.fetch`-mock (speiler
|
||||||
|
faktisk server-oppførsel) -- nettopp DENNE testingen fanget opp
|
||||||
|
sorterings-bug-en over. `tsc --noEmit` rent. Scratch-ruten slettet
|
||||||
|
etterpå, bekreftet med `git status --short`.
|
||||||
|
|
||||||
|
**Ikke rullet ut ennå.**
|
||||||
|
|
|
||||||
|
|
@ -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-20 (funksjonelle hull funnet under design-
|
> Sist oppdatert: 2026-08-21 (funksjonelle hull funnet under utskrift-
|
||||||
> dokumentasjon-runden notert, se seksjonen nederst)
|
> planlegging notert -- hullengde, turneringslogo, bracket-format
|
||||||
|
> utsatt, shotgun-start under bygging -- se de to nederste seksjonene)
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
@ -4776,3 +4777,84 @@ runder (sannsynligvis flere -- de spenner fra rene UX-forbedringer
|
||||||
til det som kan være en reell autorisasjons-/synlighets-beslutning
|
til det som kan være en reell autorisasjons-/synlighets-beslutning
|
||||||
verdt en ADR, se rolletilpasning-punktet) -- ikke noe som bør fikses
|
verdt en ADR, se rolletilpasning-punktet) -- ikke noe som bør fikses
|
||||||
alle på én gang.
|
alle på én gang.
|
||||||
|
|
||||||
|
## Funksjonelle hull funnet under "utskrift av turneringsdokumenter"-planlegging (2026-08-21) — 📋 delvis notert, delvis under bygging
|
||||||
|
|
||||||
|
**Kontekst:** bruker ba om V0-prompter for utskriftsklare startlister/
|
||||||
|
resultatlister/cart-tags/scorekort (PDF, A4/Letter + A3/A2 for Cup-
|
||||||
|
startlister). Undersøkt FØR promptene ble skrevet, for å unngå å designe
|
||||||
|
utskrift for felt/formater som ikke faktisk finnes ennå. Tre reelle hull
|
||||||
|
funnet; bruker har eksplisitt tatt stilling til alle tre (se hver):
|
||||||
|
|
||||||
|
- **Hullengde finnes ikke i datamodellen.** Verken `hole` (org-scopet,
|
||||||
|
brukt av turneringer), `personal_course_hole` eller
|
||||||
|
`golfapi_course_hole` har noen lengde-/avstandskolonne -- kun `par`
|
||||||
|
og `stroke_index`. Verken `golfapi_client.py` eller `teeoff_client.py`
|
||||||
|
henter/lagrer noe lengdefelt fra kildene i dag heller (uklart om
|
||||||
|
kildene faktisk TILBYR det uten videre, eller om det må legges inn
|
||||||
|
manuelt). Trengs for scorekort-utskrift (bruker: "Hullets lengde må
|
||||||
|
med"). **💤 Utsatt** -- mockes med plausible tall i selve V0-
|
||||||
|
utskriftsprompten (`v0-prompt-print-scorecard.md`), ekte
|
||||||
|
datamodell-utvidelse (ny kolonne + evt. import-kilde-sjekk) er en
|
||||||
|
egen, senere oppgave før feltet kan vise ekte tall.
|
||||||
|
- **Ingen dedikert turneringslogo finnes.** `tournament.hero_image_key`
|
||||||
|
(migrasjon 009) er et BREDT banner-bilde til presentasjonsfanen, ikke
|
||||||
|
egnet som en kompakt logo i en utskrift-topptekst. Sponsor-logoer
|
||||||
|
finnes (samme migrasjon) men er et annet konsept (sponsor, ikke
|
||||||
|
arrangør). Trengs på alle fire utskriftstyper (bruker: "Turneringslogo
|
||||||
|
(om den ikke eksisterer bruker vi TeeCup sin)"). **💤 Utsatt** --
|
||||||
|
mockes i V0-promptene, ekte `tournament.logo_key`-felt (+ fallback til
|
||||||
|
TeeCups egen logo) er en egen, senere oppgave.
|
||||||
|
- **128-spiller individuell utslagsturnering ("Sommercup"-stil,
|
||||||
|
single-elimination bracket) finnes ikke som turneringsform i det hele
|
||||||
|
tatt.** Appen har i dag KUN to-lag Ryder Cup-formatet (arkitektur-
|
||||||
|
invariant, CLAUDE.md: "v1 = nøyaktig to lag ... Match-modellen holdes
|
||||||
|
generell (to sider) så knockout/flere lag kan komme senere" -- aldri
|
||||||
|
bygget, kun forberedt for). Ingen runde-for-runde-parring/
|
||||||
|
vinner-videreføring-logikk finnes. **💤 Utsatt, bevisst.** Bruker
|
||||||
|
eksplisitt valgt: skip bracket-utskrift denne runden, kun de
|
||||||
|
formatene som faktisk finnes (individuell + to-lag Cup) dekkes av
|
||||||
|
utskriftsprompt-runden. Bracket-turneringsformen tas opp som egen,
|
||||||
|
betydelig oppgave (parring/videreføring/UI) FØR noen utskrift for
|
||||||
|
den designes.
|
||||||
|
- **Shotgun-start finnes ikke** (`tournament_round`/`tournament_round_
|
||||||
|
group` for individuelle turneringer, `session`/`match` for Cup-
|
||||||
|
format -- SAMME arkitektoniske begrensning begge steder: ett delt
|
||||||
|
starthull for HELE runden/økten, kun staggerte klokkeslett PER
|
||||||
|
gruppe/match, ingen forskjellig starthull per gruppe/match).
|
||||||
|
Individuell-siden ble dette BEVISST valgt bort i migrasjon 084
|
||||||
|
(2026-08-18, tre-spørsmål-avklaring med bruker den gang). Bruker denne
|
||||||
|
runden: "Det må komme frem om det er Shotgun eller løpende start...
|
||||||
|
Sorteringen av startlisten gjøres etter utslagsform." **✅ BYGGET
|
||||||
|
2026-08-21** (migrasjon 088, ADR-096) -- se ARCHITECTURE_DECISIONS.md
|
||||||
|
for full detalj, ikke gjentatt her.
|
||||||
|
|
||||||
|
## Idé, ikke spesifisert: påminnelser + tilbakemeldings-"kartotek" under en runde (2026-08-21) — 📋 fanget, ikke designet
|
||||||
|
|
||||||
|
Bruker: "Jeg vil brukeren skal få spørsmål om han vil bli påminnet
|
||||||
|
nødvendige ting som å huske å drikke (og spise), huske rutinene sine og
|
||||||
|
andre gode poenger gjennom golfrunden. Kanskje vi også skulle
|
||||||
|
implementert et kartotek med tilbakemeldinger av ymse slag som popper
|
||||||
|
opp når spilleren registerer en score på et hull eller etter en
|
||||||
|
fullført runde eller etter en turnering?" To atskilte idéer, ingen av
|
||||||
|
dem designet i detalj ennå:
|
||||||
|
|
||||||
|
1. **Under-runde-påminnelser** -- spørre brukeren (trolig ved
|
||||||
|
rundestart, eller i profil-/innstillinger) om de vil ha periodiske
|
||||||
|
varsler under en pågående runde for ting som lett glemmes: drikke
|
||||||
|
vann, spise, egne faste rutiner/sjekklister. Uavklart: varslings-
|
||||||
|
mekanisme (push-varsel? in-app-banner?), frekvens/trigger
|
||||||
|
(tidsintervall? etter hvert hull?), hvor dette konfigureres, om det
|
||||||
|
er en global brukerinnstilling eller per-runde-valg.
|
||||||
|
2. **Tilbakemeldings-"kartotek"** -- en samling ferdigskrevne
|
||||||
|
tips/tilbakemeldinger som kan poppe opp kontekstuelt: ved
|
||||||
|
score-registrering på et hull, etter fullført runde, eller etter
|
||||||
|
fullført turnering. Uavklart: hva slags innhold (motiverende?
|
||||||
|
teknisk/instruktivt? statistikk-baserte observasjoner om spillerens
|
||||||
|
eget spill?), triggerlogikk (tilfeldig? regelbasert ut fra
|
||||||
|
score/statistikk?), om det er redigerbart av organisator/klubb eller
|
||||||
|
fast levert av TeeCup.
|
||||||
|
|
||||||
|
**Neste steg:** begge idéene trenger en egen avklaringsrunde med bruker
|
||||||
|
FØR design/bygging -- ingen beslutninger tatt ennå, kun fanget opp her
|
||||||
|
for å ikke gå tapt.
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue