lokesh341 commited on
Commit
8a5b4a5
·
verified ·
1 Parent(s): 3fb754c

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +10 -9
app.py CHANGED
@@ -41,14 +41,14 @@ def calculate_scores(vendor_log):
41
  """Calculate scores based on Vendor Log data."""
42
  try:
43
  # Timeliness Score: Based on Delay Days
44
- delay_days = vendor_log['Delay_Days__c']
45
  timeliness_score = 100.0 if delay_days <= 0 else 80.0 if delay_days <= 3 else 60.0 if delay_days <= 7 else 40.0
46
 
47
  # Quality Score: Direct mapping from Quality Percentage
48
- quality_score = float(vendor_log['Quality_Percentage__c'])
49
 
50
  # Safety Score: Based on Incident Severity
51
- incident_severity = vendor_log['Incident_Severity__c']
52
  safety_score = {
53
  'None': 100.0,
54
  'Low': 80.0,
@@ -58,7 +58,7 @@ def calculate_scores(vendor_log):
58
  }.get(incident_severity, 100.0)
59
 
60
  # Communication Score: Based on Communication Count (scale 0-100)
61
- comm_count = vendor_log['Communication_Count__c']
62
  communication_score = min(100.0, comm_count * 10.0) # 10 communications = 100%
63
 
64
  # Round scores
@@ -70,14 +70,14 @@ def calculate_scores(vendor_log):
70
  }
71
  return scores
72
  except Exception as e:
73
- logger.error(f"Error calculating scores for Vendor Log {vendor_log['Vendor_Log_ID__c']}: {str(e)}")
74
  raise
75
 
76
  def generate_pdf(vendor_log, scores):
77
  """Generate a PDF report for the vendor."""
78
  try:
79
- vendor_id = vendor_log['Vendor__r']['Name']
80
- vendor_name = vendor_log['Vendor__r']['Vendor_Name__c']
81
  filename = f'report_{vendor_id}_{datetime.now().strftime("%Y%m%d_%H%M%S")}.pdf'
82
  c = canvas.Canvas(filename, pagesize=letter)
83
  c.setFont('Helvetica', 12)
@@ -102,7 +102,7 @@ def generate_pdf(vendor_log, scores):
102
 
103
  return pdf_base64
104
  except Exception as e:
105
- logger.error(f"Error generating PDF for Vendor Log {vendor_log['Vendor_Log_ID__c']}: {str(e)}")
106
  raise
107
 
108
  def fetch_and_process_logs():
@@ -127,6 +127,7 @@ def fetch_and_process_logs():
127
  query = query.replace(':currentMonth', str(current_month)).replace(':currentYear', str(current_year))
128
  result = sf.query(query)
129
  vendor_logs = result['records']
 
130
 
131
  subcontractor_scores = []
132
  for log in vendor_logs:
@@ -168,7 +169,7 @@ def fetch_and_process_logs():
168
  'scores': scores,
169
  'pdf_link': pdf_link
170
  })
171
- logger.info(f"Processed {len(vendor_logs)} vendor logs.")
172
  except Exception as e:
173
  logger.error(f"Error processing vendor logs: {str(e)}")
174
  raise
 
41
  """Calculate scores based on Vendor Log data."""
42
  try:
43
  # Timeliness Score: Based on Delay Days
44
+ delay_days = vendor_log['Delay_Days__c'] if vendor_log['Delay_Days__c'] is not None else 0
45
  timeliness_score = 100.0 if delay_days <= 0 else 80.0 if delay_days <= 3 else 60.0 if delay_days <= 7 else 40.0
46
 
47
  # Quality Score: Direct mapping from Quality Percentage
48
+ quality_score = float(vendor_log['Quality_Percentage__c']) if vendor_log['Quality_Percentage__c'] is not None else 0.0
49
 
50
  # Safety Score: Based on Incident Severity
51
+ incident_severity = vendor_log['Incident_Severity__c'] if vendor_log['Incident_Severity__c'] is not None else 'None'
52
  safety_score = {
53
  'None': 100.0,
54
  'Low': 80.0,
 
58
  }.get(incident_severity, 100.0)
59
 
60
  # Communication Score: Based on Communication Count (scale 0-100)
61
+ comm_count = vendor_log['Communication_Count__c'] if vendor_log['Communication_Count__c'] is not None else 0
62
  communication_score = min(100.0, comm_count * 10.0) # 10 communications = 100%
63
 
64
  # Round scores
 
70
  }
71
  return scores
72
  except Exception as e:
73
+ logger.error(f"Error calculating scores for Vendor Log {vendor_log.get('Vendor_Log_ID__c', 'Unknown')}: {str(e)}")
74
  raise
75
 
76
  def generate_pdf(vendor_log, scores):
77
  """Generate a PDF report for the vendor."""
78
  try:
79
+ vendor_id = vendor_log['Vendor__r']['Name'] if vendor_log['Vendor__r'] and vendor_log['Vendor__r']['Name'] else 'Unknown'
80
+ vendor_name = vendor_log['Vendor__r']['Vendor_Name__c'] if vendor_log['Vendor__r'] and vendor_log['Vendor__r']['Vendor_Name__c'] else 'Unknown'
81
  filename = f'report_{vendor_id}_{datetime.now().strftime("%Y%m%d_%H%M%S")}.pdf'
82
  c = canvas.Canvas(filename, pagesize=letter)
83
  c.setFont('Helvetica', 12)
 
102
 
103
  return pdf_base64
104
  except Exception as e:
105
+ logger.error(f"Error generating PDF for Vendor Log {vendor_log.get('Vendor_Log_ID__c', 'Unknown')}: {str(e)}")
106
  raise
107
 
108
  def fetch_and_process_logs():
 
127
  query = query.replace(':currentMonth', str(current_month)).replace(':currentYear', str(current_year))
128
  result = sf.query(query)
129
  vendor_logs = result['records']
130
+ logger.info(f"Fetched {len(vendor_logs)} Vendor Log records for {current_month}-{current_year}")
131
 
132
  subcontractor_scores = []
133
  for log in vendor_logs:
 
169
  'scores': scores,
170
  'pdf_link': pdf_link
171
  })
172
+ logger.info(f"Processed {len(vendor_logs)} vendor logs and created {len(subcontractor_scores)} score records.")
173
  except Exception as e:
174
  logger.error(f"Error processing vendor logs: {str(e)}")
175
  raise