| """ |
| 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 |
|
|