Start fixing forecast service 16

This commit is contained in:
Urtzi Alfaro
2025-07-30 08:13:32 +02:00
parent 1d05e125a5
commit e5c3375d53
4 changed files with 101 additions and 36 deletions

View File

@@ -27,6 +27,21 @@ class BakeryDataProcessor:
self.imputers = {} # Store imputers for missing value handling
self.date_alignment_service = DateAlignmentService()
def _ensure_timezone_aware(self, df: pd.DataFrame, date_column: str = 'date') -> pd.DataFrame:
"""Ensure date column is timezone-aware to prevent conversion errors"""
if date_column in df.columns:
# Convert to datetime if not already
df[date_column] = pd.to_datetime(df[date_column])
# If timezone-naive, localize to UTC
if df[date_column].dt.tz is None:
df[date_column] = df[date_column].dt.tz_localize('UTC')
# If already timezone-aware but not UTC, convert to UTC
elif str(df[date_column].dt.tz) != 'UTC':
df[date_column] = df[date_column].dt.tz_convert('UTC')
return df
async def prepare_training_data(self,
sales_data: pd.DataFrame,
weather_data: pd.DataFrame,
@@ -50,6 +65,11 @@ class BakeryDataProcessor:
# Step 1: Convert and validate sales data
sales_clean = await self._process_sales_data(sales_data, product_name)
# FIX: Ensure timezone awareness before any operations
sales_clean = self._ensure_timezone_aware(sales_clean)
weather_data = self._ensure_timezone_aware(weather_data) if not weather_data.empty else weather_data
traffic_data = self._ensure_timezone_aware(traffic_data) if not traffic_data.empty else traffic_data
# Step 2: Apply date alignment if we have date constraints
sales_clean = await self._apply_date_alignment(sales_clean, weather_data, traffic_data)