Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
|
@@ -100,12 +100,14 @@ def get_folder_id(folder_name):
|
|
| 100 |
LABOPS_REPORTS_FOLDER_ID = get_folder_id('LabOps Reports')
|
| 101 |
|
| 102 |
# Salesforce report creation
|
| 103 |
-
def create_salesforce_reports(df):
|
| 104 |
if sf is None or not LABOPS_REPORTS_FOLDER_ID:
|
| 105 |
logging.error("Cannot create Salesforce reports: No connection or folder ID")
|
| 106 |
return
|
| 107 |
try:
|
| 108 |
timestamp = datetime.now().strftime('%Y%m%d_%H%M%S')
|
|
|
|
|
|
|
| 109 |
reports = [
|
| 110 |
{
|
| 111 |
"reportMetadata": {
|
|
@@ -126,7 +128,10 @@ def create_salesforce_reports(df):
|
|
| 126 |
"reportType": {"type": "CustomEntity", "value": "SmartLog__c"},
|
| 127 |
"reportFormat": "TABULAR",
|
| 128 |
"reportBooleanFilter": None,
|
| 129 |
-
"reportFilters": [
|
|
|
|
|
|
|
|
|
|
| 130 |
"detailColumns": ["SmartLog__c.Device_Id__c", "SmartLog__c.AMC_Date__c"],
|
| 131 |
"folderId": LABOPS_REPORTS_FOLDER_ID
|
| 132 |
}
|
|
@@ -134,7 +139,7 @@ def create_salesforce_reports(df):
|
|
| 134 |
]
|
| 135 |
for report in reports:
|
| 136 |
sf.restful('analytics/reports', method='POST', json=report)
|
| 137 |
-
logging.info("Salesforce reports created successfully")
|
| 138 |
except Exception as e:
|
| 139 |
logging.error(f"Failed to create Salesforce reports: {str(e)}")
|
| 140 |
|
|
@@ -401,7 +406,7 @@ def create_anomaly_alerts_chart(anomalies_df):
|
|
| 401 |
x='date',
|
| 402 |
y='anomaly_count',
|
| 403 |
title="Anomaly Alerts Over Time",
|
| 404 |
-
labels
|
| 405 |
)
|
| 406 |
fig.update_layout(title_font_size=16, margin=dict(l=20, r=20, t=40, b=20))
|
| 407 |
return fig
|
|
@@ -606,9 +611,9 @@ async def process_logs(file_obj, lab_site_filter, equipment_type_filter, date_ra
|
|
| 606 |
anomaly_alerts_chart = create_anomaly_alerts_chart(anomalies_df)
|
| 607 |
device_cards = generate_device_cards(filtered_df)
|
| 608 |
|
| 609 |
-
# Save to Salesforce
|
| 610 |
save_to_salesforce(filtered_df, reminders_df)
|
| 611 |
-
create_salesforce_reports(filtered_df)
|
| 612 |
|
| 613 |
elapsed_time = time.time() - start_time
|
| 614 |
logging.info(f"Processing completed in {elapsed_time:.2f} seconds")
|
|
|
|
| 100 |
LABOPS_REPORTS_FOLDER_ID = get_folder_id('LabOps Reports')
|
| 101 |
|
| 102 |
# Salesforce report creation
|
| 103 |
+
def create_salesforce_reports(df, reminders_df):
|
| 104 |
if sf is None or not LABOPS_REPORTS_FOLDER_ID:
|
| 105 |
logging.error("Cannot create Salesforce reports: No connection or folder ID")
|
| 106 |
return
|
| 107 |
try:
|
| 108 |
timestamp = datetime.now().strftime('%Y%m%d_%H%M%S')
|
| 109 |
+
current_date = datetime.now()
|
| 110 |
+
next_30_days = current_date + timedelta(days=30)
|
| 111 |
reports = [
|
| 112 |
{
|
| 113 |
"reportMetadata": {
|
|
|
|
| 128 |
"reportType": {"type": "CustomEntity", "value": "SmartLog__c"},
|
| 129 |
"reportFormat": "TABULAR",
|
| 130 |
"reportBooleanFilter": None,
|
| 131 |
+
"reportFilters": [
|
| 132 |
+
{"column": "AMC_Date__c", "operator": "greaterOrEqual", "value": current_date.strftime('%Y-%m-%d')},
|
| 133 |
+
{"column": "AMC_Date__c", "operator": "lessOrEqual", "value": next_30_days.strftime('%Y-%m-%d')}
|
| 134 |
+
],
|
| 135 |
"detailColumns": ["SmartLog__c.Device_Id__c", "SmartLog__c.AMC_Date__c"],
|
| 136 |
"folderId": LABOPS_REPORTS_FOLDER_ID
|
| 137 |
}
|
|
|
|
| 139 |
]
|
| 140 |
for report in reports:
|
| 141 |
sf.restful('analytics/reports', method='POST', json=report)
|
| 142 |
+
logging.info("Salesforce reports created successfully with AMC reminders filter")
|
| 143 |
except Exception as e:
|
| 144 |
logging.error(f"Failed to create Salesforce reports: {str(e)}")
|
| 145 |
|
|
|
|
| 406 |
x='date',
|
| 407 |
y='anomaly_count',
|
| 408 |
title="Anomaly Alerts Over Time",
|
| 409 |
+
labels{"date": "Date", "anomaly_count": "Number of Anomalies"}
|
| 410 |
)
|
| 411 |
fig.update_layout(title_font_size=16, margin=dict(l=20, r=20, t=40, b=20))
|
| 412 |
return fig
|
|
|
|
| 611 |
anomaly_alerts_chart = create_anomaly_alerts_chart(anomalies_df)
|
| 612 |
device_cards = generate_device_cards(filtered_df)
|
| 613 |
|
| 614 |
+
# Save to Salesforce and create reports
|
| 615 |
save_to_salesforce(filtered_df, reminders_df)
|
| 616 |
+
create_salesforce_reports(filtered_df, reminders_df)
|
| 617 |
|
| 618 |
elapsed_time = time.time() - start_time
|
| 619 |
logging.info(f"Processing completed in {elapsed_time:.2f} seconds")
|