5d60d33db1
Volledige Foodlinkk Command Center uitbreiding met social automatisering, reclamefolder filters, Proxmox monitoring en documentatie.
53 lines
1.8 KiB
Python
53 lines
1.8 KiB
Python
"""Hermes Telegram Command Center UI."""
|
|
from __future__ import annotations
|
|
|
|
import httpx
|
|
from fastapi import APIRouter, Request
|
|
from fastapi.responses import HTMLResponse
|
|
from fastapi.templating import Jinja2Templates
|
|
from pathlib import Path
|
|
|
|
from app.config import settings
|
|
|
|
router = APIRouter(prefix="/hermes", tags=["hermes"])
|
|
BASE_DIR = Path(__file__).resolve().parent.parent.parent
|
|
templates = Jinja2Templates(directory=str(BASE_DIR / "templates"))
|
|
|
|
CEO_CHAT_ID = 8859782446
|
|
CTO_CHAT_ID = 789036463
|
|
CEO_NAME = "Aïssa"
|
|
CTO_NAME = "Mo"
|
|
|
|
|
|
@router.get("", response_class=HTMLResponse)
|
|
async def hermes_dashboard(request: Request) -> HTMLResponse:
|
|
stats = {"conversations": 0, "messages": 0, "edges": 0, "embeddings": 0}
|
|
conversations = []
|
|
try:
|
|
async with httpx.AsyncClient(timeout=15.0) as client:
|
|
r = await client.get(f"{settings.TOOLS_API_URL.rstrip('/')}/brain/stats")
|
|
if r.status_code == 200:
|
|
data = r.json()
|
|
stats = data.get("stats") or stats
|
|
conversations_resp = await client.get(
|
|
f"{settings.TOOLS_API_URL.rstrip('/')}/brain/conversations", params={"limit": 20}
|
|
)
|
|
if conversations_resp.status_code == 200:
|
|
conversations = conversations_resp.json().get("items") or []
|
|
except Exception:
|
|
pass
|
|
|
|
return templates.TemplateResponse(
|
|
"hermes.html",
|
|
{
|
|
"request": request,
|
|
"page_title": "Hermes",
|
|
"stats": stats,
|
|
"conversations": conversations,
|
|
"ceo_chat_id": CEO_CHAT_ID,
|
|
"cto_chat_id": CTO_CHAT_ID,
|
|
"allowed_sites": ["Airbnb", "Booking.com", "DuckDuckGo", "HolidayCheck"],
|
|
"blocked_sites": ["Google", "Vrbo", "Expedia", "Hotels.com", "TUI", "TripAdvisor"],
|
|
},
|
|
)
|