MaheshP98 commited on
Commit
8c58751
·
verified ·
1 Parent(s): f6b4c75

Create utils.py

Browse files
Files changed (1) hide show
  1. utils.py +65 -0
utils.py ADDED
@@ -0,0 +1,65 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from simple_salesforce import Salesforce
2
+ from reportlab.lib.pagesizes import letter
3
+ from reportlab.platypus import SimpleDocTemplate, Table, TableStyle, Paragraph
4
+ from reportlab.lib import colors
5
+ from reportlab.lib.styles import getSampleStyleSheet
6
+ import pandas as pd
7
+ from datetime import datetime
8
+
9
+ def fetch_salesforce_data(sf: Salesforce, query: str) -> list:
10
+ """Fetch data from Salesforce using SOQL query."""
11
+ try:
12
+ result = sf.query_all(query)
13
+ return result["records"]
14
+ except Exception as e:
15
+ print(f"Error fetching Salesforce data: {e}")
16
+ return []
17
+
18
+ def detect_anomalies(log_text: str, anomaly_detector) -> str:
19
+ """Detect anomalies in log text using Hugging Face model."""
20
+ try:
21
+ result = anomaly_detector(log_text)
22
+ return result[0]["label"] # Returns 'POSITIVE' for anomaly, 'NEGATIVE' for normal
23
+ except Exception as e:
24
+ print(f"Error detecting anomaly: {e}")
25
+ return "NEGATIVE"
26
+
27
+ def generate_pdf_report(df: pd.DataFrame, lab_site: str, equipment_type: str, date_range: list) -> str:
28
+ """Generate a PDF report from dashboard data."""
29
+ pdf_file = "LabOps_Report.pdf"
30
+ doc = SimpleDocTemplate(pdf_file, pagesize=letter)
31
+ elements = []
32
+ styles = getSampleStyleSheet()
33
+
34
+ # Title
35
+ elements.append(Paragraph(f"LabOps Dashboard Report - {datetime.now().strftime('%Y-%m-%d')}", styles["Title"]))
36
+
37
+ # Filters
38
+ elements.append(Paragraph(f"Lab: {lab_site} | Equipment: {equipment_type} | Date Range: {date_range[0]} to {date_range[1]}", styles["Normal"]))
39
+
40
+ # Data Table
41
+ data = [["Equipment", "Timestamp", "Status", "Usage Count", "Anomaly"]]
42
+ for _, row in df.iterrows():
43
+ data.append([
44
+ row["Equipment__c"],
45
+ row["Log_Timestamp__c"],
46
+ row["Status__c"],
47
+ row["Usage_Count__c"],
48
+ row["Anomaly"]
49
+ ])
50
+
51
+ table = Table(data)
52
+ table.setStyle(TableStyle([
53
+ ("BACKGROUND", (0, 0), (-1, 0), colors.grey),
54
+ ("TEXTCOLOR", (0, 0), (-1, 0), colors.whitesmoke),
55
+ ("ALIGN", (0, 0), (-1, -1), "CENTER"),
56
+ ("FONTNAME", (0, 0), (-1, 0), "Helvetica-Bold"),
57
+ ("FONTSIZE", (0, 0), (-1, 0), 14),
58
+ ("BOTTOMPADDING", (0, 0), (-1, 0), 12),
59
+ ("BACKGROUND", (0, 1), (-1, -1), colors.beige),
60
+ ("GRID", (0, 0), (-1, -1), 1, colors.black)
61
+ ]))
62
+ elements.append(table)
63
+
64
+ doc.build(elements)
65
+ return pdf_file