Spaces:
Running
Running
File size: 1,943 Bytes
2216e64 478dec6 2216e64 478dec6 2216e64 478dec6 2216e64 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 | 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
|