Ronio Jerico Roque commited on
Commit
ecef08e
·
1 Parent(s): 52eab69

Add ConversionAnalyst class and integrate into analyzing workflow

Browse files
classes/response_conversion_analyst.py ADDED
@@ -0,0 +1,119 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import streamlit as st
2
+ import requests
3
+ from dotenv import load_dotenv
4
+ import os
5
+ from helper.upload_response import upload_response
6
+ from helper.upload_File import uploadFile
7
+ from pymongo import MongoClient
8
+ import json
9
+
10
+ class ConversionAnalyst:
11
+ def __init__(self, model_url):
12
+ self.uploaded_files = []
13
+ self.file_dict = {}
14
+ self.model_url = model_url
15
+ #self.analyst_name = analyst_name
16
+ #self.data_src = data_src
17
+ #self.analyst_description = analyst_description
18
+ self.initialize()
19
+ self.row1()
20
+
21
+ def initialize(self):
22
+ # FOR ENV
23
+ load_dotenv()
24
+
25
+ # AGENT NAME
26
+ #st.header(self.analyst_name)
27
+
28
+ def request_model(self, payload_txt, headers):
29
+ response = requests.post(self.model_url, json=payload_txt, headers=headers)
30
+ response.raise_for_status()
31
+ print(response)
32
+ output = response.json()
33
+ #st.write(output)
34
+ text = output["outputs"][0]["outputs"][0]["results"]["text"]["data"]["text"]
35
+ #text = json.loads(text)
36
+ #st.write(text)
37
+ return text
38
+
39
+ def fetch_data(self, data_field):
40
+ mongodb_uri = os.getenv("MONGODB_URI")
41
+ myclient = MongoClient(mongodb_uri)
42
+ mydb = myclient.get_database()
43
+ mycol = mydb["df_data"]
44
+
45
+ # Sort by timestamp field in descending order
46
+ x = mycol.find_one(
47
+ {"data_field": data_field},
48
+ sort=[("timestamp", -1)]
49
+ )
50
+
51
+ x = x["result"]
52
+ return x
53
+
54
+ def process(self):
55
+ with st.spinner('Converison Analyst...', show_time=True):
56
+ st.write('')
57
+ headers = {"Content-Type": "application/json", "x-api-key": f"{os.getenv('x-api-key')}"}
58
+ try:
59
+ payload_txt = {"input_value": self.payload, "output_type": "text", "input_type": "chat"}
60
+ payload_txt_model = self.request_model(payload_txt, headers)
61
+ debug_info = {'data_field' : 'Converison Analyst', 'result': payload_txt_model}
62
+ upload_response(debug_info)
63
+
64
+ count = 0
65
+ except Exception as e:
66
+ pass
67
+ st.session_state['analyzing'] = False
68
+
69
+ def row1(self):
70
+ st.session_state['analyzing'] = False
71
+ self.payload = ""
72
+ count = 0
73
+ try:
74
+ session_lead_generation_mechanism = st.session_state['lead_generation_mechanism']
75
+ if session_lead_generation_mechanism == 'uploaded':
76
+ count += 1
77
+ self.payload += self.fetch_data("Lead Generation Mechanism")
78
+ except Exception as e:
79
+ pass
80
+ try:
81
+ session_client_relations_management_system = st.session_state['client_relations_management_system']
82
+ if session_client_relations_management_system == 'uploaded':
83
+ count += 1
84
+ self.payload += self.fetch_data("Client Relations Management System")
85
+ except Exception as e:
86
+ pass
87
+ try:
88
+ session_pull_through_offers = st.session_state['pull_through_offers']
89
+ if session_pull_through_offers == 'uploaded':
90
+ count += 1
91
+ self.payload += self.fetch_data("Pull through offers")
92
+ except Exception as e:
93
+ pass
94
+ try:
95
+ session_content_in_the_website = st.session_state['content_in_the_website']
96
+ if session_content_in_the_website == 'uploaded':
97
+ count += 1
98
+ self.payload += self.fetch_data("Content in the Website")
99
+ except Exception as e:
100
+ pass
101
+ try:
102
+ session_content_outside_the_website = st.session_state['content_outside_the_website']
103
+ if session_content_outside_the_website == 'uploaded':
104
+ count += 1
105
+ self.payload += self.fetch_data("Content outside the Website")
106
+ except Exception as e:
107
+ pass
108
+
109
+ if count >= 1:
110
+ name = self.fetch_data("Client Name")
111
+ website = self.fetch_data("Client Website")
112
+ self.payload = name + website + self.payload
113
+ self.process()
114
+
115
+
116
+ if __name__ == "__main__":
117
+ st.set_page_config(layout="wide")
118
+
119
+ upload = uploadFile()
pages/analyzing_page.py CHANGED
@@ -16,6 +16,7 @@ from classes.response_marketplace import Marketplace
16
  from classes.response_target_market import TargetMarket
