From 25c6056e767209923d0a7849536efb635a546590 Mon Sep 17 00:00:00 2001 From: Erol Haagenrud Date: Fri, 14 Aug 2026 07:53:20 +0200 Subject: [PATCH] Rydd opp seks stale "ikke bygget"-seksjoner i FEATURE_BACKLOG.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 --- CHANGELOG.md | 39 ++++++++++++++++++ FEATURE_BACKLOG.md | 98 ++++++++++++++++++++++++++++++++-------------- 2 files changed, 107 insertions(+), 30 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a4fac29..b5ab7ee 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -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. diff --git a/FEATURE_BACKLOG.md b/FEATURE_BACKLOG.md index 1323cc5..f8dab4c 100644 --- a/FEATURE_BACKLOG.md +++ b/FEATURE_BACKLOG.md @@ -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. |