teecup/018_handicap_history.sql

29 lines
1.4 KiB
MySQL
Raw Normal View History

Update Todos Flytte is_participant-logikk til team_authz.py (unngå sirkulær import) Widen scoring.py: get_scorecard/submit_hole_score/submit_hole_result/concede_match Widen matches.py: list_matches/add_participant/remove_participant/lock_lineup Widen tournaments.py: list_sessions/list_teams/concede_tournament Widen courses.py: list_holes Widen messaging.py: team chat REST-endepunkter (list/send/delete) Legge til my_session_id/my_match_id i /auth/me sin my_tournaments Frontend: legge til lenker til lag-chat/scorekort fra «Mine runder» Scratch-verifisere hele deltaker-tilgang-runden (positive + negative kontroller) Ekte typesjekket frontend-produksjonsbuild + backend py_compile på nytt før deploy-forslag Presentere plan, deploye og oppdatere .md-filer for deltaker-tilgang-runden Bygge og scratch-verifisere sekundær e-postadresse (migrasjon 017) Designe, bygge og scratch-verifisere HCP-historikk (migrasjon 018) HCP-historikk er bygget og scratch-verifisert (18/18 sjekker, test_isolation.sql fortsatt 12/12). Hva er bygget: Migrasjon 018_handicap_history.sql — ny append-only-tabell handicap_history, kun for den personlige profilens HCP (ikke lagenes frosne handicap_index_snapshot, som er urørt, ADR-007). Backend: PATCH /auth/profile logger nå automatisk en ny rad når HCP faktisk endres til en tallverdi — ikke ved ren nullstilling, og ikke ved gjentatt lagring av samme verdi (sjekket eksplisitt mot forrige verdi først). Ny GET /auth/profile/handicap-history. Frontend: en «Vis HCP-historikk»-lenke i /account sin profilseksjon, viser dato + verdi-liste, oppdateres automatisk etter lagring. Verifisert grundig: ingen duplikat ved gjentatt lagring av uendret verdi, korrekt logging ved faktisk endring, ingen logg ved nullstilling, ny logg ved gjeninnsetting etter nullstilling, kronologisk rekkefølge riktig, og full isolasjon mellom to brukeres historikk.
2026-07-22 06:31:11 +02:00
-- =====================================================================
-- TeeCup — HCP-historikk over tid for personlig profil (migrasjon 018)
-- =====================================================================
-- Oppfølging av ADR-031 sitt "naturlig neste steg"-punkt: personlig
-- profil sin `app_user.handicap_index` (ADR-031, migrasjon 015) endres i
-- dag stille ved hver PATCH /auth/profile, uten noen logg over tidligere
-- verdier. Denne migrasjonen legger til en append-only historikk-tabell
-- -- IKKE noe erstatning for selve `app_user.handicap_index` (som
-- fortsatt er "gjeldende verdi", brukt overalt ellers uendret).
--
-- Bevisst KUN for den PERSONLIGE profilens HCP -- IKKE de org-scopede
-- `player.handicap_index`-radene eller `team_roster.handicap_index_
-- snapshot` (som allerede har sitt eget, separate reproduserbarhets-
-- prinsipp, ADR-007 -- ikke noe denne migrasjonen rører).
-- =====================================================================
\set ON_ERROR_STOP on
CREATE TABLE handicap_history (
id uuid PRIMARY KEY DEFAULT gen_random_uuid(),
user_id uuid NOT NULL REFERENCES app_user(id) ON DELETE CASCADE,
handicap_index numeric(4,1) NOT NULL,
recorded_at timestamptz NOT NULL DEFAULT now()
);
CREATE INDEX ON handicap_history (user_id, recorded_at);
GRANT SELECT, INSERT ON handicap_history TO teecup_app;