Fix issues 2

This commit is contained in:
Urtzi Alfaro
2025-08-17 11:12:17 +02:00
parent 109961ef6e
commit d21094a940
2 changed files with 23 additions and 28 deletions

View File

@@ -177,24 +177,29 @@ class TrainingDataOrchestrator:
raise ValueError(f"Failed to prepare training data: {str(e)}") raise ValueError(f"Failed to prepare training data: {str(e)}")
def _extract_sales_date_range(self, sales_data: List[Dict[str, Any]]) -> DateRange: def _extract_sales_date_range(self, sales_data: List[Dict[str, Any]]) -> DateRange:
"""Extract date range from sales data with timezone handling""" """Extract date range from sales data with timezone handling and strict date format."""
if not sales_data: if not sales_data:
raise ValueError("No sales data provided") raise ValueError("No sales data provided")
dates = [] dates = []
for record in sales_data: for record in sales_data:
date_value = record.get('date') date_value = record.get('date')
if date_value: if not date_value:
# ✅ FIX: Ensure timezone-aware datetime continue # Skip records with missing date
if isinstance(date_value, str):
dt = pd.to_datetime(date_value) if isinstance(date_value, str):
if dt.tz is None: # Parse string with explicit format
dt = dt.replace(tzinfo=timezone.utc) dt = pd.to_datetime(date_value, format='mixed', errors='raise')
dates.append(dt.to_pydatetime()) if dt.tz is None:
elif isinstance(date_value, datetime): dt = dt.tz_localize('UTC') # Assign UTC timezone if none
if date_value.tzinfo is None: dates.append(dt.to_pydatetime())
date_value = date_value.replace(tzinfo=timezone.utc) elif isinstance(date_value, datetime):
dates.append(date_value) if date_value.tzinfo is None:
date_value = date_value.replace(tzinfo=timezone.utc)
dates.append(date_value)
else:
continue
if not dates: if not dates:
raise ValueError("No valid dates found in sales data") raise ValueError("No valid dates found in sales data")

View File

@@ -51,10 +51,6 @@ def make_json_serializable(obj):
return obj.tolist() return obj.tolist()
elif isinstance(obj, pd.DataFrame): elif isinstance(obj, pd.DataFrame):
return obj.to_dict('records') return obj.to_dict('records')
elif isinstance(obj, datetime):
return obj.isoformat()
elif isinstance(obj, date):
return obj.isoformat()
elif isinstance(obj, uuid.UUID): elif isinstance(obj, uuid.UUID):
return str(obj) return str(obj)
elif hasattr(obj, '__class__') and 'UUID' in str(obj.__class__): elif hasattr(obj, '__class__') and 'UUID' in str(obj.__class__):
@@ -132,8 +128,7 @@ class EnhancedTrainingService:
tenant_id=tenant_id) tenant_id=tenant_id)
# Get session and initialize repositories # Get session and initialize repositories
from app.core.database import get_background_db_session async with self.database_manager.get_session() as session:
async with get_background_db_session() as session:
await self._init_repositories(session) await self._init_repositories(session)
try: try:
@@ -431,8 +426,7 @@ class EnhancedTrainingService:
async def get_training_status(self, job_id: str) -> Dict[str, Any]: async def get_training_status(self, job_id: str) -> Dict[str, Any]:
"""Get training job status using repository""" """Get training job status using repository"""
try: try:
from app.core.database import get_background_db_session async with self.database_manager.get_session()() as session:
async with get_background_db_session() as session:
await self._init_repositories(session) await self._init_repositories(session)
log = await self.training_log_repo.get_log_by_job_id(job_id) log = await self.training_log_repo.get_log_by_job_id(job_id)
@@ -466,8 +460,7 @@ class EnhancedTrainingService:
) -> List[Dict[str, Any]]: ) -> List[Dict[str, Any]]:
"""Get models for a tenant using repository""" """Get models for a tenant using repository"""
try: try:
from app.core.database import get_background_db_session async with self.database_manager.get_session() as session:
async with get_background_db_session() as session:
await self._init_repositories(session) await self._init_repositories(session)
if active_only: if active_only:
@@ -494,8 +487,7 @@ class EnhancedTrainingService:
async def get_model_performance(self, model_id: str) -> Dict[str, Any]: async def get_model_performance(self, model_id: str) -> Dict[str, Any]:
"""Get model performance metrics using repository""" """Get model performance metrics using repository"""
try: try:
from app.core.database import get_background_db_session async with self.database_manager.get_session() as session:
async with get_background_db_session() as session:
await self._init_repositories(session) await self._init_repositories(session)
# Get model summary # Get model summary
@@ -526,8 +518,7 @@ class EnhancedTrainingService:
async def get_tenant_statistics(self, tenant_id: str) -> Dict[str, Any]: async def get_tenant_statistics(self, tenant_id: str) -> Dict[str, Any]:
"""Get comprehensive tenant statistics using repositories""" """Get comprehensive tenant statistics using repositories"""
try: try:
from app.core.database import get_background_db_session async with self.database_manager.get_session() as session:
async with get_background_db_session() as session:
await self._init_repositories(session) await self._init_repositories(session)
# Get model statistics # Get model statistics
@@ -577,8 +568,7 @@ class EnhancedTrainingService:
tenant_id: str = None): tenant_id: str = None):
"""Update job status using repository pattern""" """Update job status using repository pattern"""
try: try:
from app.core.database import get_background_db_session async with self.database_manager.get_session() as session:
async with get_background_db_session() as session:
await self._init_repositories(session) await self._init_repositories(session)
# Check if log exists, create if not # Check if log exists, create if not