fix: add GET / route serving opax.html from static/

This commit is contained in:
chrischristiansen-glitch 2026-06-10 21:15:31 +02:00
parent 40788c35d4
commit 950220166f

View File

@ -5,9 +5,10 @@ import os
import sys
import logging
from contextlib import asynccontextmanager
from pathlib import Path
from fastapi import FastAPI, HTTPException, Request
from fastapi.responses import JSONResponse
from fastapi.responses import JSONResponse, FileResponse
from pydantic import BaseModel
logging.basicConfig(level=logging.INFO)
@ -31,12 +32,16 @@ PROJECT_ID = os.environ.get("GOOGLE_CLOUD_PROJECT", "propane-will-491900
BQ_BILLING_DATASET = os.environ.get("BQ_BILLING_DATASET", "billing_data")
CLOUD_BUILD_TRIGGER_ID = os.environ.get("CLOUD_BUILD_TRIGGER_ID", "")
# Static folder: /app/static/ (two levels up from agents/core-logic)
STATIC_DIR = Path(__file__).parent.parent.parent / "static"
_budget_store: dict = {}
@asynccontextmanager
async def lifespan(app: FastAPI):
logger.info(f"OSVauco agent '{APP_NAME}' starting up")
logger.info(f"Static dir: {STATIC_DIR} (exists={STATIC_DIR.exists()})")
yield
logger.info(f"OSVauco agent '{APP_NAME}' shutting down")
@ -80,6 +85,25 @@ async def _ensure_session(user_id: str, session_id: str):
return session
# ── root — serve opax.html ────────────────────────────────────────────────────
@app.get("/")
async def root():
index = STATIC_DIR / "opax.html"
if not index.exists():
logger.error(f"opax.html not found at {index}")
raise HTTPException(status_code=404, detail=f"opax.html not found at {index}")
return FileResponse(str(index), media_type="text/html")
# ── static files ──────────────────────────────────────────────────────────────
@app.get("/static/{filename}")
async def static_file(filename: str):
filepath = STATIC_DIR / filename
if not filepath.exists():
raise HTTPException(status_code=404, detail=f"{filename} not found")
return FileResponse(str(filepath))
# ── helse ────────────────────────────────────────────────────────────────────
@app.get("/health")
async def health():
@ -225,7 +249,6 @@ async def tokens_estimate(complexity: str = "medium"):
return JSONResponse({"complexity": complexity, "factor": factor, "estimated_usd": None, "warning": "Ingen data ennå (OQ-15)"})
row = result[0]
avg_cost = float(row.avg_cost_per_call or 0)
# Estimat: 1 oppdrag = 20 kall snitt × faktor
CALLS_PER_TASK = 20
estimated = round(avg_cost * CALLS_PER_TASK * factor, 4)
return JSONResponse({