import os from dotenv import load_dotenv load_dotenv() # Meta Ads META_APP_ID = os.environ["META_APP_ID"] META_APP_SECRET = os.environ["META_APP_SECRET"] META_ACCESS_TOKEN = os.environ["META_ACCESS_TOKEN"] META_AD_ACCOUNT_ID = os.environ["META_AD_ACCOUNT_ID"] # Anthropic ANTHROPIC_API_KEY = os.environ["ANTHROPIC_API_KEY"] # Baserow (self-hosted) — solo lo operativo de Meta (snapshots, acciones, creatividades, logs) BASEROW_URL = os.environ["BASEROW_URL"] BASEROW_TOKEN = os.environ["BASEROW_TOKEN"] BASEROW_TABLE_ACTIONS = int(os.environ["BASEROW_TABLE_ACTIONS"]) BASEROW_TABLE_CREATIVES = int(os.environ["BASEROW_TABLE_CREATIVES"]) BASEROW_TABLE_LOGS = int(os.environ["BASEROW_TABLE_LOGS"]) BASEROW_TABLE_SNAPSHOTS = int(os.environ["BASEROW_TABLE_SNAPSHOTS"]) # Airtable (misma base que leads-optimizer) — negocio: PPL, capping, Cursos, Familias AIRTABLE_TOKEN = os.environ["AIRTABLE_TOKEN"] AIRTABLE_BASE_ID = os.environ["AIRTABLE_BASE_ID"] LEADS_TABLE = "Leads Lake" CURSOS_TABLE = "Cursos" CENTROCURSO_TABLE = "CentroCurso" CURSOMES_TABLE = "CursoMes" META_CAMPAIGNS_TABLE = "Meta Ads Campaigns" META_CAMPAIGNMES_TABLE = "MetaCampaignMes" # Slack (Bot Token, no webhook) — canal dedicado a Formación SLACK_BOT_TOKEN = os.environ["SLACK_BOT_TOKEN"] SLACK_SIGNING_SECRET = os.environ["SLACK_SIGNING_SECRET"] SLACK_CHANNEL_ID = os.environ["SLACK_CHANNEL_ID"] # Configuración META_CAMPAIGN_PREFIX = os.environ.get("META_CAMPAIGN_PREFIX", "RoiFormacion") DRY_RUN = os.environ.get("DRY_RUN", "true").lower() != "false"