File size: 3,342 Bytes
76d67c5
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
import gradio as gr
from utils import get_mock_claims

class AdjusterDashboard:
    def __init__(self):
        self.claims = get_mock_claims()

    def get_claims_data(self):
        """Formats claims for the dataframe."""
        return [[c["id"], c["submitter"], c["date"], c["vehicle"], c["status"], c["ai_analysis"]["fraud_risk"], c["ai_analysis"].get("adjuster_classification", "Junior Adjuster")] for c in self.claims]

    def get_claim_details(self, evt: gr.SelectData):
        """
        Returns details for a selected claim.
        Args:
            evt: The selection event from the dataframe.
        """
        # Get the row index selected
        index = evt.index[0]
        if index < len(self.claims):
            claim = self.claims[index]
            analysis = claim["ai_analysis"]
            
            details_md = f"""
            ### Claim Details: {claim['id']}
            **Submitter:** {claim['submitter']}
            **Vehicle:** {claim['vehicle']}
            **Date:** {claim['date']}
            
            ---
            ### AI Analysis
            *   **Damage Estimate:** {analysis['damage_estimate']}
            *   **Fraud Risk:** {analysis['fraud_risk']}
            *   **Adjuster Classification:** {analysis.get('adjuster_classification', 'Junior Adjuster')}
            *   **Recommendation:** {analysis['recommendation']}
            
            **Summary:**
            {analysis['summary']}
            """
            return details_md, gr.update(interactive=True), gr.update(interactive=True)
        return "Select a claim to view details.", gr.update(interactive=False), gr.update(interactive=False)

    def add_claim(self, claim_data):
        """
        Adds a new claim to the dashboard.
        Args:
            claim_data (dict): Extracted claim data.
        """
        import datetime
        new_id = f"CLM-{1000 + len(self.claims) + 1}"
        new_claim = {
            "id": new_id,
            "submitter": claim_data.get("submitter", "Anonymous"),
            "date": datetime.date.today().strftime("%Y-%m-%d"),
            "vehicle": claim_data.get("vehicle", "Unknown"),
            "status": "New",
            "ai_analysis": {
                "damage_estimate": claim_data.get("damage_estimate", "N/A"),
                "fraud_risk": claim_data.get("fraud_risk", "Unknown"),
                "adjuster_classification": claim_data.get("adjuster_classification", "Junior Adjuster"),
                "recommendation": claim_data.get("recommendation", "Review"),
                "summary": claim_data.get("summary", "")
            }
        }
        self.claims.append(new_claim)
        return self.get_claims_data()

    def approve_claim(self, claim_details_text):
        # Extract ID from text (simple parsing for MVP)
        try:
            claim_id = claim_details_text.split("Claim Details: ")[1].split("\n")[0].strip()
            return f"Claim {claim_id} Approved. Payment processing initiated."
        except:
            return "Error approving claim."

    def escalate_claim(self, claim_details_text):
        try:
            claim_id = claim_details_text.split("Claim Details: ")[1].split("\n")[0].strip()
            return f"Claim {claim_id} Escalated to SIU for investigation."
        except:
            return "Error escalating claim."