File size: 4,550 Bytes
137ab15
 
 
 
 
 
 
 
 
 
 
febc6cf
137ab15
 
febc6cf
 
 
 
 
137ab15
d6f27d0
137ab15
d6f27d0
137ab15
 
 
 
d6f27d0
 
137ab15
 
 
 
 
 
 
 
 
d6f27d0
 
137ab15
 
 
 
 
 
febc6cf
137ab15
 
 
 
 
 
 
 
 
 
 
d6f27d0
137ab15
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
d6f27d0
 
 
 
137ab15
 
 
d6f27d0
137ab15
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
import gradio as gr
from transformers import pipeline
from simple_salesforce import Salesforce
import datetime
import os
from dotenv import load_dotenv

# Load environment variables from .env file
load_dotenv()

# Initialize Hugging Face model
generator = pipeline("text-generation", model="distilgpt2")

# Initialize Salesforce connection using environment variables
sf = Salesforce(
    username=os.getenv("SF_USERNAME"),
    password=os.getenv("SF_PASSWORD"),
    security_token=os.getenv("SF_SECURITY_TOKEN")
)

def generate_ai_data(supervisor_id, project_id, supervisor_data, project_data):
    """
    Generate AI coaching data and reports based on supervisor and project data.
    
    Args:
        supervisor_id (str): ID of the supervisor from Supervisor_Profile__c
        project_id (str): ID of the project from Project_Details__c
        supervisor_data (dict): Contains Role__c, Location__c
        project_data (dict): Contains Name, Start_Date__c, End_Date__c, Milestones__c, Project_Schedule__c
    
    Returns:
        dict: Status and generated data
    """
    try:
        # Construct prompt for AI generation
        prompt = (
            f"Generate daily checklist, tips, risk alerts, upcoming milestones, and performance trends for a "
            f"{supervisor_data['Role__c']} at {supervisor_data['Location__c']} working on project "
            f"{project_data['Name']} with milestones {project_data['Milestones__c']} and schedule "
            f"{project_data['Project_Schedule__c']}."
        )

        # Generate AI output
        ai_response = generator(prompt, max_length=500, num_return_sequences=1)[0]['generated_text']

        # Parse AI response (simplified parsing for this example)
        # In a real scenario, you'd use more sophisticated NLP to extract structured data
        daily_checklist = (
            "1. Conduct safety inspection of site (Safety, Pending)\n"
            "2. Ensure team wears protective gear (Safety, Pending)\n"
            "3. Schedule team briefing (General, Pending)"
        )
        suggested_tips = (
            "1. Prioritize safety checks due to upcoming weather risks.\n"
            "2. Focus on delayed tasks.\n"
            "3. Schedule a team review."
        )
        risk_alerts = "Risk of delay: Rain expected on May 22, 2025."
        upcoming_milestones = project_data['Milestones__c'].split(';')[0]  # Take the first milestone
        performance_trends = "Task completion rate: 75% this week (initial estimate)."

        # Save AI data to AI_Coaching_Data__c
        ai_data = {
            'Supervisor_ID__c': supervisor_id,
            'Project_ID__c': project_id,
            'Daily_Checklist__c': daily_checklist,
            'Suggested_Tips__c': suggested_tips,
            'Risk_Alerts__c': risk_alerts,
            'Upcoming_Milestones__c': upcoming_milestones,
            'Performance_Trends__c': performance_trends,
            'Generated_Date__c': datetime.datetime.now().strftime('%Y-%m-%d')
        }
        sf.AI_Coaching_Data__c.create(ai_data)

        # Generate a report for Report_Download__c
        report_data = {
            'Supervisor_ID__c': supervisor_id,
            'Project_ID__c': project_id,
            'Report_Type__c': 'Performance',
            'Report_Data__c': f"Performance Report: Task completion rate: 75% this week (initial estimate). Engagement score: 80%.",
            'Download_Link__c': 'https://salesforce-site.com/reports/RPT-0001.pdf',  # Update with actual Salesforce Site URL
            'Generated_Date__c': datetime.datetime.now().strftime('%Y-%m-%d')
        }
        sf.Report_Download__c.create(report_data)

        return {
            "status": "success",
            "message": "AI data and report generated successfully",
            "ai_data": ai_data,
            "report_data": report_data
        }

    except Exception as e:
        return {
            "status": "error",
            "message": f"Error generating AI data: {str(e)}"
        }

# Create Gradio interface
iface = gr.Interface(
    fn=generate_ai_data,
    inputs=[
        gr.Textbox(label="Supervisor ID"),
        gr.Textbox(label="Project ID"),
        gr.JSON(label="Supervisor Data"),
        gr.JSON(label="Project Data")
    ],
    outputs=gr.JSON(label="Result"),
    title="AI Coach Data Generator",
    description="Generate AI coaching data and reports based on supervisor and project details."
)

# Launch the Gradio app
if __name__ == "__main__":
    iface.launch(server_name="0.0.0.0", server_port=7860)