nsbecf / src /models.py
acarey5
new scrapping
851ce09
from dataclasses import asdict, dataclass, field
from typing import Any, Dict, List
@dataclass
class ResumeProfile:
skills: List[str] = field(default_factory=list)
languages: List[str] = field(default_factory=list)
frameworks: List[str] = field(default_factory=list)
tools: List[str] = field(default_factory=list)
target_titles: List[str] = field(default_factory=list)
locations: List[str] = field(default_factory=list)
experience_level: str = "entry"
@dataclass
class CompanyRecord:
company: str
careers_url: str = ""
source: str = "default"
meta: Dict[str, str] = field(default_factory=dict)
ats_type: str = ""
ats_identifier: str = ""
priority: int = 0
@dataclass
class JobPosting:
company: str
title: str
location: str
url: str
department: str = ""
description: str = ""
ats: str = "unknown"
source_ats: str = "unknown"
resolved_url: str = ""
employment_type: str = ""
posted_date: str = ""
is_remote: bool = False
is_entry_level: bool = False
failure_reason: str = ""
raw_payload: Dict[str, Any] = field(default_factory=dict)
def to_dict(self) -> Dict[str, Any]:
payload = asdict(self)
payload["job_url"] = payload.pop("url")
payload["source_ats"] = payload.get("source_ats") or payload.get("ats", "unknown")
return payload
@dataclass
class JobMatch:
company: str
title: str
location: str
url: str
score: float
explanation: str
ats: str
@dataclass
class CompanyRanking:
company: str
company_score: float
match_count: int
best_role: str
ats: str
explanation: str