didi-lot1-ai/ai_platform/modules/dashboard
2026-06-27 06:42:02 -07:00
..
deploy Livrare LOT 1 - Didi 2026-06-25 14:13:25 -07:00
src/dashboard Livrare LOT 1 - Didi 2026-06-25 14:13:25 -07:00
tests Livrare LOT 1 - Didi 2026-06-25 14:13:25 -07:00
web LOT 1 - Optimizare script build -Instalare mono comanda 2026-06-27 06:42:02 -07:00
.dockerignore Livrare LOT 1 - Didi 2026-06-25 14:13:25 -07:00
.env.example Livrare LOT 1 - Didi 2026-06-25 14:13:25 -07:00
INDEX.md LOT 1 - Optimizare script build -Instalare mono comanda 2026-06-27 06:42:02 -07:00
pyproject.toml Livrare LOT 1 - Didi 2026-06-25 14:13:25 -07:00
README.md LOT 1 - Optimizare script build -Instalare mono comanda 2026-06-27 06:42:02 -07:00

Dashboard

Admin dashboard for the didiAI platform. A single FastAPI service that serves a React 19 + MUI 7 + Vite single-page app (the admin UI) plus a JSON API for AI monitoring, a DB-backed Model & Extractor catalog, runtime config, RBAC and audit. It also tracks search-provider usage, costs and request history.

What it does

  • AI monitoring — live health/status of platform modules (proxy to each module's health endpoint), provider quotas (SerpAPI, Tavily, Brave, LinkUp, Exa, OpenRouter), live KPIs and throughput
  • Model & Extractor Catalog — DB-backed CRUD over registered models and extractors, exposed under /api/catalog
  • Request history — 30-day rolling log of every gather/search/fetch request with drill-down
  • Cost tracking — per-provider spend, projections, cost per tier
  • Runtime config — config override store (/api/config) with schema validation and audit trail
  • RBAC — role-based access; in the shipped build the dashboard runs in staging mode with auth bypassed (see below)
  • Brain admin — fact-status browse/override and cache invalidation via a brain proxy

Authentication / staging mode

The build ships in staging mode (DASHBOARD_STAGING_MODE=true), so all auth is bypassed and Keycloak is not active. Keycloak (JWT) is supported but disabled in this delivery: JWT validation only turns on when DASHBOARD_KEYCLOAK_URL is set (empty = off). To go to authenticated mode, set DASHBOARD_KEYCLOAK_URL (e.g. an SSO URL), set DASHBOARD_STAGING_MODE=false, and rebuild the image (Keycloak config is baked into the JS bundle at build time). DB-backed bearer tokens remain as a legacy fallback.

Prerequisites

  • Docker 24+ with Compose V2
  • PostgreSQL 16 (provided by compose, didiAI-dashboard-db on :15432)
  • Internal network access to the platform modules and provider APIs

Quick start

cd deploy
cp ../.env.example .env   # edit with your secrets
./deploy.sh up

The dashboard API listens on http://localhost:51300. The admin SPA is served at http://localhost:51300/admin-ai/.

Endpoints

Admin UI (SPA)

  • /admin-ai/ — React 19 + MUI SPA (overview, live status, history, cost, providers, catalog, config/schema, audit, brain admin). All client-side routes under /admin-ai/ are served by the SPA with index fallback.

Legacy Jinja pages (/, /providers, /history, …) still exist server-side but are not the primary UI; the SPA at /admin-ai/ is the delivered UI.

JSON API (selected)

  • GET /health — liveness + DB ping (health JSON at root)
  • GET /api/stats/providers — live provider stats
  • GET /api/stats/summary?hours=24 — aggregated counters
  • GET /api/stats/timeline?hours=24 — hourly buckets for charts
  • GET /api/stats/cost — cost + projection
  • GET /api/history?limit=50&tier=premium — filtered history
  • GET /api/history/{request_id} — single request with full payload
  • GET|POST|PUT|DELETE /api/catalog/... — Model & Extractor catalog CRUD
  • GET /api/config, PUT|DELETE /api/config/{key} — runtime config overrides
  • GET /api/proxy/{module_id}/health — module health proxy (AI monitoring)
  • /api/brain/* — brain proxy (fact status, cache invalidation)
  • POST /api/ingest/event — receives events from web-api middleware

Architecture

web-api ────► POST /api/ingest/event ────► dashboard-api ────► PostgreSQL
browser ────► GET  /admin-ai/ (React SPA) ──┘   │
                                                ├─ reads provider APIs live
                                                ├─ proxies module health + brain
                                                └─ serves SPA static (index fallback)

Tech stack

  • FastAPI + Pydantic (pydantic-settings, env prefix DASHBOARD_)
  • SQLAlchemy 2.0 async + asyncpg (tables created via create_all at startup)
  • React 19 + MUI 7 + Vite 7 + react-router 7 + TanStack Query + Recharts (built into web_dist/, served as static SPA)
  • PostgreSQL 16