Programskjermen er live og verifisert (teeoff.no upåvirket).

Om bekymringen din: sjekket det faktisk fremfor å gjette. Gode nyheter — det er billigere enn ADR-004 lot til å anta:

GET /api/facilities/{slug} i teeoff sin backend/main.py er allerede offentlig, uten auth/API-nøkkel, og returnerer nøyaktig det vi trenger: hull med par+stroke index, tee-navn, og course/slope rating per tee (kjønnsdelt WHS-data)
CORS-listen på teeoff-siden ekskluderer teecups origin, men det er irrelevant — dette blir et server-til-server-kall fra teecup_api til teeoff sin backend, ikke noe nettleseren gjør
Eneste reelle designspørsmål: banen har ingen egen slug, kun facilities.slug (f.eks. borregaard-golfklubb) + en intern bane-id — så course.external_course_ref må bære begge sammen
This commit is contained in:
Erol Haagenrud 2026-07-18 12:29:24 +02:00
parent b566595e85
commit 5e4e4af26c
3 changed files with 38 additions and 10 deletions

View file

@ -231,7 +231,16 @@
"Bash(python3 -m py_compile app/routers/courses.py app/main.py)", "Bash(python3 -m py_compile app/routers/courses.py app/main.py)",
"Bash(pnpm --version)", "Bash(pnpm --version)",
"Bash(corepack --version)", "Bash(corepack --version)",
"Bash(corepack pnpm *)" "Bash(corepack pnpm *)",
"Bash(curl -s -o /dev/null -w \"teecup.teeoff.no/health -> %{http_code}\\\\n\" https://teecup.teeoff.no/health)",
"Bash(curl -s -o /dev/null -w \"teecup.teeoff.no/dashboard -> %{http_code}\\\\n\" https://teecup.teeoff.no/dashboard)",
"Bash(curl -s -o /dev/null -w \"teeoff.no -> %{http_code}\\\\n\" https://teeoff.no/)",
"Bash(cd /opt/teeoff && ls && echo --- && find . -iname \"*.md\" -not -path \"*/node_modules/*\" | head -50)",
"Bash(cd /opt/teeoff && find backend -iname \"*.md\" -o -iname \"openapi*\" -o -iname \"swagger*\" 2>/dev/null; echo ---; find backend -maxdepth 3 -type d | grep -v node_modules; echo ---; find backend -iname \"*rout*\" -not -path \"*/node_modules/*\")",
"Bash(cd /opt/teeoff/backend && ls -la; echo ---; find . -maxdepth 2 -type f | grep -v node_modules)",
"Read(//opt/teeoff/backend/**)",
"Bash(cd /opt/teeoff/backend && grep -n \"app\\\\.\\\\\\(get\\\\|post\\\\|put\\\\|delete\\\\|patch\\\\\\)\\\\|@app\\\\.\\\\|APIRouter\\\\|router\\\\.\\\\\\(get\\\\|post\\\\\\)\" main.py | grep -i \"facilit\\\\|course\\\\|club\" )",
"Bash(cd /opt/teeoff && grep -n \"CREATE TABLE.*\\\\\\(courses\\\\|tees\\\\|holes\\\\|hole_lengths\\\\|facilities\\\\\\)\\\\b\" schema.sql init.sql 2>/dev/null)"
], ],
"additionalDirectories": [ "additionalDirectories": [
"/opt/teeoff/deploy", "/opt/teeoff/deploy",

View file

@ -703,13 +703,32 @@ Ferdig og verifisert:
full-reverts, ikke rørt. Fjernet V0s dev-only forhåndsvisnings-toggle; full-reverts, ikke rørt. Fjernet V0s dev-only forhåndsvisnings-toggle;
lagt til fanerad ("Lag og spillere" / "Program") i BEGGE skjermene siden lagt til fanerad ("Lag og spillere" / "Program") i BEGGE skjermene siden
V0 ikke visste om den andre når den ble generert i egen prompt. V0 ikke visste om den andre når den ble generert i egen prompt.
**IKKE rullet ut live ennå** — venter på brukerens bekreftelse (ingen **Rullet ut live 2026-07-18**, bruker bekreftet eksplisitt: `docker
migrasjon denne runden, men ny backend-/frontend-kode krever compose up -d --build teecup_api teecup_frontend` (kun disse to, `teecup-
`docker compose up -d --build` mot ekte containere). minio` urørt). Verifisert: begge containere boot-et rent (`Application
startup complete`, Next.js `Ready`), `teecup.teeoff.no/health` og
`/dashboard` → 200, `teeoff.no` upåvirket (200).
- **ADR-004 (teeoff-banedata) kartlagt, IKKE bygget (2026-07-18):** brukeren
påpekte rett etter program-skjerm-rullingen at ADR-004s teeoff-
integrasjon fortsatt bare er vedtatt, ikke bygget (kun `source='custom'`
finnes). Kartlagt `/opt/teeoff/backend/main.py` (annet repo, kun lest):
`GET /api/facilities/{slug}` (offentlig, INGEN auth/API-nøkkel) returnerer
allerede alt teecup trenger — `courses[].holes[]` (`par`, `hcp_index`
= stroke index), `courses[].tees[]` (`name`, `cr_men`/`slope_men`,
`cr_women`/`slope_women` — kjønnsdelt WHS-rating). CORS-lista på teeoff-
siden ekskluderer teecups origin, men er IRRELEVANT for et server-til-
server-kall (kun nettleser-fetch rammes av CORS). Ingen dokumentasjon
(README/OpenAPI) finnes for dette API-et i teeoff-repoet — kartleggingen
over er basert på å lese koden direkte. Stabil identifikator: `facilities.
slug` (f.eks. `borregaard-golfklubb`) — selve banen har kun en intern
serial-id, ingen egen slug, så `course.external_course_ref` må bære
facility-slug + bane-id sammen. **Ikke scopet eller bygget ennå** — egen,
senere avklaring med bruker om omfang (import-flyt vs. live-oppslag hver
gang, hvor mye av bane-/tee-/hull-detaljene som skal kopieres inn i
`teecup_db` vs. slås opp on-demand).
Neste steg: Neste steg:
1. Rulle program-skjermen live (venter på bekreftelse). 1. Flere V0-skjermer (blind draw, scorekort, leaderboard) — samme mønster:
2. Flere V0-skjermer (blind draw, scorekort, leaderboard) — samme mønster:
design i V0 (fortsett i samme prosjekt), FORVENT en full re-eksport hver design i V0 (fortsett i samme prosjekt), FORVENT en full re-eksport hver
gang — diff mot live-treet i et scratch-område før noe pakkes ut over gang — diff mot live-treet i et scratch-område før noe pakkes ut over
eksisterende filer, og sjekk om V0-skjermen bygger inn handlinger backend eksisterende filer, og sjekk om V0-skjermen bygger inn handlinger backend

View file

@ -25,7 +25,7 @@
| Dedikert app-rolle (ingen superuser/BYPASSRLS) | ✅ | migrasjon 002. | | Dedikert app-rolle (ingen superuser/BYPASSRLS) | ✅ | migrasjon 002. |
| API: oppsett (spillere/lag/roster/økter/matcher/blind draw) | ✅ | Verifisert for ekte mot scratch-db + engangscontainer. | | API: oppsett (spillere/lag/roster/økter/matcher/blind draw) | ✅ | Verifisert for ekte mot scratch-db + engangscontainer. |
| API: scoring (hole_score/match_hole_result, matchstatus, handicap-beregning) | ✅ | ADR-012/014. Verifisert for ekte, inkl. fourball better-ball og race-sikker recompute. | | API: scoring (hole_score/match_hole_result, matchstatus, handicap-beregning) | ✅ | ADR-012/014. Verifisert for ekte, inkl. fourball better-ball og race-sikker recompute. |
| Banedata fra teeoff via API | 🔀 | ADR-004. Endret fra Geminis «delt database direkte». | | Banedata fra teeoff via API | 🔀 | ADR-004. Endret fra Geminis «delt database direkte». **Kartlagt 2026-07-18** (ikke bygget ennå): `GET /api/facilities/{slug}` i `/opt/teeoff/backend/main.py` er offentlig, uten auth, og har allerede alt vi trenger — navn, hull med par+hcp_index, tee-navn, course/slope rating per tee (kjønnsdelt). Ingen CORS/API-nøkkel-hinder siden dette blir et server-til-server-kall, ikke nettleser. Se program-skjerm-runden i CLAUDE.md-status for full kartlegging. |
| Konfigurerbar handicap-pipeline (4 brytere) | ✅ | ADR-014. Bygget i `app/handicap.py`, brukt av scoring-runden. | | Konfigurerbar handicap-pipeline (4 brytere) | ✅ | ADR-014. Bygget i `app/handicap.py`, brukt av scoring-runden. |
| Ekte autentisering (magic-link + JWT-sesjon) | ✅ | ADR-009. `app/routers/auth.py` + migrasjon `004_auth.sql`. `X-Debug-User-Id`-stubben er helt fjernet. | | Ekte autentisering (magic-link + JWT-sesjon) | ✅ | ADR-009. `app/routers/auth.py` + migrasjon `004_auth.sql`. `X-Debug-User-Id`-stubben er helt fjernet. |
| RLS-tomstreng-fiks (`app_current_org()`) | ✅ | Migrasjon `005_rls_null_guard.sql`. Se detaljer under. | | RLS-tomstreng-fiks (`app_current_org()`) | ✅ | Migrasjon `005_rls_null_guard.sql`. Se detaljer under. |
@ -496,9 +496,9 @@ lagt til en fanerad ("Lag og spillere" / "Program") i BÅDE
`tournament-detail.tsx` og den nye skjermen, siden V0 ikke visste om den `tournament-detail.tsx` og den nye skjermen, siden V0 ikke visste om den
andre skjermen når den ble generert i en egen prompt. andre skjermen når den ble generert i en egen prompt.
**Ikke rullet ut live ennå** — venter på brukerens bekreftelse (ingen **Rullet ut live 2026-07-18**, bruker bekreftet eksplisitt: begge containere
migrasjon denne runden, men ny backend-kode + frontend-kode krever (`teecup_api`, `teecup_frontend`) bygget og redeployet, live sjekker OK
`docker compose up -d --build` mot ekte `teecup_api`/`teecup_frontend`). (`/health`, `/dashboard` → 200), `teeoff.no` upåvirket.
--- ---