draftme / filters /runner.py
dokster's picture
Upload 105 files
7d2fea2 verified
Raw
History Blame Contribute Delete
1.01 kB
from filters.base import Filter
from models.config import AppSettings
from models.cv import CVData
from models.filters import FilterReport
from models.resume import HTMLResume
def run_all(
html_resume: HTMLResume,
cv_data: CVData,
jd_text: str,
filters: list[Filter],
settings: AppSettings | None = None,
) -> FilterReport:
results = []
for item in sorted(filters, key=lambda x: x.priority):
result = item.run(html_resume.html, cv_data, jd_text, settings)
results.append(result)
if not result.passed and item.hard_fail:
return FilterReport(
results=results,
all_passed=False,
combined_feedback=result.feedback,
hard_failed=True,
)
all_passed = all(result.passed for result in results)
combined = "\n".join(result.feedback for result in results if not result.passed)
return FilterReport(results=results, all_passed=all_passed, combined_feedback=combined)