- Added endpoints to list, upsert, and delete AnyDesk IDs associated with cases. - Introduced normalization for AnyDesk IDs and ensured case existence checks. - Enhanced session management with quick-connect functionality and local session synchronization. - Created a new job for syncing AnyDesk sessions from a local endpoint. - Added database migration for the new `sag_anydesk_ids` table to store AnyDesk IDs per case.
42 lines
1.3 KiB
Python
42 lines
1.3 KiB
Python
"""
|
|
AnyDesk local sessions sync job.
|
|
Polls local AnyDesk bridge endpoint and enriches local session rows.
|
|
"""
|
|
|
|
import logging
|
|
|
|
from app.core.config import settings
|
|
from app.services.anydesk import AnyDeskService
|
|
|
|
logger = logging.getLogger(__name__)
|
|
anydesk_service = AnyDeskService()
|
|
|
|
|
|
async def sync_anydesk_local_sessions():
|
|
"""Sync AnyDesk sessions from local endpoint every N minutes."""
|
|
if not settings.ANYDESK_LOCAL_SYNC_ENABLED:
|
|
return
|
|
|
|
try:
|
|
logger.info("🔄 AnyDesk local sync started")
|
|
result = await anydesk_service.fetch_sessions_from_local_endpoint(
|
|
endpoint_url=settings.ANYDESK_LOCAL_SESSIONS_URL,
|
|
timeout_seconds=settings.ANYDESK_LOCAL_SYNC_TIMEOUT_SECONDS,
|
|
dry_run=settings.ANYDESK_LOCAL_SYNC_DRY_RUN,
|
|
)
|
|
|
|
if result.get("error"):
|
|
logger.error("❌ AnyDesk local sync failed: %s", result["error"])
|
|
return
|
|
|
|
logger.info(
|
|
"✅ AnyDesk local sync completed: total=%s imported=%s updated=%s matched=%s errors=%s",
|
|
result.get("total", 0),
|
|
result.get("imported", 0),
|
|
result.get("updated", 0),
|
|
result.get("matched", 0),
|
|
len(result.get("errors") or []),
|
|
)
|
|
except Exception as exc:
|
|
logger.error("❌ Unexpected AnyDesk local sync error: %s", exc)
|