#!/usr/bin/env python3
"""
FastAPI backend for diarization visualization tool.

Features:
- CORS enabled for frontend integration
- Static file serving for videos/audio
- Range request support for video seeking
- WebSocket for real-time pipeline progress
- Integration with existing pipeline code
"""

import sys
from pathlib import Path

# Add parent directory to path to import from src/
root_dir = Path(__file__).parent.parent.parent
sys.path.insert(0, str(root_dir))

from fastapi import FastAPI
from fastapi.middleware.cors import CORSMiddleware
from fastapi.staticfiles import StaticFiles
import logging

from routes import videos, pipeline

# Configure logging
logging.basicConfig(
    level=logging.INFO,
    format='%(asctime)s - %(name)s - %(levelname)s - %(message)s'
)
logger = logging.getLogger("VisualizerBackend")

# Create FastAPI app
app = FastAPI(
    title="Diarization Visualizer API",
    description="Backend API for speaker diarization visualization tool",
    version="1.0.0"
)

# === CORS: Allow frontend to access backend from any origin ===
# This enables access from public IPs and different networks
# Note: allow_credentials=False when using allow_origins=["*"]
app.add_middleware(
    CORSMiddleware,
    allow_origins=["*"],  # Allow all origins for public access
    allow_credentials=False,  # Must be False when using wildcard origins
    allow_methods=["*"],
    allow_headers=["*"],
    expose_headers=["*"],  # Expose all headers to frontend
)

# Include routers
app.include_router(videos.router, prefix="/api", tags=["videos"])
app.include_router(pipeline.router, prefix="/api", tags=["pipeline"])

# Health check endpoint
@app.get("/api/health")
async def health_check():
    """Health check endpoint"""
    return {
        "status": "healthy",
        "service": "diarization-visualizer",
        "version": "1.0.0"
    }

# Root endpoint
@app.get("/")
async def root():
    """Root endpoint with API info"""
    return {
        "message": "Diarization Visualizer API",
        "docs": "/docs",
        "health": "/api/health"
    }

if __name__ == "__main__":
    import uvicorn
    
    logger.info("🚀 Starting Diarization Visualizer Backend...")
    logger.info("📖 API Docs: http://localhost:8000/docs")
    logger.info("🎥 Frontend: http://localhost:3000")
    
    uvicorn.run(
        "main:app",
        host="0.0.0.0",
        port=8000,
        reload=True,
        log_level="info"
    )

