Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
|
@@ -186,6 +186,54 @@ def generate_checklist_and_suggestions(role, project_id, milestones, reflection)
|
|
| 186 |
|
| 187 |
return checklist, suggestions
|
| 188 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 189 |
# Gradio interface
|
| 190 |
def create_interface():
|
| 191 |
roles = get_roles_from_salesforce() # Get roles from Salesforce dynamically
|
|
@@ -216,11 +264,12 @@ def create_interface():
|
|
| 216 |
def handle_generate(role, supervisor_name, project_id, milestones, reflection):
|
| 217 |
checklist, suggestions = generate_checklist_and_suggestions(role, project_id, milestones, reflection)
|
| 218 |
pdf_path, pdf_name = save_report_as_pdf(role, supervisor_name, project_id, checklist, suggestions)
|
| 219 |
-
|
|
|
|
| 220 |
|
| 221 |
generate.click(fn=handle_generate,
|
| 222 |
inputs=[role, supervisor_name, project_id, milestones, reflection],
|
| 223 |
-
outputs=[checklist_output, suggestions_output, download_button, pdf_link])
|
| 224 |
|
| 225 |
clear.click(fn=lambda: ("", "", "", "", ""),
|
| 226 |
inputs=None,
|
|
|
|
| 186 |
|
| 187 |
return checklist, suggestions
|
| 188 |
|
| 189 |
+
# Function to upload the report and create the Supervisor AI Coaching record in Salesforce
|
| 190 |
+
def upload_report_and_create_supervisor_ai_coaching(supervisor_name, project_id, checklist, suggestions, pdf_path, pdf_name):
|
| 191 |
+
try:
|
| 192 |
+
sf = Salesforce(
|
| 193 |
+
username=os.getenv('SF_USERNAME'),
|
| 194 |
+
password=os.getenv('SF_PASSWORD'),
|
| 195 |
+
security_token=os.getenv('SF_SECURITY_TOKEN'),
|
| 196 |
+
domain=os.getenv('SF_DOMAIN', 'login')
|
| 197 |
+
)
|
| 198 |
+
|
| 199 |
+
# Upload the PDF file to Salesforce as Content Version
|
| 200 |
+
with open(pdf_path, "rb") as f:
|
| 201 |
+
encoded = base64.b64encode(f.read()).decode()
|
| 202 |
+
|
| 203 |
+
content = sf.ContentVersion.create({
|
| 204 |
+
'Title': pdf_name,
|
| 205 |
+
'PathOnClient': pdf_name,
|
| 206 |
+
'VersionData': encoded
|
| 207 |
+
})
|
| 208 |
+
|
| 209 |
+
content_id = content['id']
|
| 210 |
+
download_url = f"https://{sf.sf_instance}/sfc/servlet.shepherd/version/download/{content_id}"
|
| 211 |
+
|
| 212 |
+
# Create a Supervisor AI Coaching record
|
| 213 |
+
query = sf.query(f"SELECT Id FROM Supervisor__c WHERE Name = '{supervisor_name}' LIMIT 1")
|
| 214 |
+
supervisor_id = query['records'][0]['Id'] if query['totalSize'] > 0 else None
|
| 215 |
+
if not supervisor_id:
|
| 216 |
+
return "Supervisor not found."
|
| 217 |
+
|
| 218 |
+
project_query = sf.query(f"SELECT Id FROM Project__c WHERE Name = '{project_id}' LIMIT 1")
|
| 219 |
+
project_id_sf = project_query['records'][0]['Id'] if project_query['totalSize'] > 0 else None
|
| 220 |
+
if not project_id_sf:
|
| 221 |
+
return "Project not found."
|
| 222 |
+
|
| 223 |
+
# Create Supervisor AI Coaching record with all necessary fields
|
| 224 |
+
sf.Supervisor_AI_Coaching__c.create({
|
| 225 |
+
'Project_ID__c': project_id_sf,
|
| 226 |
+
'Supervisor_ID__c': supervisor_id,
|
| 227 |
+
'Daily_Checklist__c': checklist,
|
| 228 |
+
'Suggested_Tips__c': suggestions,
|
| 229 |
+
'Download_Link__c': download_url
|
| 230 |
+
})
|
| 231 |
+
|
| 232 |
+
return "Supervisor AI Coaching record created and report uploaded successfully."
|
| 233 |
+
|
| 234 |
+
except Exception as e:
|
| 235 |
+
return f"Error: {str(e)}"
|
| 236 |
+
|
| 237 |
# Gradio interface
|
| 238 |
def create_interface():
|
| 239 |
roles = get_roles_from_salesforce() # Get roles from Salesforce dynamically
|
|
|
|
| 264 |
def handle_generate(role, supervisor_name, project_id, milestones, reflection):
|
| 265 |
checklist, suggestions = generate_checklist_and_suggestions(role, project_id, milestones, reflection)
|
| 266 |
pdf_path, pdf_name = save_report_as_pdf(role, supervisor_name, project_id, checklist, suggestions)
|
| 267 |
+
supervisor_ai_coaching_response = upload_report_and_create_supervisor_ai_coaching(supervisor_name, project_id, checklist, suggestions, pdf_path, pdf_name)
|
| 268 |
+
return checklist, suggestions, pdf_path, pdf_name, supervisor_ai_coaching_response
|
| 269 |
|
| 270 |
generate.click(fn=handle_generate,
|
| 271 |
inputs=[role, supervisor_name, project_id, milestones, reflection],
|
| 272 |
+
outputs=[checklist_output, suggestions_output, download_button, pdf_link, gr.HTML()])
|
| 273 |
|
| 274 |
clear.click(fn=lambda: ("", "", "", "", ""),
|
| 275 |
inputs=None,
|