TalentaTalkBackend / app /api /v1 /endpoints /interview_flow.py
vithariumz's picture
Deploy: Initial Backend Release v1.0
52f5a2a
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()
@router.get("/start", response_model=ResponseBase)
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)
@router.get("/status", response_model=ResponseBase)
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"])
@router.post("/answer", response_model=ResponseBase)
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)
@router.post("/summary", response_model=ResponseBase)
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)