Spaces:
Sleeping
Sleeping
File size: 2,956 Bytes
0e39d80 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 | import json
from config import ENABLE_REPLY_POLLING, ENABLE_SCRAPER, MOCK_REPLY
from ml_utils.validators.experience import is_free_email
from mailer.send_verification import send_verification_email
def _dedup(flags: list[str]) -> list[str]:
return list(dict.fromkeys(flags))
def _poll_reply(hr_email: str, flags: list[str], demo_mode: bool) -> dict:
"""Optional IMAP round-trip; only used when ENABLE_REPLY_POLLING is set."""
from mailer.check_reply import check_reply_status
reply = check_reply_status(hr_email)
if reply == "confirmed":
return {"verification_status": "System Verified", "flags": _dedup(flags), "demo_mode": demo_mode}
if reply == "denied":
flags.append("REPLY_DENIED")
return {"verification_status": "Red Flagged", "flags": _dedup(flags), "demo_mode": demo_mode}
flags.append("NO_REPLY")
return {"verification_status": "Pending Verification", "flags": _dedup(flags), "demo_mode": demo_mode}
def verify_experience(doc) -> dict:
fields = json.loads(doc.extracted_fields or "{}")
flags = json.loads(doc.flags or "[]")
hr_email = fields.get("hr_email")
company = fields.get("company_name")
demo_mode = False
if MOCK_REPLY in ("confirmed", "denied", "no_reply"):
status_map = {
"confirmed": "System Verified",
"denied": "Red Flagged",
"no_reply": "Pending Verification",
}
if MOCK_REPLY == "denied":
flags.append("REPLY_DENIED")
if MOCK_REPLY == "no_reply":
flags.append("NO_REPLY")
return {"verification_status": status_map[MOCK_REPLY], "flags": _dedup(flags), "demo_mode": True}
target_email = hr_email
if not target_email and company and ENABLE_SCRAPER:
from scrapers.company_scraper import find_company_email
target_email = find_company_email(company)
if not target_email:
flags.append("NO_EMAIL" if company else "NO_COMPANY")
return {"verification_status": "Red Flagged", "flags": _dedup(flags), "demo_mode": demo_mode}
if is_free_email(target_email):
flags.append("FREE_EMAIL")
return {"verification_status": "Red Flagged", "flags": _dedup(flags), "demo_mode": demo_mode}
sent, demo_mode = send_verification_email(
target_email,
fields.get("employee_name", "the applicant"),
company or "your organization",
)
if demo_mode:
flags.append("DEMO_MODE_EMAIL")
if not sent:
flags.append("EMAIL_BOUNCED")
return {"verification_status": "Manual Review Required", "flags": _dedup(flags), "demo_mode": demo_mode}
# Send-only (production default): the request was emailed; a human resolves it.
if ENABLE_REPLY_POLLING:
return _poll_reply(target_email, flags, demo_mode)
flags.append("EMAIL_SENT")
return {"verification_status": "Pending Verification", "flags": _dedup(flags), "demo_mode": demo_mode}
|