Rydd opp seks stale "ikke bygget"-seksjoner i FEATURE_BACKLOG.md

Full gjennomgang av hele filen (4457 linjer) etter brukerspørsmål om
alt arbeid faktisk var dokumentert. Internasjonale baner, individuelle
turneringer sin rulle-ut, PWA-ikon, push-varsler, dashboard-forslaget
og Flaggturnering sin GPS-kobling var alle markert "ikke bygget" selv
om de er levert og live — hver rettet med et eksplisitt
RETTELSE-avsnitt, historikken beholdt uendret under. Ren
dokumentasjonsendring, ingen kode rørt.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
Erol Haagenrud 2026-08-14 07:53:20 +02:00
parent 0f0ddca7f4
commit 25c6056e76
2 changed files with 107 additions and 30 deletions

View file

@ -11028,3 +11028,42 @@ Neste steg:
**Rullet ut 2026-08-14** (flere delrunder samme kveld/natt, spenner
over datogrensen) -- ren backend-endring, ingen ny migrasjon,
`docker compose build teecup_api && up -d teecup_api` hver gang.
81. **FEATURE_BACKLOG.md-gjennomgang: hele filen (4457 linjer) lest linje
for linje, seks stale "ikke bygget"-seksjoner rettet — 2026-08-14.**
Bruker spurte om alt arbeid siste dager faktisk var registrert i
.md-filene (foranlediget av at punkt 80 over nesten ble glemt
committet, se dét punktets historie) — svaret utvidet seg til et
ønske om å gå gjennom hele `FEATURE_BACKLOG.md` for glemte/utdaterte
punkter. Full, systematisk gjennomgang (ikke stikkprøver) skilte
reelt åpne oppgaver (15 punkter, bl.a. Bøtekasse, per-hull-historikk,
OOM sin eclectic-/lag-/offentlig-visning, scramble-mot-enkeltspiller
for org-lagturneringer, det nyoppdagede `played_at`-klokkeslett-hullet)
fra seks steder der filen selv var stale (markert "ikke bygget" på
noe som faktisk var levert, bare uten oppdaterings-notat):
- **Internasjonale baner** — foreslo GolfAPI.io presist, som senere
faktisk ble valgt og bygget som ADR-064/065 (Tjøme/Larvik/Nesbyen,
live). Den klart viktigste av de seks.
- **Individuelle turneringer** — siste notat sa "ikke rullet ut mot
ekte teecup_db", men migrasjon 040 er bekreftet live (verifisert
direkte mot skjemaet) -- må ha blitt rullet ut et sted mellom
2026-07-30 og 2026-08-04 (Order of Merit, migrasjon 055, forutsetter
det) uten at et eget "rullet ut"-notat noensinne ble skrevet.
- **PWA-app-ikon** — merket "MIDLERTIDIG, skal erstattes senere";
et ekte ikon ble designet og rullet ut som ADR-055 2026-08-10.
- **Push-varsler** — en tidlig, isolert "📋 planlagt"-linje som aldri
ble fjernet etter at en egen, senere seksjon i samme fil bygde og
rullet ut hele varsel-systemet (in-app + push) 2026-07-28.
- **Dashboard-blokkforslaget** — merket "IKKE BYGGET", men bekreftet
bygget nesten ordrett i `dashboard.tsx` (samme dag, som del av
ADR-035) -- rekkefølgen i filen ga bare et misvisende inntrykk.
- **Flaggturnering sin GPS-kobling** — noterte en avhengighet til GPS
som senere ble bygget (ADR-048/064); selve formatet var allerede
live, kun GPS-posisjon-ved-siste-slag-ideen er fortsatt åpen.
Hver rettelse skrevet som et eksplisitt **RETTELSE**-avsnitt (samme
disiplin filen selv allerede etablerte andre steder, f.eks.
"RETTELSE 2026-08-03" i turneringsformat-seksjonen) -- historikken
under hver rettelse er beholdt uendret, ikke slettet. `Sist
oppdatert`-datoen øverst i filen (stod på 2026-07-17) rettet
tilsvarende. Ingen kodeendring, ren dokumentasjonsopprydding.

View file

