CoolFace
Apppublic

Coder19/interview_system

sourceHugging Faceupdated 1y agoView on Hugging Face
0likes
main.py69 linesDownload Raw Back to root
1import logging2from fastapi import FastAPI, WebSocket, WebSocketDisconnect3from fastapi.middleware.cors import CORSMiddleware4 5from backend.api.routes import router as api_router6from interview.app.routes.interview import interview_router7import uvicorn8# Setup logging9logger = logging.getLogger("interview_bot")10logger.setLevel(logging.INFO)11handler = logging.StreamHandler()12formatter = logging.Formatter('%(asctime)s - %(levelname)s - %(message)s')13handler.setFormatter(formatter)14logger.addHandler(handler)15 16app = FastAPI()17 18# Initialize the database or other components if needed19app.add_middleware(20    CORSMiddleware,21    allow_origins=["*"],  # Allows all origins; adjust this in production22    allow_credentials=True,23    allow_methods=["*"],  # Allows all HTTP methods (GET, POST, etc.)24    allow_headers=["*"],  # Allows all headers25)26 27# Include all API routes28app.include_router(api_router)29app.include_router(interview_router)30 31 32@app.websocket("/ws/{user_id}")33async def websocket_endpoint(websocket: WebSocket, user_id: str):34    await websocket.accept()35    try:36        while True:37            audio_data = await websocket.receive_bytes()38            logger.info(f"Received audio from user {user_id}")39            # TODO: Implement audio processing logic here40            # For now, just echo back a confirmation41            await websocket.send_text(f"Received {len(audio_data)} bytes of audio data")42    except WebSocketDisconnect:43        logger.info(f"Client {user_id} disconnected.")44    except Exception as e:45        logger.error(f"WebSocket Error: {e}")46        await websocket.send_text("An error occurred during audio processing.")47 48@app.get("/")49def home():50    return {"message": "AI Interview Bot API"}51 52@app.websocket("/interview")53async def interview(websocket: WebSocket):54    """Handles real-time interview conversation using WebSockets."""55    await websocket.accept()56    try:57        while True:58            data = await websocket.receive_text()59            logger.info(f"Received data: {data}")60            # TODO: Implement interview logic here61            # For now, just echo back the received message62            response = f"Echo: {data}"63            await websocket.send_text(response)64    except WebSocketDisconnect:65        logger.info("Client disconnected.")66    except Exception as e:67        logger.error(f"Interview Error: {e}")68        await websocket.send_text("An error occurred during the interview session.")69