Spaces:
Sleeping
Sleeping
| 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." | |