lokesh341 commited on
Commit
b3909e1
·
verified ·
1 Parent(s): 646567b

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +42 -8
app.py CHANGED
@@ -7,6 +7,7 @@ import os
7
  import logging
8
  from datetime import datetime
9
  from fastapi.responses import HTMLResponse
 
10
 
11
  # Set up logging to capture errors and debug information
12
  logging.basicConfig(level=logging.INFO)
@@ -14,11 +15,24 @@ logger = logging.getLogger(__name__)
14
 
15
  app = FastAPI()
16
 
17
- # Verify API key is set
18
- API_KEY = os.getenv("HUGGINGFACE_API_KEY")
19
- if not API_KEY:
20
- logger.error("HUGGINGFACE_API_KEY environment variable not set")
21
- raise ValueError("HUGGINGFACE_API_KEY environment variable not set")
 
 
 
 
 
 
 
 
 
 
 
 
 
22
 
23
  # VendorLog model to match Salesforce data
24
  class VendorLog(BaseModel):
@@ -136,8 +150,9 @@ def determine_alert_flag(final_score: float, all_logs: list):
136
  async def score_vendor(log: VendorLog, authorization: str = Header(...)):
137
  try:
138
  logger.info(f"Received Vendor Log: {log}")
139
- if authorization != f'Bearer {API_KEY}':
140
- raise HTTPException(status_code=401, detail='Invalid API key')
 
141
 
142
  # Calculate scores
143
  scores = calculate_scores(log)
@@ -165,7 +180,26 @@ async def score_vendor(log: VendorLog, authorization: str = Header(...)):
165
  'extracted': True
166
  })
167
 
168
- # Return the response to Salesforce
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
169
  return {
170
  'vendorLogId': log.vendorLogId,
171
  'vendorId': log.vendorId,
 
7
  import logging
8
  from datetime import datetime
9
  from fastapi.responses import HTMLResponse
10
+ from simple_salesforce import Salesforce
11
 
12
  # Set up logging to capture errors and debug information
13
  logging.basicConfig(level=logging.INFO)
 
15
 
16
  app = FastAPI()
17
 
18
+ # Salesforce credentials
19
+ SF_USERNAME = "scores@app.com"
20
+ SF_PASSWORD = "Internal@1"
21
+ SF_SECURITY_TOKEN = "NbUKcTx45azba5HEdntE9YAh"
22
+ SF_DOMAIN = "login"
23
+
24
+ # Initialize Salesforce connection
25
+ try:
26
+ sf = Salesforce(
27
+ username=SF_USERNAME,
28
+ password=SF_PASSWORD,
29
+ security_token=SF_SECURITY_TOKEN,
30
+ domain=SF_DOMAIN
31
+ )
32
+ logger.info("Successfully connected to Salesforce")
33
+ except Exception as e:
34
+ logger.error(f"Failed to connect to Salesforce: {str(e)}")
35
+ raise ValueError("Failed to connect to Salesforce")
36
 
37
  # VendorLog model to match Salesforce data
38
  class VendorLog(BaseModel):
 
150
  async def score_vendor(log: VendorLog, authorization: str = Header(...)):
151
  try:
152
  logger.info(f"Received Vendor Log: {log}")
153
+ # Validate Salesforce session or token (optional, depending on your setup)
154
+ if not sf.session_id:
155
+ raise HTTPException(status_code=401, detail='Salesforce session invalid')
156
 
157
  # Calculate scores
158
  scores = calculate_scores(log)
 
180
  'extracted': True
181
  })
182
 
183
+ # Optionally, save scores back to Salesforce (example mapping to a custom object)
184
+ try:
185
+ sf.Vendor_Log__c.create({
186
+ 'Vendor_Log_Id__c': log.vendorLogId,
187
+ 'Vendor_Id__c': log.vendorId,
188
+ 'Vendor_Log_Name__c': log.vendorLogName,
189
+ 'Quality_Score__c': scores['qualityScore'],
190
+ 'Timeliness_Score__c': scores['timelinessScore'],
191
+ 'Safety_Score__c': scores['safetyScore'],
192
+ 'Communication_Score__c': scores['communicationScore'],
193
+ 'Final_Score__c': scores['finalScore'],
194
+ 'Alert_Flag__c': alert_flag,
195
+ 'PDF_Content__c': pdf_base64 # Assuming a text field for base64 PDF
196
+ })
197
+ logger.info(f"Successfully saved scores to Salesforce for Vendor Log: {log.vendorLogId}")
198
+ except Exception as e:
199
+ logger.error(f"Error saving to Salesforce: {str(e)}")
200
+ # Continue even if Salesforce save fails to ensure response is returned
201
+
202
+ # Return the response to the caller
203
  return {
204
  'vendorLogId': log.vendorLogId,
205
  'vendorId': log.vendorId,