4.1 KiB
id, title, status, type, team, supporting_teams, roadmap_item, priority
| id | title | status | type | team | supporting_teams | roadmap_item | priority | ||
|---|---|---|---|---|---|---|---|---|---|
| TASK-128 | Build simplified internal match detail page | done | frontend | Frontend Senior |
|
rcon-full-data | high |
TASK-128 - Build simplified internal match detail page
Goal
Make frontend/historico-partida.html useful as a lightweight internal scoreboard-style match detail page backed by the internal RCON detail API.
Background
When a safe public scoreboard link is unavailable, users should still be able to inspect the match through HLL Vietnam. The page should show summary, score, winner, factions/teams if available, player stats and a relevant event timeline without advanced charts.
Constraints
- Do not add advanced charts or graphs.
- Do not expose raw player IDs unless required by an already approved API contract.
- Do not reintroduce Comunidad Hispana #03.
- Do not show paused Elo/MVP blocks.
- Do not expose public "snapshot" wording.
- Preserve HLL Vietnam styling.
Allowed Changes
frontend/historico-partida.htmlfrontend/assets/js/historico-partida.jsfrontend/assets/css/historico.cssif needed- this task file when moving it through the workflow
Implementation Requirements
- Work from a dedicated branch for this task.
- Read first:
AGENTS.mdai/architecture-index.mdai/repo-context.mdai/orchestrator/frontend-senior.mdai/orchestrator/ui-expert.mdfrontend/historico-partida.htmlfrontend/assets/js/historico-partida.jsfrontend/assets/css/historico.css- backend match detail API code from TASK-124
- Use the internal match detail API.
- Display map, server, result, winner, game mode, start/end time, source/confidence and external scoreboard link when available.
- Add player stats table with player, team, kills, deaths, teamkills, K/D, top weapons, most killed and death by.
- Add event/timeline section for match start, match end, kill sample/recent kills and useful team switches.
- Handle partial or missing data gracefully with controlled empty states.
- Keep implementation in vanilla JavaScript.
Validation Commands
node --check frontend/assets/js/historico-partida.jsdocker compose up -d --build backend frontend
Manual Verification Steps
- Open a match detail from the recent matches list.
- Verify a match with AdminLog kill data shows at least one kill/weapon row.
- Verify a match without player stats shows a controlled empty state.
- Confirm no Elo/MVP/server #03/snapshot wording appears.
- Confirm
git diff --name-onlymatches the allowed scope.
Git Requirements
- Create a dedicated branch for this task, for example
codex/task-128-internal-match-detail-page. - Run relevant validation before committing.
- Stage only intended files.
- Commit the completed implementation.
- Push the branch to origin.
Outcome
Reworked frontend/historico-partida.html and frontend/assets/js/historico-partida.js into a simplified internal scoreboard-style detail page backed by /api/historical/matches/detail?server=...&match=....
The page correctly URL-encodes materialized RCON match ids containing colons, displays match summary cards, source/confidence, optional external scoreboard action, player stats with K/D, top weapons, most-killed/death-by summaries, and timeline event counts. It handles missing player/timeline data with controlled empty states and does not expose raw player IDs.
Validation Result
- Passed:
node --check frontend/assets/js/historico-partida.js - Passed:
docker compose up -d --build backend frontend - Browser-verified detail navigation from
http://localhost:8080/historico.html. - Browser-verified known materialized match detail renders at
http://localhost:8080/historico-partida.html?server=comunidad-hispana-02&match=comunidad-hispana-02%3A1779178461%3A1779183861%3Acarentanwarfare. - Confirmed AntonioPruna renders with 1 kill, 0 deaths and
M1 GARAND. - Confirmed the victim row renders 1 death and
death_byAntonioPruna. - Confirmed timeline/event counts render.
- Confirmed no visible Elo/MVP/Comunidad Hispana #03/snapshot wording appears.