Spaces:
Sleeping
Sleeping
File size: 3,026 Bytes
725d1d2 6752520 725d1d2 6752520 725d1d2 | 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 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 | from typing import Optional
JOB_CATEGORY_MAPPING = {
"blue_collar": "cat1",
"housemaid": "cat1",
"services": "cat1",
"admin": "cat2",
"technician": "cat2",
"management": "cat3",
"self_employed": "cat3",
"entrepreneur": "cat3",
"unemployed": "cat4",
"student": "cat4",
}
JOB_CATEGORY_MODEL = {
"blue-collar": "cat1",
"housemaid": "cat1",
"services": "cat1",
"admin.": "cat2",
"technician": "cat2",
"management": "cat3",
"self-employed": "cat3",
"entrepreneur": "cat3",
"unemployed": "cat4",
"student": "cat4",
}
def map_customer_job(job_input: str) -> str:
"""
Convert user-friendly job input → job name yang sesuai dengan model.
"""
mapping_user_to_model = {
"blue_collar": "blue-collar",
"housemaid": "housemaid",
"services": "services",
"admin": "admin.",
"technician": "technician",
"management": "management",
"self_employed": "self-employed",
"entrepreneur": "entrepreneur",
"unemployed": "unemployed",
"student": "student",
}
return mapping_user_to_model.get(job_input.lower(), "other")
def job_category_map(job: str) -> str:
return JOB_CATEGORY_MAPPING.get(job.lower(), "other")
def age_category_map(age):
if age < 30:
return "struggling"
elif age < 50:
return "stable"
elif age < 60:
return "about to retire"
elif age < 75:
return "old age"
else:
return "counting a last breathe"
def education_map(
type: Optional[str], level: Optional[str] = None, grade: Optional[int] = None
) -> str:
if type == "illiterate":
return "illiterate"
if type == "course":
return "professional.course"
if type == "university":
return "university.degree"
if type == "school":
if level is None:
raise ValueError("Level must be provided when type='school'")
if grade is None:
raise ValueError("Grade must be provided when type='school'")
if level == "primary":
if grade < 4:
raise ValueError("Primary level must be at least grade 4")
elif grade == 4:
return "basic.4y"
elif grade <= 6:
return "basic.6y"
else:
raise ValueError("Primary level cannot have grade above 6")
if level == "middle":
if 7 <= grade <= 9:
return "basic.9y"
else:
raise ValueError("Middle level must have grade between 7 and 9")
if level == "high":
if 10 <= grade <= 12:
return "high.school"
else:
raise ValueError("High level cannot have grade above 12")
raise ValueError(
f"Unknown education category: type={type}, level={level}, grade={grade}"
)
|