Spaces:
Sleeping
Sleeping
| 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 |