chore: add rcon match detail visual asset tasks
This commit is contained in:
@@ -0,0 +1,146 @@
|
|||||||
|
---
|
||||||
|
id: TASK-135
|
||||||
|
title: Fix RCON match detail faction assets and icon display
|
||||||
|
status: pending
|
||||||
|
type: frontend
|
||||||
|
team: Frontend Senior
|
||||||
|
supporting_teams:
|
||||||
|
- Experto en interfaz
|
||||||
|
roadmap_item: rcon-full-data
|
||||||
|
priority: high
|
||||||
|
---
|
||||||
|
|
||||||
|
# TASK-135 - Fix RCON Match Detail Faction Assets And Icon Display
|
||||||
|
|
||||||
|
## Goal
|
||||||
|
|
||||||
|
Polish faction presentation in the historical RCON match detail scoreboard so faction icons load reliably, are visibly larger, and no longer show long descriptive faction subtitles.
|
||||||
|
|
||||||
|
## Context
|
||||||
|
|
||||||
|
The historical match detail page already renders a RCON/materialized match detail view with a scoreboard-like result block, player table, local faction image paths, and local map/faction assets being added by the user.
|
||||||
|
|
||||||
|
The current direction is acceptable, especially the central result with score, map, Warfare and winner. Remaining rough details are visual and asset-related:
|
||||||
|
|
||||||
|
- German/Eje icon is not visible, likely due to wrong asset path or name.
|
||||||
|
- Faction icons are too small.
|
||||||
|
- Faction subtitles such as `Fuerzas estadounidenses` and `Ejército alemán` should be removed.
|
||||||
|
- Event timeline must remain hidden.
|
||||||
|
- Confidence/source/base must remain hidden.
|
||||||
|
- No `snapshot` wording.
|
||||||
|
- No Elo/MVP blocks.
|
||||||
|
- No Comunidad Hispana #03.
|
||||||
|
|
||||||
|
## Files to Read First
|
||||||
|
|
||||||
|
- `AGENTS.md`
|
||||||
|
- `ai/architecture-index.md`
|
||||||
|
- `ai/repo-context.md`
|
||||||
|
- `ai/orchestrator/frontend-senior.md`
|
||||||
|
- `frontend/historico-partida.html`
|
||||||
|
- `frontend/assets/js/historico-partida.js`
|
||||||
|
- relevant CSS used by `historico-partida.html`
|
||||||
|
|
||||||
|
## Expected Files to Modify
|
||||||
|
|
||||||
|
- `frontend/assets/js/historico-partida.js`
|
||||||
|
- relevant CSS used by `historico-partida.html`
|
||||||
|
- this task file when moving it from `ai/tasks/pending` to `ai/tasks/done`
|
||||||
|
|
||||||
|
If additional files are necessary, document why in the task outcome.
|
||||||
|
|
||||||
|
## Implementation Requirements
|
||||||
|
|
||||||
|
1. Work from a dedicated branch: `codex/task-135-faction-assets`.
|
||||||
|
2. Verify faction assets exist in `frontend/assets/img/factions`.
|
||||||
|
3. Use `.webp` paths, not `.svg`, for faction icons:
|
||||||
|
- `frontend/assets/img/factions/us.webp`
|
||||||
|
- `frontend/assets/img/factions/germany.webp`
|
||||||
|
- `frontend/assets/img/factions/soviets.webp`
|
||||||
|
- `frontend/assets/img/factions/britain.webp`
|
||||||
|
4. Fix the German/Eje icon not displaying.
|
||||||
|
5. Add graceful fallback if any faction image is missing.
|
||||||
|
6. Increase faction icon size in the scoreboard layout.
|
||||||
|
7. Remove long faction subtitle text such as:
|
||||||
|
- `Fuerzas estadounidenses`
|
||||||
|
- `Ejército alemán`
|
||||||
|
- `Fuerzas británicas`
|
||||||
|
- `Ejército soviético`
|
||||||
|
8. Keep only main side/faction labels:
|
||||||
|
- `Aliados`
|
||||||
|
- `Eje`
|
||||||
|
- `Soviéticos`, `Británicos` or `USA` only if needed
|
||||||
|
9. Do not show long descriptive subtitles under faction labels.
|
||||||
|
10. Keep the winner marker if it remains visually subtle.
|
||||||
|
11. Preserve the player table.
|
||||||
|
12. Keep the event timeline hidden.
|
||||||
|
13. Keep confidence/source/base hidden.
|
||||||
|
14. Do not add implementation/debug text to the UI.
|
||||||
|
|
||||||
|
## Constraints
|
||||||
|
|
||||||
|
- Keep the change small and focused.
|
||||||
|
- Preserve the dark HLL Vietnam visual identity.
|
||||||
|
- Do not introduce frameworks or dependencies.
|
||||||
|
- Do not modify backend behavior unless a minimal fallback contract issue is discovered and documented.
|
||||||
|
- Do not modify unrelated files.
|
||||||
|
- Do not reintroduce event timeline, confidence/source/base cards, `snapshot` wording, Elo/MVP blocks or Comunidad Hispana #03.
|
||||||
|
|
||||||
|
## Validation Commands
|
||||||
|
|
||||||
|
Run the relevant checks before marking this task done:
|
||||||
|
|
||||||
|
- `node --check frontend/assets/js/historico-partida.js`
|
||||||
|
- `node --check frontend/assets/js/historico.js`
|
||||||
|
- `node --check frontend/assets/js/historico-recent-live.js`
|
||||||
|
- `python -m compileall backend/app`
|
||||||
|
- `powershell -ExecutionPolicy Bypass -File scripts/run-integration-tests.ps1`
|
||||||
|
- `powershell -ExecutionPolicy Bypass -File scripts/run-rcon-data-pipeline-tests.ps1`
|
||||||
|
- `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`
|
||||||
|
|
||||||
|
## Manual Verification
|
||||||
|
|
||||||
|
Open:
|
||||||
|
|
||||||
|
- `http://localhost:8080/historico.html`
|
||||||
|
- `http://localhost:8080/historico-partida.html?server=comunidad-hispana-02&match=comunidad-hispana-02%3A1779178461%3A1779183861%3Acarentanwarfare`
|
||||||
|
|
||||||
|
Then hard refresh with `Ctrl+F5` and verify:
|
||||||
|
|
||||||
|
- Score remains `3 : 2`.
|
||||||
|
- Winner remains `Aliados`.
|
||||||
|
- Map remains `Carentan`.
|
||||||
|
- Duration remains `1 h 30 min`.
|
||||||
|
- German/Eje icon is visible.
|
||||||
|
- Faction icons are larger than before.
|
||||||
|
- Long faction descriptions are gone.
|
||||||
|
- AntonioPruna still shows 1 kill, 0 deaths, `M1 GARAND`.
|
||||||
|
- Victim row still shows `death_by` AntonioPruna.
|
||||||
|
- No timeline/events section is visible.
|
||||||
|
- No confidence/source/base cards are visible.
|
||||||
|
- No `snapshot`, Elo/MVP block or Comunidad Hispana #03 appears.
|
||||||
|
|
||||||
|
## Git Requirements
|
||||||
|
|
||||||
|
- Use branch `codex/task-135-faction-assets`.
|
||||||
|
- Move only this task from `ai/tasks/pending` to `ai/tasks/done` when complete.
|
||||||
|
- Add `Outcome` and `Validation Result` sections before completing the task.
|
||||||
|
- Stage only intended files.
|
||||||
|
- Commit and push the branch.
|
||||||
|
- Final git status must be clean.
|
||||||
|
|
||||||
|
## Outcome
|
||||||
|
|
||||||
|
To be completed by AI Platform Run / Codex CLI.
|
||||||
|
|
||||||
|
## Validation Result
|
||||||
|
|
||||||
|
To be completed by AI Platform Run / Codex CLI.
|
||||||
|
|
||||||
|
## Change Budget
|
||||||
|
|
||||||
|
- Prefer fewer than 5 modified files.
|
||||||
|
- Prefer changes under 200 lines when feasible.
|
||||||
|
- Split follow-up work into separate tasks if scope grows.
|
||||||
@@ -0,0 +1,151 @@
|
|||||||
|
---
|
||||||
|
id: TASK-136
|
||||||
|
title: Add RCON match detail map hero image
|
||||||
|
status: pending
|
||||||
|
type: frontend
|
||||||
|
team: Frontend Senior
|
||||||
|
supporting_teams:
|
||||||
|
- Experto en interfaz
|
||||||
|
- Disenador grafico
|
||||||
|
roadmap_item: rcon-full-data
|
||||||
|
priority: high
|
||||||
|
---
|
||||||
|
|
||||||
|
# TASK-136 - Add RCON Match Detail Map Hero Image
|
||||||
|
|
||||||
|
## Goal
|
||||||
|
|
||||||
|
Add local map image support to the historical RCON match detail page and show the current match map image prominently in the top hero/header area.
|
||||||
|
|
||||||
|
## Context
|
||||||
|
|
||||||
|
The historical match detail page currently shows the central result data well enough, but the top hero/header area should include the match map image, preferably on the right side. The community logo can stay where it is or be reduced if needed, but the map image should become a clear first-viewport visual element.
|
||||||
|
|
||||||
|
For the known Carentan match, the UI must map the displayed map to:
|
||||||
|
|
||||||
|
- `frontend/assets/img/maps/carentan-day.webp`
|
||||||
|
|
||||||
|
The implementation should use local map assets under `frontend/assets/img/maps` and hide the image area gracefully when no asset is available.
|
||||||
|
|
||||||
|
## Files to Read First
|
||||||
|
|
||||||
|
- `AGENTS.md`
|
||||||
|
- `ai/architecture-index.md`
|
||||||
|
- `ai/repo-context.md`
|
||||||
|
- `ai/orchestrator/frontend-senior.md`
|
||||||
|
- `frontend/historico-partida.html`
|
||||||
|
- `frontend/assets/js/historico-partida.js`
|
||||||
|
- relevant CSS used by `historico-partida.html`
|
||||||
|
|
||||||
|
## Expected Files to Modify
|
||||||
|
|
||||||
|
- `frontend/historico-partida.html`
|
||||||
|
- `frontend/assets/js/historico-partida.js`
|
||||||
|
- relevant CSS used by `historico-partida.html`
|
||||||
|
- this task file when moving it from `ai/tasks/pending` to `ai/tasks/done`
|
||||||
|
|
||||||
|
If additional files are necessary, document why in the task outcome.
|
||||||
|
|
||||||
|
## Implementation Requirements
|
||||||
|
|
||||||
|
1. Work from a dedicated branch: `codex/task-136-map-hero-image`.
|
||||||
|
2. Add map image support on `historico-partida.html` / `historico-partida.js`.
|
||||||
|
3. Display the current map image in the top hero/header area, preferably on the right side.
|
||||||
|
4. Keep the community logo where it is or reduce it if needed, while adding a prominent map image to the right.
|
||||||
|
5. Use map assets from `frontend/assets/img/maps`.
|
||||||
|
6. Add a robust JavaScript mapper from map name / `pretty_name` to asset path.
|
||||||
|
7. For the known Carentan match, map to `frontend/assets/img/maps/carentan-day.webp`.
|
||||||
|
8. Account for likely available asset names:
|
||||||
|
- `carentan-day.webp`
|
||||||
|
- `stmereeglise-day.webp`
|
||||||
|
- `stmariedumont-day.webp`
|
||||||
|
- `utahbeach-day.webp`
|
||||||
|
- `omahabeach-day.webp`
|
||||||
|
- `purpleheartlane-rain.webp`
|
||||||
|
- `hurtgenforest-day.webp`
|
||||||
|
- `foy-day.webp`
|
||||||
|
- `kursk-day.webp`
|
||||||
|
- `kharkov-day.webp`
|
||||||
|
- `driel-day.webp`
|
||||||
|
- `elalamein-day.webp`
|
||||||
|
- `tobruk-day.webp`
|
||||||
|
- `tobruk-dawn.webp`
|
||||||
|
- `mortain-day.webp`
|
||||||
|
- `hill400-day.webp`
|
||||||
|
- `elsenbornridge-day.webp`
|
||||||
|
- `smolensk-day.webp`
|
||||||
|
9. If no map image is found, hide the image area gracefully.
|
||||||
|
10. Keep the layout responsive.
|
||||||
|
11. Do not show implementation/debug text in the UI.
|
||||||
|
12. Preserve the player table.
|
||||||
|
13. Keep event timeline hidden.
|
||||||
|
14. Keep confidence/source/base hidden.
|
||||||
|
|
||||||
|
## Constraints
|
||||||
|
|
||||||
|
- Keep the change small and focused.
|
||||||
|
- Preserve the dark HLL Vietnam visual identity.
|
||||||
|
- Do not introduce frameworks or dependencies.
|
||||||
|
- Do not modify backend unless a minimal API field issue is strictly necessary and documented.
|
||||||
|
- Do not modify unrelated files.
|
||||||
|
- Do not show `snapshot` wording, Elo/MVP blocks or Comunidad Hispana #03.
|
||||||
|
|
||||||
|
## Validation Commands
|
||||||
|
|
||||||
|
Run the relevant checks before marking this task done:
|
||||||
|
|
||||||
|
- `node --check frontend/assets/js/historico-partida.js`
|
||||||
|
- `node --check frontend/assets/js/historico.js`
|
||||||
|
- `node --check frontend/assets/js/historico-recent-live.js`
|
||||||
|
- `python -m compileall backend/app`
|
||||||
|
- `powershell -ExecutionPolicy Bypass -File scripts/run-integration-tests.ps1`
|
||||||
|
- `powershell -ExecutionPolicy Bypass -File scripts/run-rcon-data-pipeline-tests.ps1`
|
||||||
|
- `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`
|
||||||
|
|
||||||
|
## Manual Verification
|
||||||
|
|
||||||
|
Open:
|
||||||
|
|
||||||
|
- `http://localhost:8080/historico.html`
|
||||||
|
- `http://localhost:8080/historico-partida.html?server=comunidad-hispana-02&match=comunidad-hispana-02%3A1779178461%3A1779183861%3Acarentanwarfare`
|
||||||
|
|
||||||
|
Then hard refresh with `Ctrl+F5` and verify:
|
||||||
|
|
||||||
|
- Score remains `3 : 2`.
|
||||||
|
- Winner remains `Aliados`.
|
||||||
|
- Map remains `Carentan`.
|
||||||
|
- Duration remains `1 h 30 min`.
|
||||||
|
- Map image appears in the hero/right area.
|
||||||
|
- For the known Carentan match, the image uses `frontend/assets/img/maps/carentan-day.webp`.
|
||||||
|
- Layout remains responsive on desktop and mobile.
|
||||||
|
- AntonioPruna still shows 1 kill, 0 deaths, `M1 GARAND`.
|
||||||
|
- Victim row still shows `death_by` AntonioPruna.
|
||||||
|
- No implementation/debug text appears.
|
||||||
|
- No timeline/events section is visible.
|
||||||
|
- No confidence/source/base cards are visible.
|
||||||
|
- No `snapshot`, Elo/MVP block or Comunidad Hispana #03 appears.
|
||||||
|
|
||||||
|
## Git Requirements
|
||||||
|
|
||||||
|
- Use branch `codex/task-136-map-hero-image`.
|
||||||
|
- Move only this task from `ai/tasks/pending` to `ai/tasks/done` when complete.
|
||||||
|
- Add `Outcome` and `Validation Result` sections before completing the task.
|
||||||
|
- Stage only intended files.
|
||||||
|
- Commit and push the branch.
|
||||||
|
- Final git status must be clean.
|
||||||
|
|
||||||
|
## Outcome
|
||||||
|
|
||||||
|
To be completed by AI Platform Run / Codex CLI.
|
||||||
|
|
||||||
|
## Validation Result
|
||||||
|
|
||||||
|
To be completed by AI Platform Run / Codex CLI.
|
||||||
|
|
||||||
|
## Change Budget
|
||||||
|
|
||||||
|
- Prefer fewer than 5 modified files.
|
||||||
|
- Prefer changes under 200 lines when feasible.
|
||||||
|
- Split follow-up work into separate tasks if scope grows.
|
||||||
@@ -0,0 +1,145 @@
|
|||||||
|
---
|
||||||
|
id: TASK-137
|
||||||
|
title: Add public scoreboard link to match detail
|
||||||
|
status: pending
|
||||||
|
type: frontend
|
||||||
|
team: Frontend Senior
|
||||||
|
supporting_teams:
|
||||||
|
- Backend Senior
|
||||||
|
- Arquitecto Python
|
||||||
|
roadmap_item: rcon-full-data
|
||||||
|
priority: high
|
||||||
|
---
|
||||||
|
|
||||||
|
# TASK-137 - Add Public Scoreboard Link To Match Detail
|
||||||
|
|
||||||
|
## Goal
|
||||||
|
|
||||||
|
Show a safe public scoreboard action on the historical match detail page when the current match has a valid public `match_url`.
|
||||||
|
|
||||||
|
## Context
|
||||||
|
|
||||||
|
The historical detail page should let users open the public scoreboard match page for the same match when a safe link is available. The button should not appear for broken, missing or unsafe URLs.
|
||||||
|
|
||||||
|
Known constraints:
|
||||||
|
|
||||||
|
- Use the existing backend `match_url` field when available.
|
||||||
|
- If a materialized RCON detail has no `match_url`, use existing scoreboard correlation/link resolver if already present.
|
||||||
|
- If correlation requires backend changes, keep them minimal and covered by tests.
|
||||||
|
- Keep allowlist safety for scoreboard URLs:
|
||||||
|
- `https://scoreboard.comunidadhll.es/`
|
||||||
|
- `https://scoreboard.comunidadhll.es:5443/`
|
||||||
|
- Recent match cards must keep their current behavior.
|
||||||
|
- Detail page must still work without the external link.
|
||||||
|
|
||||||
|
## 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`
|
||||||
|
- backend historical/read-model modules that expose match detail and `match_url`
|
||||||
|
|
||||||
|
## Expected Files to Modify
|
||||||
|
|
||||||
|
- `frontend/historico-partida.html`
|
||||||
|
- `frontend/assets/js/historico-partida.js`
|
||||||
|
- relevant CSS used by `historico-partida.html`
|
||||||
|
- minimal backend historical/read-model or tests only if required for existing `match_url` correlation
|
||||||
|
- this task file when moving it from `ai/tasks/pending` to `ai/tasks/done`
|
||||||
|
|
||||||
|
If additional files are necessary, document why in the task outcome.
|
||||||
|
|
||||||
|
## Implementation Requirements
|
||||||
|
|
||||||
|
1. Work from a dedicated branch: `codex/task-137-scoreboard-link`.
|
||||||
|
2. Show a visible button/link in the match detail page with one of these labels:
|
||||||
|
- `Ver en Scoreboard`
|
||||||
|
- `Ver detalles completos`
|
||||||
|
3. The button must open the public scoreboard match page in a new tab.
|
||||||
|
4. Only show the button when a safe `match_url` exists.
|
||||||
|
5. Do not show broken links.
|
||||||
|
6. Use the existing backend `match_url` field when available.
|
||||||
|
7. If materialized RCON detail has no `match_url`, use existing scoreboard correlation/link resolver if already present.
|
||||||
|
8. If correlation requires backend changes, keep them minimal and covered by tests.
|
||||||
|
9. Preserve allowlist safety for scoreboard URLs:
|
||||||
|
- `https://scoreboard.comunidadhll.es/`
|
||||||
|
- `https://scoreboard.comunidadhll.es:5443/`
|
||||||
|
10. Recent match cards must keep their current behavior.
|
||||||
|
11. Detail page must still work without the external link.
|
||||||
|
12. Preserve the player table.
|
||||||
|
13. Keep event timeline hidden.
|
||||||
|
14. Keep confidence/source/base hidden.
|
||||||
|
15. Do not show implementation/debug text in the UI.
|
||||||
|
|
||||||
|
## Constraints
|
||||||
|
|
||||||
|
- Keep the change minimal and focused.
|
||||||
|
- Preserve the dark HLL Vietnam visual identity.
|
||||||
|
- Do not introduce frameworks or dependencies.
|
||||||
|
- Do not create a broad backend refactor.
|
||||||
|
- Do not modify unrelated files.
|
||||||
|
- Do not reintroduce event timeline, confidence/source/base cards, `snapshot` wording, Elo/MVP blocks or Comunidad Hispana #03.
|
||||||
|
|
||||||
|
## Validation Commands
|
||||||
|
|
||||||
|
Run the relevant checks before marking this task done:
|
||||||
|
|
||||||
|
- `node --check frontend/assets/js/historico-partida.js`
|
||||||
|
- `node --check frontend/assets/js/historico.js`
|
||||||
|
- `node --check frontend/assets/js/historico-recent-live.js`
|
||||||
|
- `python -m compileall backend/app`
|
||||||
|
- `powershell -ExecutionPolicy Bypass -File scripts/run-integration-tests.ps1`
|
||||||
|
- `powershell -ExecutionPolicy Bypass -File scripts/run-rcon-data-pipeline-tests.ps1`
|
||||||
|
- `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`
|
||||||
|
|
||||||
|
## Manual Verification
|
||||||
|
|
||||||
|
Open:
|
||||||
|
|
||||||
|
- `http://localhost:8080/historico.html`
|
||||||
|
- `http://localhost:8080/historico-partida.html?server=comunidad-hispana-02&match=comunidad-hispana-02%3A1779178461%3A1779183861%3Acarentanwarfare`
|
||||||
|
|
||||||
|
Then hard refresh with `Ctrl+F5` and verify:
|
||||||
|
|
||||||
|
- Score remains `3 : 2`.
|
||||||
|
- Winner remains `Aliados`.
|
||||||
|
- Map remains `Carentan`.
|
||||||
|
- Duration remains `1 h 30 min`.
|
||||||
|
- `Ver en Scoreboard` or equivalent only appears when a valid `match_url` exists.
|
||||||
|
- The scoreboard action opens a safe public scoreboard URL in a new tab.
|
||||||
|
- No broken or unsafe link is shown when `match_url` is absent or invalid.
|
||||||
|
- Recent match cards keep their current behavior.
|
||||||
|
- AntonioPruna still shows 1 kill, 0 deaths, `M1 GARAND`.
|
||||||
|
- Victim row still shows `death_by` AntonioPruna.
|
||||||
|
- No timeline/events section is visible.
|
||||||
|
- No confidence/source/base cards are visible.
|
||||||
|
- No `snapshot`, Elo/MVP block or Comunidad Hispana #03 appears.
|
||||||
|
|
||||||
|
## Git Requirements
|
||||||
|
|
||||||
|
- Use branch `codex/task-137-scoreboard-link`.
|
||||||
|
- Move only this task from `ai/tasks/pending` to `ai/tasks/done` when complete.
|
||||||
|
- Add `Outcome` and `Validation Result` sections before completing the task.
|
||||||
|
- Stage only intended files.
|
||||||
|
- Commit and push the branch.
|
||||||
|
- Final git status must be clean.
|
||||||
|
|
||||||
|
## Outcome
|
||||||
|
|
||||||
|
To be completed by AI Platform Run / Codex CLI.
|
||||||
|
|
||||||
|
## Validation Result
|
||||||
|
|
||||||
|
To be completed by AI Platform Run / Codex CLI.
|
||||||
|
|
||||||
|
## Change Budget
|
||||||
|
|
||||||
|
- Prefer fewer than 5 modified files.
|
||||||
|
- Prefer changes under 200 lines when feasible.
|
||||||
|
- Split follow-up work into separate tasks if scope grows.
|
||||||
@@ -0,0 +1,164 @@
|
|||||||
|
---
|
||||||
|
id: TASK-138
|
||||||
|
title: Polish RCON match detail final scoreboard UI
|
||||||
|
status: pending
|
||||||
|
type: frontend
|
||||||
|
team: Experto en interfaz
|
||||||
|
supporting_teams:
|
||||||
|
- Frontend Senior
|
||||||
|
- Disenador grafico
|
||||||
|
roadmap_item: rcon-full-data
|
||||||
|
priority: high
|
||||||
|
---
|
||||||
|
|
||||||
|
# TASK-138 - Polish RCON Match Detail Final Scoreboard UI
|
||||||
|
|
||||||
|
## Goal
|
||||||
|
|
||||||
|
Perform a final focused visual polish pass on the historical RCON match detail page so it more closely resembles the public scoreboard style while preserving the HLL Vietnam dark tactical theme.
|
||||||
|
|
||||||
|
## Context
|
||||||
|
|
||||||
|
The match detail page already renders the important RCON/materialized match data. The central result direction is good, but the page still needs a final scoreboard-style polish and removal of rough labels.
|
||||||
|
|
||||||
|
The user likes the central result:
|
||||||
|
|
||||||
|
- score
|
||||||
|
- map
|
||||||
|
- Warfare
|
||||||
|
- winner
|
||||||
|
|
||||||
|
The page should avoid implementation/source noise and should not expose event timeline, confidence/source/base, snapshot wording, Elo/MVP blocks or Comunidad Hispana #03.
|
||||||
|
|
||||||
|
## Files to Read First
|
||||||
|
|
||||||
|
- `AGENTS.md`
|
||||||
|
- `ai/architecture-index.md`
|
||||||
|
- `ai/repo-context.md`
|
||||||
|
- `ai/orchestrator/frontend-senior.md`
|
||||||
|
- `ai/orchestrator/ui-expert.md`
|
||||||
|
- `ai/orchestrator/graphic-designer.md`
|
||||||
|
- `frontend/historico-partida.html`
|
||||||
|
- `frontend/assets/js/historico-partida.js`
|
||||||
|
- relevant CSS used by `historico-partida.html`
|
||||||
|
|
||||||
|
## Expected Files to Modify
|
||||||
|
|
||||||
|
- `frontend/historico-partida.html`
|
||||||
|
- `frontend/assets/js/historico-partida.js`
|
||||||
|
- relevant CSS used by `historico-partida.html`
|
||||||
|
- this task file when moving it from `ai/tasks/pending` to `ai/tasks/done`
|
||||||
|
|
||||||
|
If additional files are necessary, document why in the task outcome.
|
||||||
|
|
||||||
|
## Implementation Requirements
|
||||||
|
|
||||||
|
1. Work from a dedicated branch: `codex/task-138-final-scoreboard-polish`.
|
||||||
|
2. Make the match detail page resemble the public scoreboard style more closely:
|
||||||
|
- large central score
|
||||||
|
- side labels left/right
|
||||||
|
- bigger faction icons
|
||||||
|
- map/mode/winner around the central score
|
||||||
|
- compact metadata below
|
||||||
|
3. Remove `Partida RCON materializada` from the hero subtitle.
|
||||||
|
4. Replace the hero subtitle with only the server name or server + match date if available.
|
||||||
|
5. Keep `Datos disponibles` only if it still makes sense.
|
||||||
|
6. If `Datos disponibles` no longer fits the polished direction, use a more scoreboard-like heading.
|
||||||
|
7. Ensure these are not visible:
|
||||||
|
- `Confianza`
|
||||||
|
- `Fuente`
|
||||||
|
- `Base`
|
||||||
|
- `Eventos`
|
||||||
|
- `Línea de tiempo`
|
||||||
|
- `MESSAGE`
|
||||||
|
- `TEAM SWITCH`
|
||||||
|
- `CONNECTED`
|
||||||
|
- `KILL`
|
||||||
|
- `MATCH START`
|
||||||
|
- `MATCH END`
|
||||||
|
- `snapshot`
|
||||||
|
- Elo/MVP blocks
|
||||||
|
- Comunidad Hispana #03
|
||||||
|
8. Preserve the player table.
|
||||||
|
9. Preserve known match values for the Carentan detail page:
|
||||||
|
- Map: `Carentan`
|
||||||
|
- Score: `3 : 2`
|
||||||
|
- Winner: `Aliados`
|
||||||
|
- Duration: `1 h 30 min`
|
||||||
|
- AntonioPruna: 1 kill, 0 deaths, `M1 GARAND`
|
||||||
|
- victim row: `death_by` AntonioPruna
|
||||||
|
10. Keep visual consistency with the dark HLL Vietnam theme.
|
||||||
|
11. Keep the layout responsive.
|
||||||
|
12. Do not show implementation/debug text in the UI.
|
||||||
|
|
||||||
|
## Constraints
|
||||||
|
|
||||||
|
- Keep the change small and focused.
|
||||||
|
- Preserve the dark HLL Vietnam visual identity.
|
||||||
|
- Do not introduce frameworks or dependencies.
|
||||||
|
- Do not modify backend unless a tiny presentation contract issue is strictly necessary and documented.
|
||||||
|
- Do not modify unrelated files.
|
||||||
|
- Do not add Elo/MVP blocks.
|
||||||
|
- Do not add Comunidad Hispana #03.
|
||||||
|
- Do not reintroduce event timeline, confidence/source/base cards or `snapshot` wording.
|
||||||
|
|
||||||
|
## Validation Commands
|
||||||
|
|
||||||
|
Run the relevant checks before marking this task done:
|
||||||
|
|
||||||
|
- `node --check frontend/assets/js/historico-partida.js`
|
||||||
|
- `node --check frontend/assets/js/historico.js`
|
||||||
|
- `node --check frontend/assets/js/historico-recent-live.js`
|
||||||
|
- `python -m compileall backend/app`
|
||||||
|
- `powershell -ExecutionPolicy Bypass -File scripts/run-integration-tests.ps1`
|
||||||
|
- `powershell -ExecutionPolicy Bypass -File scripts/run-rcon-data-pipeline-tests.ps1`
|
||||||
|
- `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`
|
||||||
|
|
||||||
|
## Manual Verification
|
||||||
|
|
||||||
|
Open:
|
||||||
|
|
||||||
|
- `http://localhost:8080/historico.html`
|
||||||
|
- `http://localhost:8080/historico-partida.html?server=comunidad-hispana-02&match=comunidad-hispana-02%3A1779178461%3A1779183861%3Acarentanwarfare`
|
||||||
|
|
||||||
|
Then hard refresh with `Ctrl+F5` and verify:
|
||||||
|
|
||||||
|
- Score remains `3 : 2`.
|
||||||
|
- Winner remains `Aliados`.
|
||||||
|
- Map remains `Carentan`.
|
||||||
|
- Duration remains `1 h 30 min`.
|
||||||
|
- Hero does not show `Partida RCON materializada`.
|
||||||
|
- The scoreboard area has a large central score, left/right sides, larger faction icons, and compact metadata.
|
||||||
|
- AntonioPruna still shows 1 kill, 0 deaths, `M1 GARAND`.
|
||||||
|
- Victim row still shows `death_by` AntonioPruna.
|
||||||
|
- No timeline/events section is visible.
|
||||||
|
- No confidence/source/base cards are visible.
|
||||||
|
- No event labels such as `MESSAGE`, `TEAM SWITCH`, `CONNECTED`, `KILL`, `MATCH START` or `MATCH END` appear.
|
||||||
|
- No `snapshot`, Elo/MVP block or Comunidad Hispana #03 appears.
|
||||||
|
- Player table is preserved and readable.
|
||||||
|
- Layout remains responsive on desktop and mobile.
|
||||||
|
|
||||||
|
## Git Requirements
|
||||||
|
|
||||||
|
- Use branch `codex/task-138-final-scoreboard-polish`.
|
||||||
|
- Move only this task from `ai/tasks/pending` to `ai/tasks/done` when complete.
|
||||||
|
- Add `Outcome` and `Validation Result` sections before completing the task.
|
||||||
|
- Stage only intended files.
|
||||||
|
- Commit and push the branch.
|
||||||
|
- Final git status must be clean.
|
||||||
|
|
||||||
|
## Outcome
|
||||||
|
|
||||||
|
To be completed by AI Platform Run / Codex CLI.
|
||||||
|
|
||||||
|
## Validation Result
|
||||||
|
|
||||||
|
To be completed by AI Platform Run / Codex CLI.
|
||||||
|
|
||||||
|
## Change Budget
|
||||||
|
|
||||||
|
- Prefer fewer than 5 modified files.
|
||||||
|
- Prefer changes under 200 lines when feasible.
|
||||||
|
- Split follow-up work into separate tasks if scope grows.
|
||||||
Reference in New Issue
Block a user