Spaces:
Sleeping
Sleeping
| 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}" | |
| ) | |