from pydantic import BaseModel from typing import Dict # Input schema class IssueData(BaseModel): count: int severity: int impact_score: int class EmotionSummary(BaseModel): positive_total: int negative_total: int overall_mood: str class InputPayload(BaseModel): issues: Dict[str, IssueData] positive_emotions: Dict[str, int] negative_emotions: Dict[str, int] emotion_summary: EmotionSummary # Scoring logic def compute_combined_score(issue: IssueData, alpha: float = 1.0, beta: float = 4.0) -> float: return alpha * issue.impact_score + beta * issue.severity def classify_severity(score: float) -> str: if score < 20: return "low" elif score < 40: return "medium" else: return "high" def classify_issues(payload: InputPayload): results = {} for issue_name, issue_data in payload.issues.items(): combined_score = compute_combined_score(issue_data) final_sev = classify_severity(combined_score) results[issue_name] = { "combined_score": combined_score, "final_severity": final_sev, "original_count": issue_data.count, "original_impact_score": issue_data.impact_score, "original_severity": issue_data.severity } return { "classified_issues": results, "overall_mood": payload.emotion_summary.overall_mood }