Banking-Sales-Predictor / api /schema /input_helpers.py
nbintang
updated model
6752520
Raw
History Blame Contribute Delete
3.03 kB
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}"
)