imporve features

This commit is contained in:
Urtzi Alfaro
2025-11-14 07:23:56 +01:00
parent 9bc048d360
commit a8d8828935
32 changed files with 5436 additions and 271 deletions

View File

@@ -6,7 +6,7 @@ Service-specific repository base class with training service utilities
from typing import Optional, List, Dict, Any, Type
from sqlalchemy.ext.asyncio import AsyncSession
from sqlalchemy import text
from datetime import datetime, timedelta
from datetime import datetime, timezone, timedelta
import structlog
from shared.database.repository import BaseRepository
@@ -73,7 +73,7 @@ class TrainingBaseRepository(BaseRepository):
async def cleanup_old_records(self, days_old: int = 90, status_filter: str = None) -> int:
"""Clean up old training 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__
# Build query based on available fields

View File

@@ -6,7 +6,7 @@ Repository for trained model operations
from typing import Optional, List, Dict, Any
from sqlalchemy.ext.asyncio import AsyncSession
from sqlalchemy import select, and_, text, desc
from datetime import datetime, timedelta
from datetime import datetime, timezone, timedelta
import structlog
from .base import TrainingBaseRepository
@@ -144,7 +144,7 @@ class ModelRepository(TrainingBaseRepository):
# Promote this model
updated_model = await self.update(model_id, {
"is_production": True,
"last_used_at": datetime.utcnow()
"last_used_at": datetime.now(timezone.utc)
})
logger.info("Model promoted to production",
@@ -164,7 +164,7 @@ class ModelRepository(TrainingBaseRepository):
"""Update model last used timestamp"""
try:
return await self.update(model_id, {
"last_used_at": datetime.utcnow()
"last_used_at": datetime.now(timezone.utc)
})
except Exception as e:
logger.error("Failed to update model usage",
@@ -176,7 +176,7 @@ class ModelRepository(TrainingBaseRepository):
async def archive_old_models(self, tenant_id: str, days_old: int = 90) -> int:
"""Archive old non-production models"""
try:
cutoff_date = datetime.utcnow() - timedelta(days=days_old)
cutoff_date = datetime.now(timezone.utc) - timedelta(days=days_old)
query = text("""
UPDATE trained_models
@@ -235,7 +235,7 @@ class ModelRepository(TrainingBaseRepository):
product_stats = {row.inventory_product_id: row.count for row in result.fetchall()}
# Recent activity (models created in last 30 days)
thirty_days_ago = datetime.utcnow() - timedelta(days=30)
thirty_days_ago = datetime.now(timezone.utc) - timedelta(days=30)
recent_models_query = text("""
SELECT COUNT(*) as count
FROM trained_models