""" Interview Prep API routes. """ from fastapi import APIRouter, HTTPException from pydantic import BaseModel from app.api.deps import CurrentUser, DBSession from app.agents.interview_prep import InterviewPrepAgent, InterviewType router = APIRouter(prefix="/ai/interview", tags=["interview-prep"]) class GenerateQuestionsRequest(BaseModel): job_title: str job_description: str resume_text: str | None = None interview_type: str = "general" num_questions: int = 5 class CompanyResearchRequest(BaseModel): company_name: str job_title: str | None = None company_description: str | None = None class EvaluateAnswerRequest(BaseModel): question: str answer: str job_title: str | None = None class StarStoryRequest(BaseModel): experience_bullet: str target_question_type: str = "general" @router.post("/questions") async def generate_interview_questions( data: GenerateQuestionsRequest, db: DBSession, user: CurrentUser ): """Generate tailored interview questions based on job and resume.""" agent = InterviewPrepAgent(db) try: interview_type = InterviewType(data.interview_type) except ValueError: interview_type = InterviewType.GENERAL result = await agent.generate_questions( job_title=data.job_title, job_description=data.job_description, resume_text=data.resume_text, interview_type=interview_type, num_questions=data.num_questions, ) return result @router.post("/company-research") async def research_company(data: CompanyResearchRequest, db: DBSession, user: CurrentUser): """Get company research brief for interview preparation.""" agent = InterviewPrepAgent(db) result = await agent.research_company( company_name=data.company_name, job_title=data.job_title, company_description=data.company_description, ) return result @router.post("/evaluate-answer") async def evaluate_practice_answer( data: EvaluateAnswerRequest, db: DBSession, user: CurrentUser ): """Evaluate a practice interview answer with coaching feedback.""" agent = InterviewPrepAgent(db) result = await agent.evaluate_answer( question=data.question, answer=data.answer, job_title=data.job_title, ) return result @router.post("/star-story") async def generate_star_story(data: StarStoryRequest, db: DBSession, user: CurrentUser): """Convert a resume bullet into a full STAR interview story.""" agent = InterviewPrepAgent(db) result = await agent.generate_star_story( experience_bullet=data.experience_bullet, target_question_type=data.target_question_type, ) return result