Courtside Manager score keeper page per court; Phase below Courts on the desk; estimated finish on court cards
A per-court signed link from the desk opens a full-screen scoring page with big +/- buttons, undo, best-of sets, and a confirmed Finalize step; it follows whatever match is on the court and can never edit a finished result. Public court cards show the estimated finish time. Release 0.4.0. Co-Authored-By: Claude Fable 5.1 <[email protected]> Claude-Session: https://claude.ai/code/session_01MB7nCCAscYsb3zzkT6LHZi
This commit is contained in:
+10
@@ -51,6 +51,16 @@ A match object:
|
||||
|
||||
Phone numbers, captain names, and team codes never appear in the public document.
|
||||
|
||||
## Score keeper (Courtside Manager)
|
||||
|
||||
Per-court links issued from the desk. `k` is an HMAC of `<slug>:court<n>` under `SESSION_SECRET`; requests without a valid `k` get 403.
|
||||
|
||||
| Method | Path | Body (JSON) | Effect |
|
||||
| --- | --- | --- | --- |
|
||||
| GET | `/keeper/<slug>/<court>?k=…` | | The score keeper page for that court. |
|
||||
| POST | `/keeper/<slug>/<court>/live` | `k`, `match`, `a`, `b`, `sets` (completed sets, `[[21,18]]`) | Update the running score of the live match on that court. Fails if `match` is not the one on the court. |
|
||||
| POST | `/keeper/<slug>/<court>/final` | `k`, `match`, `sets` (all sets incl. the last) | Record the result, validated against the rules; the court engine then assigns the next match. Fails once the match is no longer live. |
|
||||
|
||||
## Organizer
|
||||
|
||||
All organizer routes require the session cookie set by `/admin/login` (or Cloudflare Access when `TRUST_CF_ACCESS=true`). Unauthenticated requests are redirected to the login page.
|
||||
|
||||
Reference in New Issue
Block a user