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:
parent
b566595e85
commit
5e4e4af26c
3 changed files with 38 additions and 10 deletions
|
|
@ -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",
|
||||||
|
|
|
||||||
29
CLAUDE.md
29
CLAUDE.md
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue