Underveis fant og fikset jeg et reelt hull: round_participant manglet kolonner for selve rating-tallene (kun tee-navnet var lagret) — løst med migrasjon 021, kjørt mot ekte database sammen med resten. Bygget og rullet ut: app/routers/rounds.py — opprett/liste/hent/slett runde, legg til/fjern gjestedeltakere, registrer statistikk hull for hull, og en fullfør-endepunkt som kjører hele kjeden (Adjusted Gross Score → Score Differential → tellende-vurdering). 26 scratch-sjekker grønt, pluss en egen test mot den ekte kjørende teeoff-tjenesten som bekreftet at live-oppslaget fungerer nøyaktig som tiltenkt (ingen bane-kopi skrives noe sted). Begge migrasjoner + ny kode er nå live mot ekte teecup_db/teecup_api. teeoff.no upåvirket. Jeg la også inn /rounds og /personal-courses i frontendens proxy-oppsett proaktivt, siden prosjektet har blitt bitt av glemte proxy-ruter før — ikke deployet ennå, tas med neste gang frontend faktisk bygges. Notatet om slaglengde-måling og avstand-til-punkter-på-banen er lagret i CLAUDE.md og FEATURE_BACKLOG.md, med en tydelig flagget avhengighet: dette krever geografiske/GPS-data som ingen nåværende kilde (verken teeoff eller den nye banekatalogen) har.
21 lines
1.2 KiB
SQL
21 lines
1.2 KiB
SQL
-- =====================================================================
|
|
-- TeeCup — rating-snapshot på round_participant (migrasjon 021)
|
|
-- =====================================================================
|
|
-- Reelt hull funnet ved API-designet rett etter migrasjon 020: en
|
|
-- deltakers Course Handicap/Score Differential kan ikke regnes ut uten
|
|
-- ratingen (Course Rating/Slope Rating/Par) som faktisk ble brukt --
|
|
-- `round.tee_name_snapshot` alene holder kun navnet, ikke tallene. Disse
|
|
-- hører hjemme PER DELTAKER (ikke per runde), siden ratingen er
|
|
-- kjønnsspesifikk (ADR-029) og to deltakere i samme runde kan derfor ha
|
|
-- ulik rating selv fra samme fysiske utslag.
|
|
--
|
|
-- Samme reproduserbarhets-prinsipp som resten av round_participant
|
|
-- (ADR-007-mønsteret): et snapshot, ikke en live-referanse.
|
|
-- =====================================================================
|
|
|
|
\set ON_ERROR_STOP on
|
|
|
|
ALTER TABLE round_participant ADD COLUMN course_rating_snapshot numeric(4,1);
|
|
ALTER TABLE round_participant ADD COLUMN slope_rating_snapshot smallint
|
|
CHECK (slope_rating_snapshot IS NULL OR slope_rating_snapshot BETWEEN 55 AND 155);
|
|
ALTER TABLE round_participant ADD COLUMN tee_par_snapshot smallint;
|