VaneshDev commited on
Commit
28a375b
·
verified ·
1 Parent(s): 7b3b3b8

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +27 -36
app.py CHANGED
@@ -2,10 +2,8 @@ import datetime
2
  import io
3
  import logging
4
  import sys
5
- import requests
6
  import traceback
7
  import gradio as gr
8
- import pandas as pd
9
  from simple_salesforce import Salesforce
10
 
11
  # Configure logging
@@ -16,7 +14,7 @@ logging.basicConfig(
16
  )
17
  logger = logging.getLogger(__name__)
18
 
19
- # Replace with your actual Salesforce credentials
20
  SALESFORCE_USERNAME = "vaneshdevarapalli866@agentforce.com"
21
  SALESFORCE_PASSWORD = "vanesh@331"
22
  SALESFORCE_SECURITY_TOKEN = "VRUVbBOdG0s9Q4xy0W6DB1Y6b"
@@ -37,57 +35,50 @@ def connect_to_salesforce():
37
 
38
  sf = connect_to_salesforce()
39
 
40
- # Sample Equipment and Project entries (Name, Salesforce Record ID)
41
  equipment_choices = [
42
- ("Bulldozer", "a0B3X00000FfPqLUAV"),
43
- ("Crane", "a0B3X00000FfPqLVAV"),
44
- ("Excavator", "a0B3X00000FfPqLWAV")
45
  ]
46
 
47
  project_choices = [
48
- ("Project Alpha", "a0C3X00000PqPqXUAV"),
49
- ("Project Beta", "a0C3X00000PqPqYUAV"),
50
- ("Project Gamma", "a0C3X00000PqPqZUAV")
51
  ]
52
 
53
- def get_id_from_name(name, choices):
54
- for n, id_ in choices:
55
- if n == name:
56
- return id_
57
- return None
58
 
59
  def process_equipment_utilization(equipment_name, project_name, usage_hours, idle_hours,
60
  movement_frequency, cost_per_hour, report_link, last_maintenance):
61
- equipment_id = get_id_from_name(equipment_name, equipment_choices)
62
- project_id = get_id_from_name(project_name, project_choices)
63
-
64
- if not equipment_id or not project_id:
65
- return {"error": "Could not find Salesforce record IDs for Equipment or Project. Please check names."}
66
-
67
  last_maintenance_str = last_maintenance.strftime('%Y-%m-%d') if last_maintenance else None
68
 
69
- # Dummy AI suggestion for example
70
- ai_suggestion = "Move"
71
- suggestion_confidence = 90
72
- utilization_score = 85
73
 
74
  salesforce_record = {
75
- "EquipmentID__c": equipment_id,
76
- "ProjectID__c": project_id,
77
  "Usage_Hours__c": usage_hours,
78
  "Idle_Hours__c": idle_hours,
79
  "AI_Suggestion__c": ai_suggestion,
80
- "Suggestion_Confidence__c": suggestion_confidence,
81
- "Utilization_Score__c": utilization_score,
82
  "Report_Link__c": report_link,
83
  "Last_Maintenance__c": last_maintenance_str,
84
  "Dashboard_Flag__c": False
85
  }
 
86
  try:
87
  response = sf.Equipment_Utilization_Record__c.create(salesforce_record)
