docs: update documentation to OKF v0.1 format
This commit is contained in:
@@ -3,7 +3,7 @@ type: guide
|
||||
title: Scoreboard Page
|
||||
description: How a signed-in player navigates /scoreboard, uses the four tabs (Ranking, Matrix, Event Log, Score Graph), and watches live solve updates arriving over the authenticated SSE stream.
|
||||
tags: [guide, scoreboard, sse, live, ranking, matrix, event-log, score-graph, tester]
|
||||
timestamp: 2026-07-23T05:10:00Z
|
||||
timestamp: 2026-07-23T05:41:00Z
|
||||
---
|
||||
|
||||
# Overview
|
||||
@@ -157,7 +157,12 @@ The same `solve` frame that lights up the
|
||||
New players are appended to the matrix row list.
|
||||
* **Event Log**: a new `EventLogRow` is prepended to the list
|
||||
(deduplicated by `solveId` so reconnects don't duplicate) and the
|
||||
list is capped at 200.
|
||||
list is capped at 200. The SSE solve frame carries
|
||||
`challenge_name` / `category_abbreviation` (sourced from the same
|
||||
`challenge` + `category` join that backs the
|
||||
`/api/v1/scoreboard/event-log` REST projection), so the prepended
|
||||
row's category abbreviation and challenge name are populated
|
||||
immediately — no refresh is required.
|
||||
* **Score Graph**: the matching player's series receives a new
|
||||
`{tUtc: awardedAtUtc, value: prevValue + awardedPoints}` point,
|
||||
the series list is re-sorted by final value DESC and trimmed to the
|
||||
|
||||
@@ -3,7 +3,7 @@ type: guide
|
||||
title: Scoreboard Stream
|
||||
description: How fresh solves are broadcast to clients — both the public unauthenticated scoreboard SSE stream and the authenticated combined /api/v1/events stream that the /scoreboard page consumes.
|
||||
tags: [guide, scoreboard, sse, stream, public, authenticated]
|
||||
timestamp: 2026-07-23T05:10:00Z
|
||||
timestamp: 2026-07-23T05:41:00Z
|
||||
---
|
||||
|
||||
# Overview
|
||||
@@ -43,9 +43,15 @@ is published to the scoreboard hub.
|
||||
* `/api/v1/scoreboard/stream` emits a flattened shape
|
||||
(`challengeId`, `userId`, `pointsAwarded`, `rankBonus`,
|
||||
`solvedAt`) for anonymous spectators.
|
||||
* `/api/v1/events` emits a richer `SolveEventPayload` (with both
|
||||
snake_case and camelCase aliases, plus `position`,
|
||||
`live_points`, `solve_count`, etc.) for the authenticated SPA.
|
||||
* `/api/v1/events` emits a richer `SolveEventPayload` (with both
|
||||
snake_case and camelCase aliases, plus `challenge_name`,
|
||||
`category_abbreviation`, `position`, `live_points`,
|
||||
`solve_count`, etc.) for the authenticated SPA. The display
|
||||
metadata fields are sourced from the same `challenge` +
|
||||
`category` join that backs the `/api/v1/scoreboard/event-log`
|
||||
REST projection, so the Event Log tab can render an SSE-pushed
|
||||
row with the challenge name and category abbreviation without a
|
||||
second lookup.
|
||||
|
||||
The hub is in-process; multi-replica deployments need a shared
|
||||
pub/sub to fan out across pods (not in scope for this repo).
|
||||
|
||||
Reference in New Issue
Block a user