ishaq101's picture
clean init
478dec6
raw
history blame
1.52 kB
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,
current_user: CVUser = Depends(get_current_user),
):
"""
Get extracted profile by ID
"""
knowledge_service = KnowledgeService(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",
)
# ๐Ÿ”’ Tenant isolation (IMPORTANT)
if profile.tenant_id != current_user.tenant_id:
raise HTTPException(
status_code=status.HTTP_403_FORBIDDEN,
detail="Not authorized to access this profile",
)
return profile