@ -7,7 +7,8 @@
> Status-koder: ✅ ferdig · 🔨 pågår · 📋 planlagt/fanget · ❓ trenger beslutning
> · 🔀 endret fra opprinnelig råd · 💤 utsatt (bevisst)
>
> Sist oppdatert: 2026-07-17
> Sist oppdatert: 2026-08-14 (stale-opprydding — seks seksjoner rettet
> til å reflektere faktisk levert status, se CHANGELOG.md samme dato)
---
@ -473,8 +474,10 @@
team_a/team_b i én match — riktig total og per-økt-delsum likevel.
### Push-varsler
- **Status:** 📋 planlagt (infrastruktur)
- «BREAKING: X vant matchen». PWA push. Egen infrastruktur-bit.
- **Status:** ✅ HELT FERDIG 2026-07-28 — se "Varsler: push til telefon +
in-app varslingssenter" lenger ned i denne filen for full detalj. Denne
linjen var et tidlig notat som aldri ble fjernet da resten ble bygget
(stale-opprydding 2026-08-14).
### Sanntid (WebSockets)
- **Status:** ✅ HELT FERDIG, LIVE 2026-07-19 (ADR-025 + ADR-027). Koblet
@ -563,12 +566,17 @@
flagget" der siste slag ble brukt). **Konkret krav fra bruker, eksplisitt
formulert:** en visning som viser GJENSTÅENDE slag for spilleren,
oppdatert etter hvert spilte hull (nedtelling, ikke bare et sluttall).
**Fremtidig idé, uttrykkelig betinget av at GPS er integrert i appen
først** (se GPS/avstandsmåling-notatet lenger opp i denne filen, ADR-033-
seksjonen — samme avhengighet): bruk GPS til å markere/registrere HVOR på
banen spilleren faktisk endte opp når slagene tok slutt, ikke bare hvilket
hull. Ingen datamodell eller UI designet ennå for noen del av dette —
rent notat.
**Fremtidig idé, opprinnelig betinget av at GPS ble integrert i appen
først:** bruk GPS til å markere/registrere HVOR på banen spilleren
faktisk endte opp når slagene tok slutt, ikke bare hvilket hull.
**Selve Flaggturnering-formatet ER bygget og live** (se "2026-07-30:
alle åtte formater" lenger ned i denne filen — `flag_result`-motoren,
hull-granularitet). **GPS-avhengigheten er også borte** — GPS/
avstandsmåling ble bygget 2026-08-10/12 (ADR-048 slag-for-slag-måling,
ADR-064 rangefinder til grønn) — men selve GPS-posisjon-ved-siste-slag-
ideen spesifikt for Flaggturnering er fortsatt ikke designet/bygget
(stale-opprydding 2026-08-14: kun avhengigheten er avklart, ikke
funksjonen selv).
- **Ingenting av dette er designet eller bygget ennå** — kun fanget her slik
at det ikke går i glemmeboken. Naturlig neste steg når dette tas fatt på:
@ -920,12 +928,18 @@ ikke sirkel/firkant som `round-scorecard.tsx` sin `ScoreMark`) ble også
funnet og rettet samme runde. Se CHANGELOG.md 2026-07-30 for full
verifiseringsdetalj (håndregnet HCP-kryssjekk, databasebekreftet
persistens, full opprett-ny-turnering-flyt testet fra bunnen).
**IKKE rullet ut mot ekte systemer ennå** — venter på brukerens
eksplisitte bekreftelse (se CLAUDE.md for full detalj og utrullingsplan).
**IKKE rullet ut mot ekte `teecup_db` ennå** -- venter på brukerens
eksplisitte bekreftelse (migrasjon 040 + redeploy av `teecup_api`), per
CLAUDE.md sin ufravikelige regel.
**RETTELSE 2026-08-14 — de to linjene under var stale, aldri oppdatert
etter utrulling.** Migrasjon 040 er bekreftet live i ekte `teecup_db`
(`tournament.format_type`/`scoring_method` finnes i produksjonsskjemaet
med begge CHECK-constraints, verifisert direkte 2026-08-14). Individuelle
turneringer må ha vært rullet ut en gang mellom 2026-07-30 og 2026-08-04
— Order of Merit (migrasjon 055, se eget punkt lenger ned) forutsetter at
individuelle turneringer allerede er live, og ble selv bekreftet
"BYGGET, SCRATCH-/BROWSERVERIFISERT OG LIVE 2026-08-04". Denne seksjonen
fikk aldri sitt eget "rullet ut"-notat da det skjedde — historikken under
er beholdt uendret, kun disse to linjene er korrigert:
~~IKKE rullet ut mot ekte systemer ennå~~ / ~~IKKE rullet ut mot ekte
`teecup_db` ennå~~ → **✅ rullet ut, live siden senest 2026-08-04.**
---
@ -2184,13 +2198,26 @@ sammenslåing eller rekkefølge-endring i en senere runde.
---
### Internasjonale baner (utenfor Norge) — 📋 NOTERT, IKKE designet/bygget (research 2026-08-03)
### Internasjonale baner (utenfor Norge) — ✅ BYGGET OG LIVE 2026-08-12, se ADR-064/ADR-065 (research 2026-08-03)
**RETTELSE 2026-08-14 — denne seksjonen var stale, aldri oppdatert etter
bygging.** Researchen under viste seg presis: GolfAPI.io ble faktisk
valgt (nøyaktig leverandøren anbefalt her) og bygget som **ADR-064**
(GolfAPI.io som tredje banekilde, delt cache-lag, kopier-inn i BEGGE
banemodeller) — Tjøme Golfklubb, Larvik Golfklubb (Seasidebanen) og
Nesbyen/Nesfjellet Golfklubb er alle importert og live i produksjon
(sistnevnte med 124 manuelt registrerte GPS-koordinater, siden GolfAPI
selv manglet koordinatdata for akkurat den banen — se ADR-064-tillegget
2026-08-13). Rangefinder til grønn (avstand front/midt/bak) er koblet inn
for frittstående runder. Researchen under er beholdt uendret som historisk
kontekst for HVORFOR GolfAPI.io ble valgt — les den som bakgrunn, ikke som
en gjenstående plan.
Brukeren undersøkte (i en ekstern Gemini-samtale, ikke denne økten — notert
her for å fange retningen før den glemmes, samme rutine som Order of
Merit-notatet over) hvordan TeeCup kan støtte baner utenfor Norge, siden
`teeoff_db` (ADR-004/ADR-019) kun dekker norske baner. Ingen kode skrevet,
ingen ADR-runde startet ennå — dette er et fremtidig, ikke-akutt behov,
ingen ADR-runde startet ennå — dette var et fremtidig, ikke-akutt behov,
relevant når/hvis TeeCup faktisk kommersialiseres og får brukere utenfor
Norge (se `teecup.golf`-domeneplanen, kjøpt med sikte på at TeeCup etter
hvert flytter dit fra `teecup.teeoff.no`).
@ -2229,17 +2256,17 @@ uten koordinater/5 995€ med, «Europa»/«USA»/«Asia-Pacific+Africa» hver
1 995€/2 995€. CSV gir 6 måneders oppdateringstilgang, deretter 20% av
opprinnelig pris per år for videre oppdateringer.
**Bevisst utsatt, naturlig neste steg NÅR dette skal bygges:** en liten
ADR (samme mønster som ADR-019) som dekker (1) ny `course.source`-verdi +
migrasjon, (2) `app/golfapi_client.py` sitt kontraktsformat + enhets-
konvertering (advarsel fra research: amerikanske kilder returnerer ofte
yards, må konverteres til meter FØR lagring — `hole`/`tee_rating`-
tabellene har ingen enhets-diskriminator i dag), (3) hvordan bane-søket i
frontend (samme to-felts-forvirring som teeoff-søket over, se det åpne
punktet rett over) skal skille "søk norske baner (teeoff)" fra "søk
internasjonale baner (golfapi.io)" — trolig ett samlet søkefelt med
landkode-basert ruting internt, ikke to synlige knapper. Ikke noe hastverk
— ingen brukere utenfor Norge ennå.
**Opprinnelig "neste steg"-plan, alle tre punkter nå avklart/bygget under
ADR-064/065 (2026-08-12/13):** (1) `course.source='international'` +
`external_course_ref` (org-siden) / `personal_course.external_golfapi_
course_id` (global) — ikke én ny verdi i ett skjema, men et kopier-inn i
BEGGE eksisterende banemodeller (ADR-064 Beslutning B, bekreftet med
bruker). (2) `app/golfapi_cache.py` (ikke `golfapi_client.py` som
opprinnelig navngitt her — client/cache-lagene ble delt i to, se ADR-064)
håndterer enhets-/datakvalitet-defensivt, inkl. en reell tomme-strenger-
i-stedet-for-null-bug funnet og fikset 2026-08-13. (3) Søkefeltet ble ETT
samlet felt akkurat som antatt her — "Fant ikke banen? Søk internasjonalt
(GolfAPI)"-lenke fra det vanlige egen-bane-søket, ikke to synlige knapper.
---
@ -2886,7 +2913,18 @@ tom-skjermens endelige form kan bestemmes.
---
### 2026-07-25 — avhengigheten er løst, konkret forslag lagt frem (📋 DESIGNET, IKKE BYGGET)
### 2026-07-25 — avhengigheten er løst, konkret forslag lagt frem — ✅ BYGGET (RETTELSE 2026-08-14)
**RETTELSE 2026-08-14 — "📋 DESIGNET, IKKE BYGGET" var stale.** Blokk-
forslaget under (Hurtighandlinger/Kommende runder/Kommende turneringer/
Statistikk/Spilte baner/Venner/Organisasjoner) er bygget nesten ordrett —
bekreftet direkte i `frontend/components/dashboard.tsx`, som har egne
seksjoner for nøyaktig disse syv blokkene i samme rekkefølge (bygget som
del av ADR-035, samme dag forslaget ble skrevet). Denne seksjonens egen
tidsstempel ga inntrykk av at forslaget fortsatt lå ubygget da resten av
filen (linje ~2830) allerede sa "✅ HELT FERDIG (bygget som ADR-035, live
2026-07-25)" — samme dags rekkefølge i filen var bare forvirrende, ikke
en reell uenighet.
Frittstående runder (ADR-033) er nå ferdig bygget (backend+frontend, alle
oppfølgingsrunder), så blokkeringen over er borte. Brukeren reiste samtidig
@ -3990,7 +4028,7 @@ Full design i ARCHITECTURE_DECISIONS.md ADR-028. Kort:
| Del | Status | Notat |
|---|---|---|
| Installerbar app (manifest + ikoner + «Legg til på hjemskjerm») | ✅ bygget | `app/manifest.ts` (Next.js sin innebygde manifest-generator), `components/sw-register.tsx`, `appleWebApp`-metadata for iOS. |
| Ikoner | ✅ bygget, **MIDLERTIDIG** | Enkelt grønt golf-flagg generert programmatisk (`public/icons/*`, `public/apple-icon.png`) — **skal erstattes med ekte design senere.** Erstattet samtidig den gamle v0.app-plassholderlogoen som lå i `apple-icon.png` fra før (var aldri TeeCup-merkevare). |
| Ikoner | ✅ **ERSTATTET MED EKTE DESIGN 2026-08-10** | Opprinnelig et enkelt, midlertidig grønt golf-flagg generert programmatisk. Erstattet med et ekte app-ikon (ball/pokal/tee-motiv, full-bleed) — se ADR-055 i ARCHITECTURE_DECISIONS.md (inkl. en korrigeringsrunde etter en reell tegnefeil i første forsøk). Denne raden var stale frem til 2026-08-14-oppryddingen. |
| Service worker: cache app-navigasjon + `/orgs/*`-GET-er | ✅ bygget | `public/sw.js`, nettverk-først/cache-fallback (bevisst IKKE stale-while-revalidate, se ADR-028). `public/offline.html` som siste utvei. |
| Offline scoreregistrering (hole-scores/hole-results) | ✅ bygget | `lib/offline-queue.ts` (IndexedDB-kø) + `components/session-scorecard.tsx`. Synker automatisk ved `window`s `online`-event, pluss manuell "Synkroniser nå"-knapp. Bevisst IKKE Background Sync API (iOS Safari støtter den ikke). |
| Andre skrivehandlinger offline (walkover, chat/feed, oppsett) | 💤 bevisst utenfor omfang | Kun de to scoreregistrerings-endepunktene er køet — se ADR-028 Beslutning B for begrunnelse per type. |