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