Spaces:
Sleeping
Sleeping
gauravlochab
commited on
Commit
·
5f1743b
1
Parent(s):
8cfb88e
fix: update graph apr and roi
Browse files
app.py
CHANGED
|
@@ -195,6 +195,10 @@ def extract_apr_value(attr: Dict[str, Any]) -> Dict[str, Any]:
|
|
| 195 |
if "calculation_metrics" in json_data and json_data["calculation_metrics"] is not None:
|
| 196 |
roi = json_data["calculation_metrics"].get("f_i_ratio")
|
| 197 |
|
|
|
|
|
|
|
|
|
|
|
|
|
| 198 |
logger.debug(f"Agent {agent_id}: Raw APR value: {apr}, adjusted APR value: {adjusted_apr}, ROI value: {roi}, timestamp: {timestamp}")
|
| 199 |
|
| 200 |
# Convert timestamp to datetime if it exists
|
|
@@ -302,22 +306,18 @@ def fetch_apr_data_from_db():
|
|
| 302 |
|
| 303 |
# Process ROI data
|
| 304 |
if data["roi"] is not None:
|
| 305 |
-
# Include all ROI values
|
| 306 |
-
|
| 307 |
-
|
| 308 |
-
|
| 309 |
-
|
| 310 |
-
|
| 311 |
-
|
| 312 |
-
|
| 313 |
-
|
| 314 |
-
|
| 315 |
-
|
| 316 |
-
|
| 317 |
-
roi_data_list.append(roi_entry)
|
| 318 |
-
else:
|
| 319 |
-
# Log that we're skipping extreme outlier values
|
| 320 |
-
logger.debug(f"Skipping ROI value for agent {agent_name} ({attr['agent_id']}): {data['roi']} (extreme outlier)")
|
| 321 |
|
| 322 |
logger.info(f"Extracted {len(apr_data_list)} valid APR data points and {len(roi_data_list)} valid ROI data points")
|
| 323 |
|
|
@@ -1213,28 +1213,17 @@ def create_combined_roi_time_series_graph(df):
|
|
| 1213 |
x0=min_time, x1=max_time
|
| 1214 |
)
|
| 1215 |
|
| 1216 |
-
# Filter
|
| 1217 |
-
|
| 1218 |
-
|
| 1219 |
-
|
| 1220 |
-
|
| 1221 |
-
if len(outlier_data) > 0:
|
| 1222 |
-
excluded_count = len(outlier_data)
|
| 1223 |
-
logger.info(f"Excluded {excluded_count} data points with outlier ROI values (>200% or <-200%)")
|
| 1224 |
-
|
| 1225 |
-
# Group outliers by agent for detailed logging
|
| 1226 |
-
outlier_agents = outlier_data.groupby('agent_name')
|
| 1227 |
-
for agent_name, agent_outliers in outlier_agents:
|
| 1228 |
-
logger.info(f"Agent '{agent_name}' has {len(agent_outliers)} outlier values:")
|
| 1229 |
-
for idx, row in agent_outliers.iterrows():
|
| 1230 |
-
logger.info(f" - ROI: {row['roi']}, timestamp: {row['timestamp']}")
|
| 1231 |
|
| 1232 |
-
|
| 1233 |
-
df = df_filtered
|
| 1234 |
|
| 1235 |
-
# IMPORTANT: Filter data by hardcoded date range (June 6 to June
|
| 1236 |
min_date = datetime(2025, 6, 6)
|
| 1237 |
-
max_date = datetime(2025, 6,
|
| 1238 |
logger.info(f"Filtering ROI data to date range: {min_date} to {max_date}")
|
| 1239 |
|
| 1240 |
# Count data points before filtering
|
|
@@ -1420,9 +1409,9 @@ def create_combined_roi_time_series_graph(df):
|
|
| 1420 |
title=None # Remove the built-in axis title since we're using annotations
|
| 1421 |
)
|
| 1422 |
|
| 1423 |
-
# Update x-axis with better formatting and hardcoded date range (June 6 to June
|
| 1424 |
min_date = datetime(2025, 6, 6) # Hardcoded start date: June 6, 2025
|
| 1425 |
-
max_date = datetime(2025, 6,
|
| 1426 |
logger.info(f"ROI Graph - Hardcoded date range: min_date = {min_date}, max_date = {max_date}")
|
| 1427 |
fig.update_xaxes(
|
| 1428 |
showgrid=True,
|
|
@@ -1816,28 +1805,17 @@ def create_combined_time_series_graph(df):
|
|
| 1816 |
# Filter for APR data only
|
| 1817 |
apr_data = df[df['metric_type'] == 'APR'].copy()
|
| 1818 |
|
| 1819 |
-
# Filter
|
| 1820 |
-
|
| 1821 |
-
|
| 1822 |
-
|
| 1823 |
-
|
| 1824 |
-
if len(outlier_data) > 0:
|
| 1825 |
-
excluded_count = len(outlier_data)
|
| 1826 |
-
logger.info(f"Excluded {excluded_count} data points with outlier APR values (>200 or <-200)")
|
| 1827 |
-
|
| 1828 |
-
# Group outliers by agent for detailed logging
|
| 1829 |
-
outlier_agents = outlier_data.groupby('agent_name')
|
| 1830 |
-
for agent_name, agent_outliers in outlier_agents:
|
| 1831 |
-
logger.info(f"Agent '{agent_name}' has {len(agent_outliers)} outlier values:")
|
| 1832 |
-
for idx, row in agent_outliers.iterrows():
|
| 1833 |
-
logger.info(f" - APR: {row['apr']}, timestamp: {row['timestamp']}")
|
| 1834 |
|
| 1835 |
-
|
| 1836 |
-
apr_data = apr_data_filtered
|
| 1837 |
|
| 1838 |
-
# IMPORTANT: Filter data by hardcoded date range (June 6 to June
|
| 1839 |
min_date = datetime(2025, 6, 6)
|
| 1840 |
-
max_date = datetime(2025, 6,
|
| 1841 |
logger.info(f"Filtering APR data to date range: {min_date} to {max_date}")
|
| 1842 |
|
| 1843 |
# Count data points before filtering
|
|
@@ -2145,9 +2123,9 @@ def create_combined_time_series_graph(df):
|
|
| 2145 |
title=None # Remove the built-in axis title since we're using annotations
|
| 2146 |
)
|
| 2147 |
|
| 2148 |
-
# Update x-axis with better formatting and hardcoded date range (June 6 to June
|
| 2149 |
min_date = datetime(2025, 6, 6) # Hardcoded start date: June 6, 2025
|
| 2150 |
-
max_date = datetime(2025, 6,
|
| 2151 |
logger.info(f"APR Graph - Hardcoded date range: min_date = {min_date}, max_date = {max_date}")
|
| 2152 |
fig.update_xaxes(
|
| 2153 |
showgrid=True,
|
|
|
|
| 195 |
if "calculation_metrics" in json_data and json_data["calculation_metrics"] is not None:
|
| 196 |
roi = json_data["calculation_metrics"].get("f_i_ratio")
|
| 197 |
|
| 198 |
+
# Filter ROI values to -10 to 10 range
|
| 199 |
+
if roi is not None and (roi < -10 or roi > 10):
|
| 200 |
+
roi = None # Exclude ROI values outside the range
|
| 201 |
+
|
| 202 |
logger.debug(f"Agent {agent_id}: Raw APR value: {apr}, adjusted APR value: {adjusted_apr}, ROI value: {roi}, timestamp: {timestamp}")
|
| 203 |
|
| 204 |
# Convert timestamp to datetime if it exists
|
|
|
|
| 306 |
|
| 307 |
# Process ROI data
|
| 308 |
if data["roi"] is not None:
|
| 309 |
+
# Include all ROI values
|
| 310 |
+
roi_entry = {
|
| 311 |
+
"roi": data["roi"],
|
| 312 |
+
"timestamp": data["timestamp"],
|
| 313 |
+
"agent_id": data["agent_id"],
|
| 314 |
+
"agent_name": agent_name,
|
| 315 |
+
"is_dummy": False,
|
| 316 |
+
"metric_type": "ROI"
|
| 317 |
+
}
|
| 318 |
+
logger.debug(f"Agent {agent_name} ({attr['agent_id']}): ROI value: {data['roi']}")
|
| 319 |
+
# Add to the ROI data list
|
| 320 |
+
roi_data_list.append(roi_entry)
|
|
|
|
|
|
|
|
|
|
|
|
|
| 321 |
|
| 322 |
logger.info(f"Extracted {len(apr_data_list)} valid APR data points and {len(roi_data_list)} valid ROI data points")
|
| 323 |
|
|
|
|
| 1213 |
x0=min_time, x1=max_time
|
| 1214 |
)
|
| 1215 |
|
| 1216 |
+
# Filter ROI outliers for better visualization (±200% range)
|
| 1217 |
+
before_outlier_filter = len(df)
|
| 1218 |
+
df = df[(df['roi'] <= 200) & (df['roi'] >= -200)]
|
| 1219 |
+
after_outlier_filter = len(df)
|
| 1220 |
+
excluded_by_outlier = before_outlier_filter - after_outlier_filter
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1221 |
|
| 1222 |
+
logger.info(f"ROI outlier filtering: {before_outlier_filter} -> {after_outlier_filter} data points ({excluded_by_outlier} excluded)")
|
|
|
|
| 1223 |
|
| 1224 |
+
# IMPORTANT: Filter data by hardcoded date range (June 6 to June 22, 2025)
|
| 1225 |
min_date = datetime(2025, 6, 6)
|
| 1226 |
+
max_date = datetime(2025, 6, 22, 23, 59, 59) # Include all of June 22nd
|
| 1227 |
logger.info(f"Filtering ROI data to date range: {min_date} to {max_date}")
|
| 1228 |
|
| 1229 |
# Count data points before filtering
|
|
|
|
| 1409 |
title=None # Remove the built-in axis title since we're using annotations
|
| 1410 |
)
|
| 1411 |
|
| 1412 |
+
# Update x-axis with better formatting and hardcoded date range (June 6 to June 22)
|
| 1413 |
min_date = datetime(2025, 6, 6) # Hardcoded start date: June 6, 2025
|
| 1414 |
+
max_date = datetime(2025, 6, 22) # Hardcoded end date: June 22, 2025
|
| 1415 |
logger.info(f"ROI Graph - Hardcoded date range: min_date = {min_date}, max_date = {max_date}")
|
| 1416 |
fig.update_xaxes(
|
| 1417 |
showgrid=True,
|
|
|
|
| 1805 |
# Filter for APR data only
|
| 1806 |
apr_data = df[df['metric_type'] == 'APR'].copy()
|
| 1807 |
|
| 1808 |
+
# Filter APR outliers (±200% range)
|
| 1809 |
+
before_outlier_filter = len(apr_data)
|
| 1810 |
+
apr_data = apr_data[(apr_data['apr'] <= 200) & (apr_data['apr'] >= -200)]
|
| 1811 |
+
after_outlier_filter = len(apr_data)
|
| 1812 |
+
excluded_by_outlier = before_outlier_filter - after_outlier_filter
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1813 |
|
| 1814 |
+
logger.info(f"APR outlier filtering: {before_outlier_filter} -> {after_outlier_filter} data points ({excluded_by_outlier} excluded)")
|
|
|
|
| 1815 |
|
| 1816 |
+
# IMPORTANT: Filter data by hardcoded date range (June 6 to June 22, 2025)
|
| 1817 |
min_date = datetime(2025, 6, 6)
|
| 1818 |
+
max_date = datetime(2025, 6, 22, 23, 59, 59) # Include all of June 22nd
|
| 1819 |
logger.info(f"Filtering APR data to date range: {min_date} to {max_date}")
|
| 1820 |
|
| 1821 |
# Count data points before filtering
|
|
|
|
| 2123 |
title=None # Remove the built-in axis title since we're using annotations
|
| 2124 |
)
|
| 2125 |
|
| 2126 |
+
# Update x-axis with better formatting and hardcoded date range (June 6 to June 22)
|
| 2127 |
min_date = datetime(2025, 6, 6) # Hardcoded start date: June 6, 2025
|
| 2128 |
+
max_date = datetime(2025, 6, 22) # Hardcoded end date: June 22, 2025
|
| 2129 |
logger.info(f"APR Graph - Hardcoded date range: min_date = {min_date}, max_date = {max_date}")
|
| 2130 |
fig.update_xaxes(
|
| 2131 |
showgrid=True,
|