17
  from classes.response_df_overview import dfOverview
18
  from classes.response_desired_outcome import DesiredOutcome
 
19
  from classes.response_executive_summary import ExecutiveSummary
20
  from classes.response_snapshot import Snapshot
21
 
@@ -70,6 +71,7 @@ def run_analysis():
70
  "target_market": st.empty(),
71
  "df_overview": st.empty(),
72
  "desired_outcome": st.empty(),
 
73
  "snapshot": st.empty(),
74
  "executive_summary": st.empty(),
75
 
@@ -223,6 +225,17 @@ def run_analysis():
223
  except Exception as e:
224
  handler.update_error(f"Desired Outcomes Analysis failed: {str(e)}")
225
  return None
 
 
 
 
 
 
 
 
 
 
 
226
 
227
  def run_snapshot_analysis():
228
  handler = handlers["snapshot"]
@@ -260,7 +273,8 @@ def run_analysis():
260
  (run_marketplace_analysis, "marketplace"),
261
  (run_target_market_analysis, "target_market"),
262
  (run_df_overview_analysis, "df_overview"),
263
- (run_desired_outcomes_analysis, "desired_outcome")
 
264
  ]
265
 
266
  # Create and start first batch threads with small delays to prevent UI conflicts
 
16
  from classes.response_target_market import TargetMarket
17
  from classes.response_df_overview import dfOverview
18
  from classes.response_desired_outcome import DesiredOutcome
19
+ from classes.response_conversion_analyst import ConversionAnalyst
20
  from classes.response_executive_summary import ExecutiveSummary
21
  from classes.response_snapshot import Snapshot
22
 
 
71
  "target_market": st.empty(),
72
  "df_overview": st.empty(),
73
  "desired_outcome": st.empty(),
74
+ "conversion": st.empty(),
75
  "snapshot": st.empty(),
76
  "executive_summary": st.empty(),
77
 
 
225
  except Exception as e:
226
  handler.update_error(f"Desired Outcomes Analysis failed: {str(e)}")
227
  return None
228
+
229
+ def run_conversion_analysis():
230
+ handler = handlers["conversion"]
231
+ try:
232
+ handler.update_info("Running Conversion Analysis...")
233
+ result = ConversionAnalyst(os.getenv('Model_Conversion_Analyst'))
234
+ handler.update_success("Conversion Analysis completed successfully.")
235
+ return result
236
+ except Exception as e:
237
+ handler.update_error(f"Conversion Analysis failed: {str(e)}")
238
+ return None
239
 
240
  def run_snapshot_analysis():
241
  handler = handlers["snapshot"]
 
273
  (run_marketplace_analysis, "marketplace"),
274
  (run_target_market_analysis, "target_market"),
275
  (run_df_overview_analysis, "df_overview"),
276
+ (run_desired_outcomes_analysis, "desired_outcome"),
277
+ (run_conversion_analysis, "conversion")
278
  ]
279
 
280
  # Create and start first batch threads with small delays to prevent UI conflicts