|
|
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. |
|
|
""" |
|
|
|
|
|
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): |
|
|
|
|
|
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." |
|
|
|