From e98a60be316829abdf5c1101224b1cefc5da0fe0 Mon Sep 17 00:00:00 2001 From: devRaGonSa Date: Tue, 19 May 2026 15:26:05 +0200 Subject: [PATCH] chore: add rcon match detail polish task --- ...rcon-match-detail-timestamps-and-labels.md | 134 ++++++++++++++++++ 1 file changed, 134 insertions(+) create mode 100644 ai/tasks/pending/TASK-133-polish-rcon-match-detail-timestamps-and-labels.md diff --git a/ai/tasks/pending/TASK-133-polish-rcon-match-detail-timestamps-and-labels.md b/ai/tasks/pending/TASK-133-polish-rcon-match-detail-timestamps-and-labels.md new file mode 100644 index 0000000..bb4b522 --- /dev/null +++ b/ai/tasks/pending/TASK-133-polish-rcon-match-detail-timestamps-and-labels.md @@ -0,0 +1,134 @@ +--- +id: TASK-133 +title: Polish RCON match detail timestamps and labels +status: pending +type: frontend +team: Frontend Senior +supporting_teams: + - Backend Senior + - Arquitecto Python +roadmap_item: rcon-full-data +priority: medium +--- + +# TASK-133 - Polish RCON Match Detail Timestamps And Labels + +## Goal + +Fix the small but confusing presentation issues in the internal match detail page for materialized RCON matches: misleading equal start/end timestamps, a raw technical match id in the main header, and overly technical visible labels. + +## Background + +HLL Vietnam now has a RCON-first materialized match pipeline. AdminLog events are parsed, stored, deduplicated and materialized; recent matches prefer materialized RCON AdminLog results; and the internal match detail page renders simplified scoreboard-style data. + +The known detail URL works: + +- `historico-partida.html?server=comunidad-hispana-02&match=comunidad-hispana-02%3A1779178461%3A1779183861%3Acarentanwarfare` + +The current page shows the expected match content, including map, server, score, winner, duration, player stats, weapons, victim/death_by rows and event counts. However, the page currently shows identical `Inicio` and `Fin` timestamps even when `duration_seconds` is correct, and the main header exposes the internal match id. + +## Constraints + +- Keep the change small and focused. +- Preserve RCON as the source of truth. +- Prefer backend/read-model correctness where possible. +- Do not change the data model more than necessary. +- Do not reactivate Elo/MMR. +- Do not touch Elo/MVP blocks. +- Do not reintroduce Comunidad Hispana #03. +- Do not show `snapshot` wording. +- Do not implement charts. +- Do not break recent match cards. +- Do not break match detail. +- Keep public scoreboard optional enrichment/fallback only. +- Preserve frontend compatibility with direct browser opening where applicable. + +## Allowed Changes + +- Backend read-model/API code needed to avoid misleading match timestamps or expose timestamp confidence. +- Frontend match detail code needed to render safer timestamp states and friendlier labels. +- Recent-match frontend code only if needed to preserve existing cards after read-model changes. +- This task file when moving it through the workflow. + +## Files to Read First + +- `AGENTS.md` +- `ai/architecture-index.md` +- `ai/repo-context.md` +- `ai/orchestrator/frontend-senior.md` +- `ai/orchestrator/backend-senior.md` +- `frontend/historico-partida.html` +- `frontend/assets/js/historico-partida.js` +- `frontend/assets/js/historico-recent-live.js` +- relevant backend historical/read-model modules serving recent matches and match detail + +## Implementation Requirements + +1. Work from a dedicated branch: `codex/task-133-polish-rcon-match-detail`. +2. Inspect the existing materialized RCON match detail response and frontend rendering before changing behavior. +3. Fix or gracefully handle misleading identical `started_at` / `ended_at` values for materialized RCON matches. +4. Prefer deriving sensible backend/read-model values from reliable `server_time` range and `duration_seconds` when possible. +5. If real absolute timestamps cannot be reliably reconstructed, expose and/or use timestamp confidence so the UI shows a controlled partial state such as `No disponible` or `Estimado`, instead of equal start/end times. +6. Keep `duration_seconds` visible because the duration is reliable from the server_time range. +7. Update the match detail hero/header so it no longer displays the raw technical match id as the main subtitle. +8. Replace the raw id with a user-friendly subtitle such as `Comunidad Hispana #02 - Partida RCON materializada`, or an equivalent Spanish label. +9. Optionally expose the technical match id in a small debug/technical section only if useful and visually secondary. +10. Polish visible labels around source, basis and confidence so they are consistent and understandable for end users. +11. Polish RCON materialized wording, including labels like `cierre de partida RCON` and `Registro RCON materializado`, without exposing implementation terms too prominently. +12. Ensure recent match cards still work after any backend/read-model adjustment. +13. Ensure the known Carentan match detail still renders. +14. Ensure AntonioPruna still renders with 1 kill, 0 deaths and `M1 GARAND`. +15. Ensure the victim row still shows 1 death and `death_by` AntonioPruna. + +## Validation Commands + +- `python -m compileall backend/app` +- `node --check frontend/assets/js/historico.js` +- `node --check frontend/assets/js/historico-partida.js` +- `node --check frontend/assets/js/historico-recent-live.js` +- `docker compose up -d --build backend frontend` +- `Invoke-WebRequest "http://localhost:8000/health" | Select-Object -ExpandProperty Content` +- `Invoke-WebRequest "http://localhost:8000/api/historical/recent-matches?server=all-servers&limit=10" | Select-Object -ExpandProperty Content` + +Use encoded match id: + +- `comunidad-hispana-02%3A1779178461%3A1779183861%3Acarentanwarfare` + +Open: + +- `http://localhost:8080/historico-partida.html?server=comunidad-hispana-02&match=comunidad-hispana-02%3A1779178461%3A1779183861%3Acarentanwarfare` + +## Manual Verification Steps + +- Detail page no longer shows the raw technical match id in the hero/header. +- Start/end values are not misleading. +- If exact timestamps are unavailable, the UI says `No disponible` or `Estimado`. +- Duration remains visible as `1 h 30 min`. +- Score remains `3 - 2`. +- Winner remains `Aliados`. +- AntonioPruna still shows 1 kill, 0 deaths and `M1 GARAND`. +- Victim row still shows 1 death and `death_by` AntonioPruna. +- Recent match cards still render. +- No `snapshot` wording appears. +- No Elo/MVP blocks appear. +- No server #03 appears. +- `git diff --name-only` matches the scoped implementation. + +## Git Requirements + +- Create a dedicated branch: `codex/task-133-polish-rcon-match-detail`. +- Run all validation listed above. +- Stage only intended files. +- Commit the completed implementation. +- Push the branch to origin. +- Final git status must be clean. + +## Outcome + +Document the validation performed, the timestamp confidence/derivation decision, and any skipped checks with a reason. If fixing timestamps requires a broader materialization redesign, implement the safe UI fallback in this task and create a follow-up task instead of expanding scope. + +## Change Budget + +- Prefer fewer than 5 modified files. +- Prefer changes under 200 lines when feasible. +- Split the work into follow-up tasks if limits are exceeded.