-- ===================================================================== -- TeeCup — Scramble mot enkeltspiller, slagspill-varianten (frittstående -- runder), migrasjon 056. -- -- Første ASYMMETRISKE to-siders-format i prosjektet: et scramble-lag -- (variabel størrelse, N>=2, delt ball) spiller netto slagspill mot ÉN -- individuell spiller (egen ball) -- laveste nettosum vinner. Bevisst -- utenfor omfang: match-play-varianten (egen runde senere), org- -- lagturneringer (kun frittstående runder nå). -- -- Lagets Playing Handicap = enkelt gjennomsnitt av medlemmenes course -- handicap (handicap_engine.py sin nye TeamAverage) -- bevisst uavhengig -- av scramble_2/scramble_4 sine faste RankedSplit-tabeller, som -- forutsetter fast lagstørrelse. Ingen av de tre HCP-PDF-ene (se -- CLAUDE.md) dekker lag-vs-individuell eller vilkårlig lagstørrelse -- -- dette er en bevisst ny, enkel TeeCup-regel, bekreftet med bruker -- 2026-08-05, ikke en kildebelagt formel. -- ===================================================================== \set ON_ERROR_STOP on ALTER TABLE round DROP CONSTRAINT round_play_format_check; ALTER TABLE round ADD CONSTRAINT round_play_format_check CHECK (play_format IN ('stroke', 'match', 'skins', 'fourball', 'foursome', 'greensome', 'scramble_2', 'scramble_4', 'stableford', 'chapman', 'copenhagen', 'bbb', 'flag', 'shamble', 'money_ball', 'high_low_high', 'scramble_solo')); -- Individualspillerens konfigurerbare allowance-%, arrangør-satt per -- runde, standard 100. Bespoke kolonne (samme mønster som bbb_sweep_ -- bonus_enabled/shamble_best_n) -- IKKE den generiske allowance_override- -- JSON-en (migrasjon 051), som forutsetter ÉN delt strategi for hele -- runden. Dette formatet trenger to UAVHENGIGE strategier: lagsiden har -- ingen konfig i det hele tatt (alltid rent snitt via TeamAverage), -- individualsiden har nøyaktig denne ene justerbare prosenten. ALTER TABLE round ADD COLUMN scramble_solo_individual_pct smallint NOT NULL DEFAULT 100 CHECK (scramble_solo_individual_pct BETWEEN 0 AND 100); -- Side-rolle-disambiguering. Nullable, meningsløs/NULL for alle andre -- formater. round_side kan slettes/gjenopprettes fritt (delete_round_ -- side) uten garantert stabil opprettelsesrekkefølge -- rekkefølge-basert -- "side 1 = lag, side 2 = individuell" er derfor IKKE pålitelig identitet. -- round_side_id IS NULL for individualspilleren ville dessuten brutt -- eksisterende "er denne deltakeren med i matchen"-sjekker -- (_two_sided_hole_results m.fl.), som bruker nettopp round_side_id IS -- NOT NULL som signal -- individualspilleren får derfor en ekte -- round_side-rad (rollen 'individual'), ikke NULL. ALTER TABLE round_side ADD COLUMN side_role text CHECK (side_role IN ('team', 'individual')); CREATE UNIQUE INDEX round_side_role_unique ON round_side (round_id, side_role) WHERE side_role IS NOT NULL;