from fastapi import FastAPI, HTTPException
from fastapi.responses import FileResponse
from pathlib import Path
import os
from fastapi.middleware.cors import CORSMiddleware
from app.core.config import settings
from app.api.v1.router import api_router

app = FastAPI(title=settings.app_name, version=settings.app_version, description="AdmnWizard Voice Intelligence Platform")
app.add_middleware(CORSMiddleware, allow_origins=["http://localhost:3000","http://127.0.0.1:3000"], allow_credentials=True, allow_methods=["*"], allow_headers=["*"])
app.include_router(api_router, prefix=settings.api_prefix)

@app.get("/api/v1/tts/audio/{filename}", tags=["tts"])
def serve_tts_audio(filename: str):
    root = Path(os.getenv("VOICEOS_AUDIO_DIR", "generated_audio")).resolve()
    candidate = (root / filename).resolve()
    if candidate.parent != root or not candidate.exists():
        raise HTTPException(404, "Audio file not found")
    return FileResponse(candidate, media_type="audio/wav", filename=candidate.name)

@app.get("/health", tags=["system"])
def health() -> dict:
    return {"status":"ok","service":"voiceos","version":settings.app_version}
