Spaces:
Sleeping
Sleeping
| from fastapi import APIRouter, Depends | |
| from sqlalchemy.orm import Session | |
| from typing import List | |
| from pydantic import BaseModel | |
| import datetime | |
| from app.db.session import SessionLocal | |
| from app.models.score import ResumeScore | |
| from app.models.resume import Resume | |
| router = APIRouter() | |
| def get_db(): | |
| db = SessionLocal() | |
| try: | |
| yield db | |
| finally: | |
| db.close() | |
| class ProgressItem(BaseModel): | |
| id: int | |
| resume_id: str | |
| filename: str | |
| ats_score: float | |
| timestamp: datetime.datetime | |
| summary_bit: str | |
| from app.api.deps import get_current_user | |
| from app.models.user import User | |
| async def get_progress(db: Session = Depends(get_db), current_user: User = Depends(get_current_user)): | |
| """Fetch chronological progress of resumes.""" | |
| # Join scores with resume info | |
| # Filter by user_id | |
| results = db.query(ResumeScore, Resume.filename, Resume.version_number, Resume.version_label)\ | |
| .join(Resume, ResumeScore.resume_id == Resume.resume_id)\ | |
| .filter(ResumeScore.user_id == current_user.id)\ | |
| .order_by(ResumeScore.timestamp.asc()).all() | |
| response = [] | |
| for score, filename, v_num, v_lbl in results: | |
| response.append({ | |
| "id": score.id, | |
| "resume_id": score.resume_id, | |
| "filename": filename, | |
| "ats_score": score.ats_score, | |
| "timestamp": score.timestamp, | |
| "summary_bit": score.missing_skills | |
| }) | |
| return response | |