Coder19/interview_system
0
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 