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)
|
||||
|
||||
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
|
||||
teecup_frontend && up -d`, begge containere friske, rene logger.
|
||||
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
|
||||
> · 🔀 endret fra opprinnelig råd · 💤 utsatt (bevisst)
|
||||
>
|
||||
> Sist oppdatert: 2026-08-20 (funksjonelle hull funnet under design-
|
||||
> dokumentasjon-runden notert, se seksjonen nederst)
|
||||
> Sist oppdatert: 2026-08-21 (funksjonelle hull funnet under utskrift-
|
||||
> 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
|
||||
verdt en ADR, se rolletilpasning-punktet) -- ikke noe som bør fikses
|
||||
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