No description
Opprette app/realtime.py (delt WS-register, ingen router-avhengigheter)
Koble broadcast inn i recompute_and_cache_match_state + apply_concession
Legge til WS-endepunkt /ws/public/tournaments/{id}/live i messaging.py
Frontend: koble public-live.tsx til WebSocket med auto-refetch
Scratch-verifisere (REST + WebSocket)
Ekte typesjekket frontend-build
Skrive ADR-027 + oppdatere FEATURE_BACKLOG.md
Deploy etter bekreftelse + CLAUDE.md-statuslogg
"Følg live"-siden er nå faktisk live. Ny scores/walkover trigger en kringkasting over WebSocket til alle som følger den turneringen — siden henter automatisk leaderboardet på nytt, og matcher/scorekort som er åpne akkurat da, uten at noen trenger å laste siden på nytt.
Gjenbrukte hele infrastrukturen fra meldings-runden (samme /ws/*-Caddy-rute, ingen ny driftsendring), men måtte legge kringkastingsregisteret i en egen, rutefri modul (app/realtime.py) for å unngå en sirkulær import mellom filene. Verifisert med faktisk sanntidsmottak i scratch (ikke bare REST-svar) og et ekte wss://-håndtrykk mot produksjon.
.md-filene er oppdatert.
|
||
|---|---|---|
| .claude | ||
| __pycache__ | ||
| app | ||
| frontend | ||
| .dockerignore | ||
| .gitignore | ||
| 001_initial_schema.sql | ||
| 002_roles_and_grants.sql | ||
| 003_scoring_and_blinddraw.sql | ||
| 004_auth.sql | ||
| 005_rls_null_guard.sql | ||
| 006_scheduling_and_locale.sql | ||
| 007_registration_and_player_fields.sql | ||
| 008_link_player_by_email.sql | ||
| 009_landing_pages_and_visibility.sql | ||
| 010_official_course_unique_ref.sql | ||
| 011_join_code_and_leading_side.sql | ||
| 012_password_2fa_and_org_invitations.sql | ||
| 013_messaging.sql | ||
| ARCHITECTURE_DECISIONS.md | ||
| CLAUDE.md | ||
| docker-compose.yml | ||
| Dockerfile | ||
| FEATURE_BACKLOG.md | ||
| handicap_engine.py | ||
| TeeOff-logo-Retina-1.avif | ||
| test_handicap_engine.py | ||
| test_isolation.sql | ||