Files

57 lines
1.5 KiB
Python
Raw Permalink Normal View History

"""DevOpsDash — FastAPI entry point."""
from __future__ import annotations
import os
from pathlib import Path
from fastapi import FastAPI, Request
from fastapi.responses import HTMLResponse
from fastapi.staticfiles import StaticFiles
from fastapi.templating import Jinja2Templates
from app.routers import tasks, worklog, knowledge, projects
app = FastAPI(title="DevOpsDash", version="1.0.0", docs_url="/api/docs")
app.include_router(tasks.router)
app.include_router(worklog.router)
app.include_router(knowledge.router)
app.include_router(projects.router)
TEMPLATES_DIR = Path(__file__).parent / "templates"
templates = Jinja2Templates(directory=str(TEMPLATES_DIR))
@app.get("/health")
def health():
from app.redis_client import get_redis
try:
r = get_redis()
r.ping()
redis_ok = True
except Exception:
redis_ok = False
data_dir = os.environ.get("DATA_DIR", "/data")
return {
"status": "ok",
"redis": "ok" if redis_ok else "unavailable",
"data_dir": data_dir,
"data_dir_exists": Path(data_dir).exists(),
}
@app.get("/", response_class=HTMLResponse)
async def dashboard(request: Request):
mcp_url = os.environ.get("DEVOPS_MCP_URL", "http://devops-mcp:8000")
return templates.TemplateResponse("dashboard.html", {
"request": request,
"mcp_url": mcp_url,
})
if __name__ == "__main__":
import uvicorn
port = int(os.environ.get("PORT", 8001))
uvicorn.run("app.main:app", host="0.0.0.0", port=port, reload=True)