Egen poi_type "creek" for bekk, skilt fra water (ADR-084 del 3)
Ny migrasjon 081 legger til creek i det delte course_poi_type-domenet. Kobler inn brukerens nye bekk-ikon i diagrammet og reklassifiserer de 8 kjente Tjøme-bekk-punktene (hull 2/3/11/12) fra water til creek, identifisert via samme koordinat-regneark som ga hazard_group-dataen i forrige runde. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
parent
f3b3d30e4e
commit
eba8616438
5 changed files with 120 additions and 4 deletions
33
081_course_poi_type_creek.sql
Normal file
33
081_course_poi_type_creek.sql
Normal file
|
|
@ -0,0 +1,33 @@
|
|||
-- =====================================================================
|
||||
-- TeeCup — migrasjon 081
|
||||
-- Ny POI-type "creek" (bekk) -- skilt fra "water" (dam/vannhinder)
|
||||
-- =====================================================================
|
||||
-- Konkret anledning (ADR-084 del 2): Tjøme Golfklubb sitt koordinat-
|
||||
-- regneark skiller eksplisitt mellom "vann" (dam) og "fairway bekk"
|
||||
-- (bekk/creek) som to ulike fysiske hindringstyper -- 8 punkter (4
|
||||
-- forkant+bakkant-par, hull 2/3/11/12) er i dag lagret som poi_type
|
||||
-- 'water' siden domenet (migrasjon 079) ikke hadde noen egen verdi for
|
||||
-- bekk. Bruker har laget og lastet opp et eget bekk-ikon
|
||||
-- (frontend/public/hole-diagram/hazard-creek.png) og ba eksplisitt om
|
||||
-- at dette blir en visuelt distinkt hindringstype i hull-diagrammet,
|
||||
-- ikke fortsatt vist som "Vannhinder".
|
||||
--
|
||||
-- `creek` legges til course_poi_type-domenet (migrasjon 079) -- gjelder
|
||||
-- automatisk begge koordinattabellene (golfapi_course_coordinate og
|
||||
-- teeoff_course_coordinate) siden begge bruker samme delte domene.
|
||||
-- De 8 kjente eksisterende bekk-punktene REKLASSIFISERES i en egen,
|
||||
-- ikke-migrasjonsbasert UPDATE (se CHANGELOG/ADR-084) -- identifisert
|
||||
-- presist via samme koordinat-regneark som ga hazard_group-dataen i
|
||||
-- del 2, ikke en heuristikk.
|
||||
-- =====================================================================
|
||||
|
||||
\set ON_ERROR_STOP on
|
||||
|
||||
ALTER DOMAIN course_poi_type DROP CONSTRAINT course_poi_type_check;
|
||||
ALTER DOMAIN course_poi_type ADD CONSTRAINT course_poi_type_check
|
||||
CHECK (VALUE IN (
|
||||
'green', 'green_bunker', 'fairway_bunker', 'water', 'creek',
|
||||
'trees', 'marker_100', 'marker_150', 'marker_200',
|
||||
'dogleg', 'road', 'tee_front', 'tee_back',
|
||||
'rock', 'layup', 'landmark'
|
||||
));
|
||||
|
|
@ -8546,6 +8546,54 @@ eget ikon oppdatert: nå KUN `road` (ingen ikon lastet opp for denne).
|
|||
V0-prompt for polert visning fortsatt ikke skrevet -- venter på at
|
||||
bruker har sett/godkjent denne runden i produksjon også.
|
||||
|
||||
### ADR-084 del 3: egen poi_type "creek" for bekk (2026-08-18)
|
||||
|
||||
Del 2 sa bevisst nei til å blande bekk inn i `water` sitt ikon --
|
||||
bruker ba om egen runde, som ble gjort samme dag. `course_poi_type`
|
||||
(delt domene, migrasjon 079) hadde ingen verdi for bekk, kun `water`
|
||||
som historisk har dekket både dam og bekk.
|
||||
|
||||
**Migrasjon 081** legger til `creek` i domenet (`ALTER DOMAIN
|
||||
course_poi_type DROP/ADD CONSTRAINT`) -- gjelder automatisk begge
|
||||
koordinattabellene siden de deler domenet. Additiv, ingen eksisterende
|
||||
rader berøres av selve migrasjonen.
|
||||
|
||||
**Reklassifisering, egen UPDATE (ikke migrasjon):** 8 kjente Tjøme-
|
||||
punkter (hull 2/3/11/12, "fairway bekk" i koordinat-regnearket fra del
|
||||
2, gjenbruker samme fysiske bekk på to hull-par) hadde `poi_type =
|
||||
'water'` siden det var eneste tilgjengelige verdi ved import.
|
||||
Identifisert presist via samme regneark+lat/long-matching som ga
|
||||
hazard_group-dataen i del 2 (ikke gjettet) -- alle 8 hadde allerede
|
||||
`hazard_group` satt fra den runden, urørt av denne oppdateringen.
|
||||
|
||||
Frontend: nytt ikon (`hazard-creek.png`, 32×32, lastet opp av bruker)
|
||||
koblet inn som egen `HazardKind` i `_HAZARD_KIND`/`_ICON_SRC`, label
|
||||
"Bekk". Ingen backend-modellendring nødvendig -- `poi_type` er
|
||||
allerede `str` (ikke et strengt enum) i både `TargetPoint`
|
||||
(target_points.py) og `CoursePointIn/Out` (courses.py).
|
||||
|
||||
**Verifisert:** `tsc --noEmit` rent, `vitest run` 55/55, full
|
||||
`./scripts/run_backend_tests.sh` 111/111 (migrasjon 081 kjørt
|
||||
problemfritt i scratch-testsuiten sin egen database). Ny scratch-runde
|
||||
med et konstruert bekk-forkant+bakkant-par -- bekreftet eget,
|
||||
distinkt ikon (ikke forvekslet med vann-ikonet), riktig forkant/
|
||||
bakkant-tekst, lys+mørk. Scratch-stacken revet ned.
|
||||
|
||||
Under samme opprydding oppdaget: flere gamle, TOMME MinIO scratch-
|
||||
bøtter fra tidligere økter (`teecup-scratch-hh/hs/oom/players/roster/
|
||||
wz`) som aldri ble ryddet bort ved forrige økters teardown. Bekreftet
|
||||
adskilt fra ekte data (produksjon bruker `teecup-media`,
|
||||
`TEECUP_MINIO_BUCKET` i `.env`) og tomme (0 objekter hver) før sletting
|
||||
-- ingen tilsvarende glemte scratch-databaser/-roller/-containere
|
||||
funnet.
|
||||
|
||||
**Rullet ut 2026-08-18** -- bruker bekreftet alle tre deler eksplisitt
|
||||
(migrasjon, reklassifisering, kode). Migrasjon 081 og
|
||||
reklassiferings-UPDATE kjørt mot ekte `teecup_db`, deretter `docker
|
||||
compose build teecup_frontend && up -d`. Rene containerlogger,
|
||||
`https://teecup.golf/logg-inn` 200 OK, 8/8 rader bekreftet
|
||||
`poi_type = 'creek'`.
|
||||
|
||||
---
|
||||
|
||||
## Utviklingsplan (rekkefølge)
|
||||
|
|
|
|||
33
CHANGELOG.md
33
CHANGELOG.md
|
|
@ -12180,3 +12180,36 @@ Neste steg:
|
|||
**Gjenstår:** bekk som egen `poi_type` (egen runde, bedt om
|
||||
eksplisitt av bruker). Ikon-mangel-lista er nå kun `road`. V0-
|
||||
prompt for polert visning fortsatt ikke skrevet.
|
||||
|
||||
103. **Egen poi_type "creek" for bekk (ADR-084 del 3) — 2026-08-18.**
|
||||
Del 2 samme dag lot bekk-ikonet ligge ukoblet -- domenet
|
||||
`course_poi_type` skilte ikke bekk fra dam (begge `water`), og
|
||||
bruker ba om egen runde for det. Migrasjon 081 la til `creek` i
|
||||
det delte domenet (`ALTER DOMAIN ... DROP/ADD CONSTRAINT`, gjelder
|
||||
automatisk begge koordinattabellene). Egen `UPDATE` (ikke
|
||||
migrasjon) reklassifiserte de 8 kjente Tjøme-bekk-punktene (hull
|
||||
2/3/11/12) fra `water` til `creek` -- identifisert presist via
|
||||
samme koordinat-regneark+lat/long-matching som ga hazard_group-
|
||||
dataen i del 2, `hazard_group` urørt. Nytt ikon
|
||||
(`hazard-creek.png`) koblet inn i `_HAZARD_KIND`/`_ICON_SRC` under
|
||||
egen `HazardKind`, label "Bekk". Ingen backend-endring nødvendig
|
||||
(`poi_type` er `str`, ikke et strengt enum, i både
|
||||
`target_points.py` og `courses.py`).
|
||||
|
||||
**Verifisert:** `tsc --noEmit` rent, `vitest run` 55/55, full
|
||||
`./scripts/run_backend_tests.sh` 111/111 (migrasjon 081 i scratch-
|
||||
testsuitens egen database). Ny scratch-runde med konstruert bekk-
|
||||
par -- bekreftet eget, distinkt ikon (ikke forvekslet med vann),
|
||||
lys+mørk. Scratch-stacken revet ned.
|
||||
|
||||
Samtidig ryddet: flere gamle, TOMME MinIO scratch-bøtter fra
|
||||
tidligere økter (`teecup-scratch-hh/hs/oom/players/roster/wz`) som
|
||||
aldri ble fjernet ved forrige teardown -- bekreftet adskilt fra
|
||||
ekte data (`teecup-media`) og tomme før sletting, ingen andre
|
||||
glemte scratch-ressurser funnet.
|
||||
|
||||
**Rullet ut 2026-08-18** -- bruker bekreftet migrasjon,
|
||||
reklassifisering og kode hver for seg. Kjørt mot ekte `teecup_db`,
|
||||
deretter `docker compose build teecup_frontend && up -d`. Rene
|
||||
containerlogger, `https://teecup.golf/logg-inn` 200 OK, 8/8 rader
|
||||
bekreftet `poi_type = 'creek'`.
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@
|
|||
import { MapPin, TriangleAlert } from "lucide-react"
|
||||
import { cn } from "@/lib/utils"
|
||||
|
||||
export type HazardKind = "sand" | "water" | "rock" | "tree" | "dogleg" | "layup" | "landmark" | "generic"
|
||||
export type HazardKind = "sand" | "water" | "creek" | "rock" | "tree" | "dogleg" | "layup" | "landmark" | "generic"
|
||||
|
||||
export type DiagramHazard = {
|
||||
key: string
|
||||
|
|
@ -99,6 +99,7 @@ function formatMeters(m: number) {
|
|||
const _ICON_SRC: Partial<Record<HazardKind, string>> = {
|
||||
sand: "/hole-diagram/hazard-sand.png",
|
||||
water: "/hole-diagram/hazard-water.png",
|
||||
creek: "/hole-diagram/hazard-creek.png",
|
||||
rock: "/hole-diagram/hazard-rock.png",
|
||||
tree: "/hole-diagram/hazard-tree.png",
|
||||
dogleg: "/hole-diagram/hazard-dogleg.png",
|
||||
|
|
|
|||
|
|
@ -53,6 +53,7 @@ const _HAZARD_LABELS: Record<string, string> = {
|
|||
green_bunker: "Bunker (green)",
|
||||
fairway_bunker: "Bunker (fairway)",
|
||||
water: "Vannhinder",
|
||||
creek: "Bekk",
|
||||
rock: "Fjellknaus",
|
||||
trees: "Trær",
|
||||
dogleg: "Dogleg",
|
||||
|
|
@ -61,14 +62,14 @@ const _HAZARD_LABELS: Record<string, string> = {
|
|||
}
|
||||
|
||||
// ADR-084: hvilket ikon en hindringstype får i diagrammet. "generic"
|
||||
// (typer uten dedikert ikon -- i dag ingen, `road` ville falt hit hvis
|
||||
// den noen gang klassifiseres som hindring) faller tilbake til lucide
|
||||
// (typer uten dedikert ikon -- i dag `road`) faller tilbake til lucide
|
||||
// sin TriangleAlert -- se hole-diagram-view.tsx.
|
||||
type HazardKind = "sand" | "water" | "rock" | "tree" | "dogleg" | "layup" | "landmark" | "generic"
|
||||
type HazardKind = "sand" | "water" | "creek" | "rock" | "tree" | "dogleg" | "layup" | "landmark" | "generic"
|
||||
const _HAZARD_KIND: Record<string, HazardKind> = {
|
||||
green_bunker: "sand",
|
||||
fairway_bunker: "sand",
|
||||
water: "water",
|
||||
creek: "creek",
|
||||
rock: "rock",
|
||||
trees: "tree",
|
||||
dogleg: "dogleg",
|
||||
|
|
|
|||
Loading…
Reference in a new issue