debug: Add comprehensive logging to trace historical value lookup
This commit is contained in:
parent
42cc583b9b
commit
169dbba092
|
|
@ -514,11 +514,17 @@ def update_goal(goal_id: str, data: GoalUpdate, session: dict = Depends(require_
|
||||||
goal_row = cur.fetchone()
|
goal_row = cur.fetchone()
|
||||||
if goal_row:
|
if goal_row:
|
||||||
goal_type = goal_row['goal_type']
|
goal_type = goal_row['goal_type']
|
||||||
|
print(f"[DEBUG] Looking up historical value for {goal_type} on {data.start_date}")
|
||||||
historical_value = _get_historical_value_for_goal_type(conn, pid, goal_type, data.start_date)
|
historical_value = _get_historical_value_for_goal_type(conn, pid, goal_type, data.start_date)
|
||||||
|
print(f"[DEBUG] Historical value result: {historical_value}")
|
||||||
if historical_value is not None:
|
if historical_value is not None:
|
||||||
updates.append("start_value = %s")
|
updates.append("start_value = %s")
|
||||||
params.append(historical_value)
|
params.append(historical_value)
|
||||||
print(f"[INFO] Auto-populated start_value from {data.start_date}: {historical_value}")
|
print(f"[INFO] Auto-populated start_value from {data.start_date}: {historical_value}")
|
||||||
|
else:
|
||||||
|
print(f"[WARN] No historical data found for {goal_type} around {data.start_date}")
|
||||||
|
else:
|
||||||
|
print(f"[ERROR] Could not find goal with id {goal_id}")
|
||||||
|
|
||||||
if data.start_value is not None:
|
if data.start_value is not None:
|
||||||
updates.append("start_value = %s")
|
updates.append("start_value = %s")
|
||||||
|
|
@ -696,12 +702,16 @@ def _get_historical_value_for_goal_type(conn, profile_id: str, goal_type: str, t
|
||||||
# Get goal type configuration
|
# Get goal type configuration
|
||||||
config = get_goal_type_config(conn, goal_type)
|
config = get_goal_type_config(conn, goal_type)
|
||||||
if not config:
|
if not config:
|
||||||
|
print(f"[DEBUG] No config found for goal_type: {goal_type}")
|
||||||
return None
|
return None
|
||||||
|
|
||||||
source_table = config.get('source_table')
|
source_table = config.get('source_table')
|
||||||
source_column = config.get('source_column')
|
source_column = config.get('source_column')
|
||||||
|
|
||||||
|
print(f"[DEBUG] Config: table={source_table}, column={source_column}")
|
||||||
|
|
||||||
if not source_table or not source_column:
|
if not source_table or not source_column:
|
||||||
|
print(f"[DEBUG] Missing source_table or source_column")
|
||||||
return None
|
return None
|
||||||
|
|
||||||
# Query for value closest to target_date (±7 days window)
|
# Query for value closest to target_date (±7 days window)
|
||||||
|
|
@ -716,26 +726,37 @@ def _get_historical_value_for_goal_type(conn, profile_id: str, goal_type: str, t
|
||||||
else:
|
else:
|
||||||
date_col = 'date'
|
date_col = 'date'
|
||||||
|
|
||||||
cur.execute(f"""
|
query = f"""
|
||||||
SELECT {source_column}
|
SELECT {source_column}
|
||||||
FROM {source_table}
|
FROM {source_table}
|
||||||
WHERE profile_id = %s
|
WHERE profile_id = %s
|
||||||
AND {date_col} BETWEEN %s AND %s
|
AND {date_col} BETWEEN %s AND %s
|
||||||
ORDER BY ABS({date_col} - %s::date)
|
ORDER BY ABS({date_col} - %s::date)
|
||||||
LIMIT 1
|
LIMIT 1
|
||||||
""", (
|
"""
|
||||||
|
params = (
|
||||||
profile_id,
|
profile_id,
|
||||||
target_date - timedelta(days=7),
|
target_date - timedelta(days=7),
|
||||||
target_date + timedelta(days=7),
|
target_date + timedelta(days=7),
|
||||||
target_date
|
target_date
|
||||||
))
|
)
|
||||||
|
|
||||||
|
print(f"[DEBUG] Query: {query}")
|
||||||
|
print(f"[DEBUG] Params: {params}")
|
||||||
|
|
||||||
|
cur.execute(query, params)
|
||||||
|
|
||||||
row = cur.fetchone()
|
row = cur.fetchone()
|
||||||
|
print(f"[DEBUG] Query result: {row}")
|
||||||
|
|
||||||
if row:
|
if row:
|
||||||
value = row[source_column]
|
value = row[source_column]
|
||||||
# Convert Decimal to float
|
# Convert Decimal to float
|
||||||
return float(value) if value is not None else None
|
result = float(value) if value is not None else None
|
||||||
|
print(f"[DEBUG] Returning value: {result}")
|
||||||
|
return result
|
||||||
|
|
||||||
|
print(f"[DEBUG] No data found in date range")
|
||||||
return None
|
return None
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
print(f"[ERROR] Failed to get historical value for {goal_type} on {target_date}: {e}")
|
print(f"[ERROR] Failed to get historical value for {goal_type} on {target_date}: {e}")
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user