Spaces:
Running
Running
Update services/state_manager.py
Browse files- services/state_manager.py +28 -0
services/state_manager.py
CHANGED
@@ -28,6 +28,8 @@ from config import (
|
|
28 |
LOG_SUBJECT_POSTS, LOG_SUBJECT_MENTIONS, LOG_SUBJECT_FOLLOWER_STATS
|
29 |
)
|
30 |
|
|
|
|
|
31 |
def check_token_status(token_state):
|
32 |
"""Checks the status of the LinkedIn token."""
|
33 |
return "β
Token available" if token_state and token_state.get("token") else "β Token not available"
|
@@ -147,6 +149,32 @@ def process_and_store_bubble_token(url_user_token, org_urn, token_state):
|
|
147 |
except Exception as e:
|
148 |
logging.error(f"β Error fetching {table_name} from Bubble: {e}.", exc_info=True)
|
149 |
new_state[state_key] = pd.DataFrame()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
150 |
else:
|
151 |
logging.warning("Org URN not available in state. Cannot fetch data from Bubble.")
|
152 |
for key in ["bubble_posts_df", "bubble_mentions_df", "bubble_follower_stats_df", "bubble_operations_log_df"]:
|
|
|
28 |
LOG_SUBJECT_POSTS, LOG_SUBJECT_MENTIONS, LOG_SUBJECT_FOLLOWER_STATS
|
29 |
)
|
30 |
|
31 |
+
from .report_data_handler import fetch_latest_agentic_analysis
|
32 |
+
|
33 |
def check_token_status(token_state):
|
34 |
"""Checks the status of the LinkedIn token."""
|
35 |
return "β
Token available" if token_state and token_state.get("token") else "β Token not available"
|
|
|
149 |
except Exception as e:
|
150 |
logging.error(f"β Error fetching {table_name} from Bubble: {e}.", exc_info=True)
|
151 |
new_state[state_key] = pd.DataFrame()
|
152 |
+
|
153 |
+
new_state["agentic_pipeline_should_run_now"] = False
|
154 |
+
new_state["bubble_agentic_analysis_data"] = None
|
155 |
+
|
156 |
+
# Fetch all report data
|
157 |
+
all_analysis_data, error = fetch_latest_agentic_analysis(current_org_urn)
|
158 |
+
|
159 |
+
if all_analysis_data is not None and not all_analysis_data.empty:
|
160 |
+
new_state["bubble_agentic_analysis_data"] = all_analysis_data
|
161 |
+
|
162 |
+
quarter_data = all_analysis_data[all_analysis_data['type'] == 'Quarter'].copy()
|
163 |
+
|
164 |
+
if not quarter_data.empty:
|
165 |
+
latest_quarter_analysis = quarter_data.sort_values(by='Created Date', ascending=False).iloc[0]
|
166 |
+
should_run_due_to_no_data = pd.isna(latest_quarter_analysis)
|
167 |
+
else:
|
168 |
+
should_run_due_to_no_data = True # No quarter data found
|
169 |
+
else:
|
170 |
+
should_run_due_to_no_data = True # No data at all
|
171 |
+
|
172 |
+
if should_run_due_to_no_data:
|
173 |
+
logging.info(f"No existing agentic analysis data found for org {current_org_urn}. Triggering run.")
|
174 |
+
new_state["agentic_pipeline_should_run_now"] = True
|
175 |
+
else:
|
176 |
+
logging.info(f"Agentic analysis data for org {current_org_urn} is up-to-date.")
|
177 |
+
|
178 |
else:
|
179 |
logging.warning("Org URN not available in state. Cannot fetch data from Bubble.")
|
180 |
for key in ["bubble_posts_df", "bubble_mentions_df", "bubble_follower_stats_df", "bubble_operations_log_df"]:
|