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