"""Metaswitch iCM Provisioning Server preset — Playwright scrape. iCM does not expose a public CDR API; operators download CSV exports from the CDR Archive page inside the Provisioning Server admin UI. Selectors vary across iCM versions (V11/V12+), so the concrete login + download flow is deferred until live recon on a specific deployment. """ from __future__ import annotations from ._scrape_base import ScrapePreset class MetaswitchPreset(ScrapePreset): PRESET_SLUG = "metaswitch" LABEL = "Metaswitch iCM (Provisioning Server)" CDR_FORMAT = "generic_csv" DEFAULT_CRON = "0 3 * * *" FORMAT_CONFIG = { "start_time": "startTime", "caller_number": "callingNumber", "called_number": "calledNumber", "duration_sec": "connectionTime", "billed_amount": "totalCharge", "call_id": "cdr_sequence", "ts_format": "%Y-%m-%d %H:%M:%S", }