REFACTOR external service and improve websocket training

This commit is contained in:
Urtzi Alfaro
2025-10-09 14:11:02 +02:00
parent 7c72f83c51
commit 3c689b4f98
111 changed files with 13289 additions and 2374 deletions

View File

@@ -6,7 +6,7 @@ Service-specific repository base class with forecasting utilities
from typing import Optional, List, Dict, Any, Type
from sqlalchemy.ext.asyncio import AsyncSession
from sqlalchemy import text
from datetime import datetime, date, timedelta
from datetime import datetime, date, timedelta, timezone
import structlog
from shared.database.repository import BaseRepository
@@ -113,15 +113,15 @@ class ForecastingBaseRepository(BaseRepository):
limit: int = 100
) -> List:
"""Get recent records for a tenant"""
cutoff_time = datetime.utcnow() - timedelta(hours=hours)
cutoff_time = datetime.now(timezone.utc) - timedelta(hours=hours)
return await self.get_by_date_range(
tenant_id, cutoff_time, datetime.utcnow(), skip, limit
tenant_id, cutoff_time, datetime.now(timezone.utc), skip, limit
)
async def cleanup_old_records(self, days_old: int = 90) -> int:
"""Clean up old forecasting records"""
try:
cutoff_date = datetime.utcnow() - timedelta(days=days_old)
cutoff_date = datetime.now(timezone.utc) - timedelta(days=days_old)
table_name = self.model.__tablename__
# Use created_at or forecast_date for cleanup
@@ -156,9 +156,9 @@ class ForecastingBaseRepository(BaseRepository):
total_records = await self.count(filters={"tenant_id": tenant_id})
# Get recent activity (records in last 7 days)
seven_days_ago = datetime.utcnow() - timedelta(days=7)
seven_days_ago = datetime.now(timezone.utc) - timedelta(days=7)
recent_records = len(await self.get_by_date_range(
tenant_id, seven_days_ago, datetime.utcnow(), limit=1000
tenant_id, seven_days_ago, datetime.now(timezone.utc), limit=1000
))
# Get records by product if applicable