SEVERITY_WEIGHTS = { "comedone": 1, "papules": 2, "pustules": 2, "nodules": 3, } def calculate_severity(summary): total_score = sum( count * SEVERITY_WEIGHTS.get(cls, 1) for cls, count in summary.items() ) if total_score == 0: level = "clear" description = "Wajah bersih dari jerawat" elif total_score <= 9: level = "mild" description = "Jerawat ringan, dapat diatasi dengan skincare rutin" elif total_score <= 19: level = "moderate" description = "Jerawat sedang, disarankan menggunakan obat topikal" else: level = "severe" description = "Jerawat parah, segera konsultasi ke dokter kulit" return { "score": total_score, "level": level, "description": description, } def get_degree(severity_level: str) -> str: """Map severity level ke degree (Ringan/Sedang/Berat) sesuai jurnal.""" mapping = { "clear": "bersih", "mild": "ringan", "moderate": "sedang", "severe": "berat", } return mapping.get(severity_level, "ringan")