Files
comunidadhll/ai/tasks/pending/TASK-151-current-match-page-base.md
2026-05-21 15:02:55 +02:00

5.5 KiB

id, title, status, type, team, supporting_teams, roadmap_item, priority
id title status type team supporting_teams roadmap_item priority
TASK-151 Current match page base pending frontend Frontend Senior
Backend Senior
rcon-full-data high

TASK-151 - Current match page base

Goal

Create the first functional internal "Partida actual" page for active Comunidad Hispana servers.

Background

The home page will link to partida-actual.html?server=<server_slug>. We need the first real version of our internal current-match page.

This page should be visually aligned with the existing historical match detail page, but it represents a live match instead of a closed historical match.

Important public scoreboard URLs:

  • comunidad-hispana-01 -> https://scoreboard.comunidadhll.es
  • comunidad-hispana-02 -> https://scoreboard.comunidadhll.es:5443

These are base URLs for the current public scoreboard and must not include /games.

Constraints / DO NOT BREAK

  • Do not break the existing historical page.
  • Do not break the existing match detail page.
  • Do not change scoreboard correlation logic.
  • Do not implement the live kill feed in this task unless there is already a safe endpoint that can be reused trivially.
  • Do not fabricate closed-match data.
  • Do not show final winner/duration/closed_at for a live match.
  • Do not depend on server #03.
  • Do not expose untrusted public scoreboard URLs.
  • Keep polling moderate and safe.

Allowed Changes

  • partida-actual.html
  • new frontend JS/CSS for current match page
  • backend API endpoint only if needed
  • backend read-model code only if needed for current live state
  • tests where practical

Implementation Requirements

  1. Create or upgrade partida-actual.html as a real live-current-match page.
  2. The page must read ?server= from the URL.
  3. Supported server values:
    • comunidad-hispana-01
    • comunidad-hispana-02
  4. Unknown server values must show a safe error/empty state and must not build external URLs from the unknown value.
  5. Add trusted current public scoreboard links:
    • comunidad-hispana-01 -> https://scoreboard.comunidadhll.es
    • comunidad-hispana-02 -> https://scoreboard.comunidadhll.es:5443
  6. Add a "Ver scoreboard público" button using the trusted base URL for that server.
  7. The page should display a live-match header with:
    • server name
    • live/online status
    • current map
    • game mode if available
    • started_at if available
    • current players / max players if available
    • last updated/captured timestamp
  8. The page should display a scoreboard panel:
    • allied score if available
    • axis score if available
    • neutral state if scores are unavailable
  9. Do not display:
    • final duration
    • final winner
    • closed_at
    • any copy implying that the match has finished
  10. Add a placeholder section for future live kill feed:
    • title: "Feed de combate"
    • text explaining that live kill events will appear here when enabled
    • no fake kill rows
  11. Add a player table section if current player stats are already available from existing APIs. If they are not available, show a clean placeholder:
    • "Las estadísticas en vivo aparecerán cuando haya datos suficientes."
  12. Add frontend polling with safe in-flight protection:
    • default interval: 30 seconds
    • avoid overlapping requests
    • show stale/error states clearly
  13. If no backend endpoint exists for current match state, add a minimal endpoint that derives the current server state from existing live/RCON snapshot data. Keep it read-only.
  14. The endpoint response should be stable and minimal:
    • server slug/name
    • status
    • map
    • game_mode
    • started_at
    • allied_score
    • axis_score
    • players
    • max_players
    • captured_at/updated_at
    • public_scoreboard_url from trusted mapping

Files to Read First

  • AGENTS.md
  • ai/architecture-index.md
  • ai/repo-context.md
  • ai/orchestrator/frontend-senior.md
  • current historical match detail frontend files
  • live server backend/read-model files used by the existing server cards

Expected Files to Modify

  • partida-actual.html
  • new current-match frontend JS/CSS files as needed
  • minimal live-state backend endpoint/read-model files only if existing APIs cannot supply the page state
  • focused tests where practical

Validation

  • python -m compileall backend/app
  • Run backend tests relevant to live server/read model if available.
  • Run node --check on modified/new frontend JS files.
  • Review git diff --name-only and confirm the changed files match this task.

Manual Verification

  1. Open partida-actual.html?server=comunidad-hispana-01.
  2. Open partida-actual.html?server=comunidad-hispana-02.
  3. Verify the public scoreboard button opens:
    • https://scoreboard.comunidadhll.es
    • https://scoreboard.comunidadhll.es:5443
  4. Verify /games is not used for the current public scoreboard button.
  5. Verify no final/closed-match fields are shown.
  6. Verify unknown server query values do not create unsafe links.

Commit Message

feat: add current match page base

Expected Outcome

A safe first version of the internal current-match page exists and can display live server/match state without pretending the match is closed.

Outcome

Document the live-state source, polling behavior, validation performed, and any 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 the scope grows.