File size: 1,414 Bytes
62c9986
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
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
    }