ScoringTest / app.py
varshakolanu's picture
Update app.py
c0e8342 verified
import gradio as gr
from transformers import pipeline
import requests
import json
import pandas as pd # Import pandas
# Initialize sentiment analysis pipeline
sentiment_analyzer = pipeline(
"sentiment-analysis", model="distilbert-base-uncased-finetuned-sst-2-english"
)
# Function to calculate scores via API call
def calculate_scores_from_logs(
log_type_1,
quality_score_1,
delay_percentage_1,
safety_compliance_1,
feedback_1,
log_type_2,
quality_score_2,
delay_percentage_2,
safety_compliance_2,
feedback_2,
vendor_id,
month,
):
"""
Calculates performance scores by calling the Salesforce API.
Args:
log_type_1, log_type_2 (str): Type of log (Quality, Delay, Incident, Communication).
quality_score_1, quality_score_2 (float): Quality score.
delay_percentage_1, delay_percentage_2 (float): Delay percentage.
safety_compliance_1, safety_compliance_2 (str): Safety compliance (True/False).
feedback_1, feedback_2 (str): Feedback text.
vendor_id (str): Vendor ID.
month (str): The month for which to calculate scores (YYYY-MM-DD).
Returns:
dict: A dictionary containing the calculated scores and alert flag, or an error message.
"""
print("Entered calculate_scores_from_logs") # Added logging
print(f"Vendor ID: {vendor_id}, Month: {month}")
print(
f"Log 1: {log_type_1}, Quality: {quality_score_1}, Delay: {delay_percentage_1}, Safety: {safety_compliance_1}, Feedback: {feedback_1}"
)
print(
f"Log 2: {log_type_2}, Quality: {quality_score_2}, Delay: {delay_percentage_2}, Safety: {safety_compliance_2}, Feedback: {feedback_2}"
)
logs = [
{
"log_type": log_type_1,
"quality_score": float(quality_score_1)
if log_type_1 == "Quality" and quality_score_1
else None,
"delay_percentage": float(delay_percentage_1)
if log_type_1 == "Delay" and delay_percentage_1
else None,
"safety_compliance": safety_compliance_1 == "True"
if log_type_1 == "Incident"
else None,
"feedback": feedback_1 if log_type_1 == "Communication" else "",
},
{
"log_type": log_type_2,
"quality_score": float(quality_score_2)
if log_type_2 == "Quality" and quality_score_2
else None,
"delay_percentage": float(delay_percentage_2)
if log_type_2 == "Delay" and delay_percentage_2
else None,
"safety_compliance": safety_compliance_2 == "True"
if log_type_2 == "Incident"
else None,
"feedback": feedback_2 if log_type_2 == "Communication" else "",
},
]
payload = json.dumps(logs)
headers = {"Content-Type": "application/json"}
# Replace with your Salesforce API endpoint
salesforce_api_url = (
f"https://your-salesforce-domain.com/services/apexrest/VendorScoreCalculator?vendorId={vendor_id}&month={month}" # Replace
)
print(f"Salesforce API URL: {salesforce_api_url}") #Added Log
try:
response = requests.post(salesforce_api_url, headers=headers, data=payload)
response.raise_for_status() # Raise HTTPError for bad responses (4xx or 5xx)
print(f"Salesforce API Response: {response.text}") # Added logging
return response.json() # Return the JSON response from Salesforce
except requests.exceptions.RequestException as e:
error_message = f"Error calling Salesforce API: {e}"
print(error_message)
return {"error": error_message} # Return a user-friendly error message
except json.JSONDecodeError as e:
error_message = f"Error decoding JSON response: {e}, Response Text: {response.text}"
print(error_message)
return {"error": error_message}
# Gradio Interface
iface = gr.Interface(
fn=calculate_scores_from_logs,
inputs=[
gr.Dropdown(["Quality", "Delay", "Incident", "Communication"], label="Log Type 1"),
gr.Number(label="Quality Score 1 (for Quality)"),
gr.Number(label="Delay Percentage 1 (for Delay)"),
gr.Radio(["True", "False"], label="Safety Compliance 1 (for Incident)"),
gr.Textbox(label="Feedback 1 (for Communication)"),
gr.Dropdown(["Quality", "Delay", "Incident", "Communication"], label="Log Type 2"),
gr.Number(label="Quality Score 2 (for Quality)"),
gr.Number(label="Delay Percentage 2 (for Delay)"),
gr.Radio(["True", "False"], label="Safety Compliance 2 (for Incident)"),
gr.Textbox(label="Feedback 2 (for Communication)"),
gr.Textbox(label="Vendor ID", placeholder="Enter Vendor ID"), # Added Vendor ID
gr.Textbox(
label="Month (YYYY-MM-DD)", placeholder="Enter Month (YYYY-MM-DD)"
), # Added Month
],
outputs=gr.Label(label="Calculated Scores"),
title="Vendor Performance Score Calculator",
description="Calculate vendor performance scores based on log data and Vendor ID/Month.",
)
# Run the Gradio interface
if __name__ == "__main__":
iface.launch(server_name="0.0.0.0", server_port=7860)