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,
|