from externals.databases.pg_crud import ( count_files_by_user, count_profiles_by_user, ) from externals.databases.pg_models import CVUser from sqlalchemy.ext.asyncio import AsyncSession from utils.logger import get_logger logger = get_logger("score card") class KnowledgeScoreCardService: def __init__(self, db: AsyncSession, user: CVUser): self.db = db self.user = user async def get_score_card(self) -> dict: """ Retrieve extracted profile securely """ # Count total files for this user (from cv_file table) total_file = await count_files_by_user(self.db, self.user.user_id) # Count total extracted profiles associated with this user's files total_extracted = await count_profiles_by_user(self.db, self.user.user_id) # percent as 0-1, safely handle division by zero percent_extracted = round(total_extracted / total_file, 2) if total_file else 0.0 score_card = { "total_file": total_file, "total_extracted": total_extracted, "percent_extracted": round(percent_extracted*100, 0) if total_file else 0, } return score_card