Yash030 Claude Opus 4.7 commited on
Commit
1985e64
·
1 Parent(s): a47c2e0

Display admin dashboard on root page

Browse files

- Root "/" now shows admin dashboard instead of JSON
- Uses same template as /admin endpoint
- Auto-refresh every 10 seconds

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

Files changed (1) hide show
  1. api/routes.py +12 -11
api/routes.py CHANGED
@@ -1,11 +1,12 @@
1
  """FastAPI route handlers."""
2
 
3
  from fastapi import APIRouter, Depends, HTTPException, Request, Response
 
4
  from loguru import logger
 
5
 
6
  from config.settings import Settings
7
  from core.anthropic import get_token_count
8
- from core.session_tracker import SessionTracker
9
  from providers.nvidia_nim import metrics as nvidia_nim_metrics
10
  from providers.registry import ProviderRegistry
11
 
@@ -18,6 +19,8 @@ from .services import ClaudeProxyService
18
 
19
  router = APIRouter()
20
 
 
 
21
  DISCOVERED_MODEL_CREATED_AT = "1970-01-01T00:00:00Z"
22
 
23
 
@@ -197,16 +200,14 @@ async def probe_count_tokens(_auth=Depends(require_api_key)):
197
  return _probe_response("POST, HEAD, OPTIONS")
198
 
199
 
200
- @router.get("/")
201
- async def root(
202
- settings: Settings = Depends(get_settings), _auth=Depends(require_api_key)
203
- ):
204
- """Root endpoint."""
205
- tracker = SessionTracker.get_instance()
206
- return {
207
- "status": "ok",
208
- "active_sessions": len(tracker._sessions),
209
- }
210
 
211
 
212
  @router.api_route("/", methods=["HEAD", "OPTIONS"])
 
1
  """FastAPI route handlers."""
2
 
3
  from fastapi import APIRouter, Depends, HTTPException, Request, Response
4
+ from fastapi.responses import HTMLResponse
5
  from loguru import logger
6
+ from starlette.templating import Jinja2Templates
7
 
8
  from config.settings import Settings
9
  from core.anthropic import get_token_count
 
10
  from providers.nvidia_nim import metrics as nvidia_nim_metrics
11
  from providers.registry import ProviderRegistry
12
 
 
19
 
20
  router = APIRouter()
21
 
22
+ templates = Jinja2Templates(directory="templates")
23
+
24
  DISCOVERED_MODEL_CREATED_AT = "1970-01-01T00:00:00Z"
25
 
26
 
 
200
  return _probe_response("POST, HEAD, OPTIONS")
201
 
202
 
203
+ @router.get("/", response_class=HTMLResponse)
204
+ async def root(request: Request, _auth=Depends(require_api_key)):
205
+ """Root endpoint - displays admin dashboard."""
206
+ from .admin import _get_admin_data
207
+
208
+ data = _get_admin_data()
209
+
210
+ return templates.TemplateResponse("admin.html", {"request": request, **data})
 
 
211
 
212
 
213
  @router.api_route("/", methods=["HEAD", "OPTIONS"])