import asyncio import logging from app.db.session import SessionLocal from app.models.organization import Organization from app.models.service import ServiceProfile from sqlalchemy import select, and_ logger = logging.getLogger("Robot2-Auditor") class ServiceAuditor: @classmethod async def audit_services(cls): """Időszakos ellenőrzés a megszűnt helyek kiszűrésére.""" async with SessionLocal() as db: # Csak az aktív szervizeket nézzük stmt = select(Organization).where( and_(Organization.org_type == "service", Organization.is_active == True) ) result = await db.execute(stmt) services = result.scalars().all() for service in services: # 1. Ellenőrzés külső forrásnál (API hívás helye) # status = await check_external_status(service.full_name) is_still_open = True # Itt jön az OSM/Google API válasza if not is_still_open: service.is_active = False # SOFT-DELETE logger.info(f"⚠️ Szerviz inaktiválva (megszűnt): {service.full_name}") # Rate limit védelem await asyncio.sleep(2) await db.commit() @classmethod async def run_periodic_audit(cls): while True: logger.info("🕵️ Negyedéves szerviz-audit indítása...") await cls.audit_services() # 90 naponta fusson le teljes körűen await asyncio.sleep(90 * 86400)