Skip to content

B.4 — Admin HTML dashboard served by Spring on port 9090#75

Draft
Copilot wants to merge 2 commits intomainfrom
copilot/create-html-dashboard-frontend
Draft

B.4 — Admin HTML dashboard served by Spring on port 9090#75
Copilot wants to merge 2 commits intomainfrom
copilot/create-html-dashboard-frontend

Conversation

Copy link
Copy Markdown
Contributor

Copilot AI commented Mar 28, 2026

Adds a self-contained admin monitoring dashboard (/admin/index.html) served statically by Spring Boot, backed by five new /admin/* REST endpoints that aggregate epidemiological KPIs, rankings, risk classifications, and AI query frequency.

New REST endpoints (/admin)

Endpoint Source data
GET /admin/resumo ConsultarBrasilEpidemiologicoUseCase — national KPIs
GET /admin/top-municipios?top=N ConsultarRankingMunicipalUseCase — incidence ranking
GET /admin/top-estados Brazil aggregate — estadosPiores list
GET /admin/municipios-risco Brazil aggregate — municipiosPiores list
GET /admin/buscas-ia?top=N In-memory query frequency tracker

In-memory AI query tracker (IaBuscaTracker)

Thread-safe service backed by a single ConcurrentHashMap<String, Entrada> (count + last-seen timestamp per normalised query). Hooked into BuscaController.buscar() to record every POST /api/busca call automatically.

// BuscaController.buscar()
iaBuscaTracker.registrar(request.getPergunta());
return buscaCompletaUseCase.buscarPorPergunta(request.getPergunta());

Frontend (static/admin/index.html)

Dark-theme SPA with no build step:

  • KPI grid (4 cards): total cases, incidence/100k, trend, municipalities in epidemic
  • Dual bar charts via Chart.js CDN: top-10 municipalities (horizontal) + top states (vertical)
  • Risk panel: colour-coded list (EPIDEMIA=red / ALTO=orange / MODERADO=yellow / BAIXO=green)
  • AI queries list: frequency-ranked with last-seen timestamp
  • Auto-refresh every 30 s via fetch() with countdown display

Configuration changes (application.yml)

  • Port changed 8080 → 9090
  • spring.web.resources.static-locations: classpath:/static/ (enables static serving)
  • Actuator exposure extended to include metrics and caches

Access at: http://localhost:9090/admin/index.html

Warning

Firewall rules blocked me from connecting to one or more addresses (expand for details)

I tried to connect to the following addresses, but was blocked by firewall rules:

  • accounts.google.com
    • Triggering command: /proc/self/exe /proc/self/exe --type=utility --utility-sub-type=network.mojom.NetworkService --lang=en-US --service-sandbox-type=network --no-sandbox --use-angle=swiftshader-webgl --crashpad-handler-pid=6291 --enable-crash-reporter=, --noerrdialogs --user-data-dir=/tmp/org.chromium.Chromium.scoped_dir.H3HBFd --change-stack-guard-on-fork=enable --shared-files=network_parent_dirs_pipe:100,v8_context_snapshot_data:101 --field-trial-handle=3,i,4251327781813546917,8611569270026741793,262144 --disable-features=PaintHolding --variations-seed-version --pseudonymization-salt-handle=7,i,17811273830117363430,5335141582059268971,4 --trace-process-track-uuid=3190708989122997041 om/fiap-tech-cha-t /bin/java (dns block)
    • Triggering command: /usr/bin/chromium-browser chromium-browser --headless --no-sandbox --disable-gpu --screenshot=/tmp/dashboard-preview.png --window-size=1400,900 file:///home/REDACTED/work/vigisus/vigisus/backend/src/main/resources/static/admin/index.html ACCEPT (dns block)
  • cdn.jsdelivr.net
    • Triggering command: /proc/self/exe /proc/self/exe --type=utility --utility-sub-type=network.mojom.NetworkService --lang=en-US --service-sandbox-type=network --no-sandbox --use-angle=swiftshader-webgl --crashpad-handler-pid=6291 --enable-crash-reporter=, --noerrdialogs --user-data-dir=/tmp/org.chromium.Chromium.scoped_dir.H3HBFd --change-stack-guard-on-fork=enable --shared-files=network_parent_dirs_pipe:100,v8_context_snapshot_data:101 --field-trial-handle=3,i,4251327781813546917,8611569270026741793,262144 --disable-features=PaintHolding --variations-seed-version --pseudonymization-salt-handle=7,i,17811273830117363430,5335141582059268971,4 --trace-process-track-uuid=3190708989122997041 om/fiap-tech-cha-t /bin/java (dns block)
    • Triggering command: /usr/bin/chromium-browser chromium-browser --headless --no-sandbox --disable-gpu --screenshot=/tmp/dashboard-preview.png --window-size=1400,900 file:///home/REDACTED/work/vigisus/vigisus/backend/src/main/resources/static/admin/index.html ACCEPT (dns block)
  • clients2.google.com
    • Triggering command: /proc/self/exe /proc/self/exe --type=utility --utility-sub-type=network.mojom.NetworkService --lang=en-US --service-sandbox-type=network --no-sandbox --use-angle=swiftshader-webgl --crashpad-handler-pid=6291 --enable-crash-reporter=, --noerrdialogs --user-data-dir=/tmp/org.chromium.Chromium.scoped_dir.H3HBFd --change-stack-guard-on-fork=enable --shared-files=network_parent_dirs_pipe:100,v8_context_snapshot_data:101 --field-trial-handle=3,i,4251327781813546917,8611569270026741793,262144 --disable-features=PaintHolding --variations-seed-version --pseudonymization-salt-handle=7,i,17811273830117363430,5335141582059268971,4 --trace-process-track-uuid=3190708989122997041 om/fiap-tech-cha-t /bin/java (dns block)
    • Triggering command: /usr/bin/chromium-browser chromium-browser --headless --no-sandbox --disable-gpu --screenshot=/tmp/dashboard-preview.png --window-size=1400,900 file:///home/REDACTED/work/vigisus/vigisus/backend/src/main/resources/static/admin/index.html ACCEPT (dns block)
  • redirector.gvt1.com
    • Triggering command: /proc/self/exe /proc/self/exe --type=utility --utility-sub-type=network.mojom.NetworkService --lang=en-US --service-sandbox-type=network --no-sandbox --use-angle=swiftshader-webgl --crashpad-handler-pid=6291 --enable-crash-reporter=, --noerrdialogs --user-data-dir=/tmp/org.chromium.Chromium.scoped_dir.H3HBFd --change-stack-guard-on-fork=enable --shared-files=network_parent_dirs_pipe:100,v8_context_snapshot_data:101 --field-trial-handle=3,i,4251327781813546917,8611569270026741793,262144 --disable-features=PaintHolding --variations-seed-version --pseudonymization-salt-handle=7,i,17811273830117363430,5335141582059268971,4 --trace-process-track-uuid=3190708989122997041 om/fiap-tech-cha-t /bin/java (dns block)
    • Triggering command: /usr/bin/chromium-browser chromium-browser --headless --no-sandbox --disable-gpu --screenshot=/tmp/dashboard-preview.png --window-size=1400,900 file:///home/REDACTED/work/vigisus/vigisus/backend/src/main/resources/static/admin/index.html ACCEPT (dns block)
  • www.google.com
    • Triggering command: /proc/self/exe /proc/self/exe --type=utility --utility-sub-type=network.mojom.NetworkService --lang=en-US --service-sandbox-type=network --no-sandbox --use-angle=swiftshader-webgl --crashpad-handler-pid=6291 --enable-crash-reporter=, --noerrdialogs --user-data-dir=/tmp/org.chromium.Chromium.scoped_dir.H3HBFd --change-stack-guard-on-fork=enable --shared-files=network_parent_dirs_pipe:100,v8_context_snapshot_data:101 --field-trial-handle=3,i,4251327781813546917,8611569270026741793,262144 --disable-features=PaintHolding --variations-seed-version --pseudonymization-salt-handle=7,i,17811273830117363430,5335141582059268971,4 --trace-process-track-uuid=3190708989122997041 om/fiap-tech-cha-t /bin/java (dns block)
    • Triggering command: /usr/bin/chromium-browser chromium-browser --headless --no-sandbox --disable-gpu --screenshot=/tmp/dashboard-preview.png --window-size=1400,900 file:///home/REDACTED/work/vigisus/vigisus/backend/src/main/resources/static/admin/index.html ACCEPT (dns block)

If you need me to access, download, or install something from one of these locations, you can either:


⚡ Quickly spin up Copilot coding agent tasks from anywhere on your macOS or Windows machine with Raycast.

Copilot AI changed the title [WIP] Add HTML frontend for dashboard served by Spring B.4 — Admin HTML dashboard served by Spring on port 9090 Mar 31, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants