# /opt/docker/dev/service_finder/backend/app/services/notification_service.py from datetime import datetime, timedelta, timezone from sqlalchemy.ext.asyncio import AsyncSession from sqlalchemy import select from fastapi import BackgroundTasks from app.models.identity import User from app.models.asset import Asset from app.core.email import send_expiry_notification # Feltételezett core funkció class NotificationService: @staticmethod async def check_expiring_documents(db: AsyncSession, background_tasks: BackgroundTasks): """ Példa: Műszaki vizsga lejárata 30 napon belül. A logikát az új Asset és Identity modellekhez igazítottuk. """ threshold = datetime.now(timezone.utc).date() + timedelta(days=30) # JAVÍTVA: Asset join identity.User-el az új struktúra szerint stmt = select(Asset, User).join(User, Asset.owner_org_id == User.scope_id).where( Asset.status == "active" ) result = await db.execute(stmt) for asset, user in result.all(): # A lejárati adatot a dúsított factory_data-ból vesszük expiry = asset.factory_data.get("mot_expiry_date") if asset.factory_data else None if expiry: expiry_dt = datetime.strptime(expiry, "%Y-%m-%d").date() if expiry_dt <= threshold: send_expiry_notification(background_tasks, user.email, f"Műszaki vizsga lejár: {asset.license_plate}")