from __future__ import annotations from dataclasses import dataclass @dataclass(frozen=True) class PlatformAlert: key: str label: str domains: tuple[str, ...] alert_url: str help_text: str PLATFORM_ALERTS = { alert.key: alert for alert in ( PlatformAlert( "vdab", "VDAB", ("vdab.be",), "https://www.vdab.be/jobs/job-alerts", "Brede Vlaamse vacaturealerts.", ), PlatformAlert( "indeed", "Indeed", ("indeed.com", "indeed.be"), "https://support.indeed.com/hc/nl/articles/204488890-" "Vacature-alerts-activeren-stopzetten-en-beheren", "Algemene en regionale vacaturealerts.", ), PlatformAlert( "linkedin", "LinkedIn", ("linkedin.com",), "https://www.linkedin.com/help/linkedin/answer/a511279", "Dagelijkse of wekelijkse alerts, maximaal twintig per LinkedIn-account.", ), PlatformAlert( "ictjob", "ictjob.be", ("ictjob.be",), "https://www.ictjob.be/nl/it-job-alert", "Gespecialiseerde Belgische IT- en telecomvacatures.", ), PlatformAlert( "jobat", "Jobat", ("jobat.be",), "https://www.jobat.be/nl/jobalert", "Belgische jobs per functie, regio en contracttype.", ), PlatformAlert( "stepstone", "StepStone", ("stepstone.be",), "https://www.stepstone.be/vacatures", "Dagelijkse vergelijkbare vacatures vanuit een zoekopdracht.", ), PlatformAlert( "careerjet", "Careerjet", ("careerjet.be",), "https://www.careerjet.be/", "Brede Belgische zoekresultaten met regio- en postcodegebonden e-mailalerts.", ), PlatformAlert( "randstad", "Randstad", ("randstad.be",), "https://www.randstad.be/jobalert-aanmaken/", "Belgische jobs met instelbare specialisatie, locatie, contract en frequentie.", ), PlatformAlert( "roberthalf", "Robert Half", ("roberthalf.com",), "https://www.roberthalf.com/be/en/find-jobs/job-alerts", "Belgische IT- en digitaljobs, waaronder systeem-, netwerk- en supportfuncties.", ), ) } def platform_label(key: str) -> str: alert = PLATFORM_ALERTS.get(key) return alert.label if alert else key