Spaces:
Sleeping
Sleeping
| from fastapi import APIRouter, Depends, Request | |
| from sqlalchemy.ext.asyncio import AsyncSession | |
| from app.core.database import get_db | |
| from app.services.interview_service import InterviewService | |
| from app.schemas.response import ResponseBase | |
| from app.schemas.conversation import ChatInput | |
| from app.api.deps import get_current_user | |
| import uuid | |
| router = APIRouter() | |
| async def start_interview( | |
| request: Request, | |
| db: AsyncSession = Depends(get_db) | |
| ): | |
| service = InterviewService(db) | |
| session_id = str(uuid.uuid4()) | |
| result = await service.start_session(session_id) | |
| return ResponseBase(data=result) | |
| async def get_interview_status( | |
| request: Request, | |
| db: AsyncSession = Depends(get_db) | |
| ): | |
| """Resume session if exists""" | |
| service = InterviewService(db) | |
| session_id = request.headers.get("X-Session-ID") | |
| if not session_id: | |
| return ResponseBase(success=False, message="Missing Session ID") | |
| result = await service.get_session_status(session_id) | |
| return ResponseBase(data=result.get("status"), success=result["success"]) | |
| async def answer_question( | |
| request: Request, | |
| input_data: ChatInput, | |
| db: AsyncSession = Depends(get_db) | |
| ): | |
| service = InterviewService(db) | |
| session_id = request.headers.get("X-Session-ID") | |
| if not session_id: | |
| return ResponseBase(success=False, message="Missing X-Session-ID header") | |
| result = await service.process_answer(session_id, input_data.user_input, input_data.duration) | |
| return ResponseBase(data=result) | |
| async def get_summary( | |
| request: Request, | |
| current_user: dict = Depends(get_current_user), | |
| db: AsyncSession = Depends(get_db) | |
| ): | |
| service = InterviewService(db) | |
| session_id = request.headers.get("X-Session-ID") | |
| if not session_id: | |
| return ResponseBase(success=False, message="Missing X-Session-ID header") | |
| result = await service.generate_summary(session_id, current_user["idtalent"]) | |
| return ResponseBase(data=result) |