97 lines
4.1 KiB
Markdown
97 lines
4.1 KiB
Markdown
---
|
|
id: TASK-128
|
|
title: Build simplified internal match detail page
|
|
status: done
|
|
type: frontend
|
|
team: Frontend Senior
|
|
supporting_teams:
|
|
- Experto en interfaz
|
|
- Backend Senior
|
|
roadmap_item: rcon-full-data
|
|
priority: 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.html`
|
|
- `frontend/assets/js/historico-partida.js`
|
|
- `frontend/assets/css/historico.css` if needed
|
|
- this task file when moving it through the workflow
|
|
|
|
## Implementation Requirements
|
|
|
|
- Work from a dedicated branch for this task.
|
|
- Read first:
|
|
- `AGENTS.md`
|
|
- `ai/architecture-index.md`
|
|
- `ai/repo-context.md`
|
|
- `ai/orchestrator/frontend-senior.md`
|
|
- `ai/orchestrator/ui-expert.md`
|
|
- `frontend/historico-partida.html`
|
|
- `frontend/assets/js/historico-partida.js`
|
|
- `frontend/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.js`
|
|
- `docker 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-only` matches 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_by` AntonioPruna.
|
|
- Confirmed timeline/event counts render.
|
|
- Confirmed no visible Elo/MVP/Comunidad Hispana #03/snapshot wording appears.
|