Fix issues 2
This commit is contained in:
@@ -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")
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user