88
- logger.info(f"Salesforce Equipment Utilization Record created: {response}")
89
  return {
90
- "Salesforce_Record_Id": response["id"],
91
  "status": "Success",
92
  "AI_Suggestion": ai_suggestion,
93
  "Suggestion_Confidence": suggestion_confidence,
@@ -128,16 +119,16 @@ def gradio_upload_process(equipment_name, project_name, usage_hours, idle_hours,
128
  return result
129
  except Exception as e:
130
  tb = traceback.format_exc()
131
- logger.error(f"Unexpected error in upload process: {tb}")
132
- return {"error": f"Unexpected error: {str(e)}\n{tb}"}
133
 
134
  with gr.Blocks() as app:
135
  gr.Markdown("# Equipment Utilization Record Uploader")
136
- gr.Markdown("Select Equipment and Project, enter utilization details, and save to Salesforce.")
137
 
138
  with gr.Row():
139
- equipment_dropdown = gr.Dropdown(choices=[name for name, _ in equipment_choices], label="Equipment")
140
- project_dropdown = gr.Dropdown(choices=[name for name, _ in project_choices], label="Project")
141
 
142
  usage_hours = gr.Number(label="Usage Hours", value=0, minimum=0)
143
  idle_hours = gr.Number(label="Idle Hours", value=0, minimum=0)
 
2
  import io
3
  import logging
4
  import sys
 
5
  import traceback
6
  import gradio as gr
 
7
  from simple_salesforce import Salesforce
8
 
9
  # Configure logging
 
14
  )
15
  logger = logging.getLogger(__name__)
16
 
17
+ # Salesforce credentials (update with your credentials)
18
  SALESFORCE_USERNAME = "vaneshdevarapalli866@agentforce.com"
19
  SALESFORCE_PASSWORD = "vanesh@331"
20
  SALESFORCE_SECURITY_TOKEN = "VRUVbBOdG0s9Q4xy0W6DB1Y6b"
 
35
 
36
  sf = connect_to_salesforce()
37
 
38
+ # Your Equipment and Project picklist values
39
  equipment_choices = [
40
+ "Bulldozer", "Crane", "Excavator", "Loader", "Forklift",
41
+ "Backhoe", "Grader", "Scraper", "Dump Truck", "Roller"
 
42
  ]
43
 
44
  project_choices = [
45
+ "Project Alpha", "Project Beta", "Project Gamma", "Project Delta", "Project Epsilon",
46
+ "Project Zeta", "Project Theta", "Project Sigma", "Project Omega", "Project Phoenix"
 
47
  ]
48
 
49
+ def call_ai_model(usage_hours, idle_hours, movement_frequency, cost_per_hour, last_maintenance_str):
50
+ # Placeholder for your Hugging Face AI model integration
51
+ # Replace this function with actual API call to your HF endpoint
52
+ # For now, dummy values returned:
53
+ return "Move", 0.9, 0.85 # suggestion, confidence (0-1), utilization_score (0-1)
54
 
55
  def process_equipment_utilization(equipment_name, project_name, usage_hours, idle_hours,
56
  movement_frequency, cost_per_hour, report_link, last_maintenance):
 
 
 
 
 
 
57
  last_maintenance_str = last_maintenance.strftime('%Y-%m-%d') if last_maintenance else None
58
 
59
+ # Call AI model to get suggestion, confidence, and utilization score
60
+ ai_suggestion, suggestion_confidence, utilization_score = call_ai_model(
61
+ usage_hours, idle_hours, movement_frequency, cost_per_hour, last_maintenance_str or ""
62
+ )
63
 
64
  salesforce_record = {
65
+ "Equipment_Name__c": equipment_name, # Text/Picklist field in Salesforce
66
+ "Project_Name__c": project_name, # Text/Picklist field in Salesforce
67
  "Usage_Hours__c": usage_hours,
68
  "Idle_Hours__c": idle_hours,
69
  "AI_Suggestion__c": ai_suggestion,
70
+ "Suggestion_Confidence__c": suggestion_confidence * 100, # Store as Percent (0-100)
71
+ "Utilization_Score__c": utilization_score * 100, # Store as Percent (0-100)
72
  "Report_Link__c": report_link,
73
  "Last_Maintenance__c": last_maintenance_str,
74
  "Dashboard_Flag__c": False
75
  }
76
+
77
  try:
78
  response = sf.Equipment_Utilization_Record__c.create(salesforce_record)
79
+ logger.info(f"Salesforce record created: {response}")
80
  return {
81
+ "Salesforce_Record_Id": response.get("id"),
82
  "status": "Success",
83
  "AI_Suggestion": ai_suggestion,
84
  "Suggestion_Confidence": suggestion_confidence,
 
119
  return result
120
  except Exception as e:
121
  tb = traceback.format_exc()
122
+ logger.error(f"Unexpected error: {tb}")
123
+ return {"error": f"Unexpected error: {str(e)}"}
124
 
125
  with gr.Blocks() as app:
126
  gr.Markdown("# Equipment Utilization Record Uploader")
127
+ gr.Markdown("Fill the form below and save the data directly to your Salesforce Equipment Utilization Record object.")
128
 
129
  with gr.Row():
130
+ equipment_dropdown = gr.Dropdown(choices=equipment_choices, label="Equipment Name")
131
+ project_dropdown = gr.Dropdown(choices=project_choices, label="Project Name")
132
 
133
  usage_hours = gr.Number(label="Usage Hours", value=0, minimum=0)
134
  idle_hours = gr.Number(label="Idle Hours", value=0, minimum=0)