ishaq101's picture
[NOTICKET] [AI] Calculate Score - filtering profiles first before calculate => DONE
1ee7e5c
import profile
from externals.databases.pg_models import CVUser
from externals.databases.database import get_db
from fastapi import APIRouter, Depends, status, HTTPException
from interfaces.api.deps import get_current_user
from services.knowledge.knowledge_setup import KnowledgeService
from utils.logger import get_logger
logger = get_logger("Profile API")
router = APIRouter(
prefix="/profile",
tags=["Profile"],
)
@router.post("/extract_profile")
async def extract_profile(
filename: str,
db=Depends(get_db),
current_user: CVUser = Depends(get_current_user),
):
"""
Extract structured profile from CV PDF
"""
knowledge_service = KnowledgeService(
db=db,
user=current_user,
)
return await knowledge_service.extract.extract(filename)
@router.get("/{profile_id}")
async def get_profile(
profile_id: str,
db=Depends(get_db),
current_user: CVUser = Depends(get_current_user),
):
"""
Get extracted profile by ID
"""
knowledge_service = KnowledgeService(db=db, user=current_user)
profile = await knowledge_service.profile.get_profile(profile_id)
if not profile:
raise HTTPException(
status_code=status.HTTP_404_NOT_FOUND,
detail="Profile not found",
)
return profile
@router.get("/profiles/{criteria_id}")
async def get_profiles(
criteria_id: str,
db=Depends(get_db),
current_user: CVUser = Depends(get_current_user),
):
"""
Get profiles based on criteria id
"""
knowledge_service = KnowledgeService(db=db, user=current_user)
profiles = await knowledge_service.profile.get_profiles_by_criteria(criteria_id=criteria_id)
logger.info(f"retrieved profiles: {profiles}")
if not profiles:
raise HTTPException(
status_code=status.HTTP_404_NOT_FOUND,
detail="Profiles not found",
)
return profiles