import os from pydantic_settings import BaseSettings class Settings(BaseSettings): # --- Infrastructure --- # Internal Docker URL for Company Explorer COMPANY_EXPLORER_URL: str = "http://company-explorer:8000" # --- SuperOffice API Credentials --- SO_ENVIRONMENT: str = "sod" # 'sod' or 'online' SO_CLIENT_ID: str = "" SO_CLIENT_SECRET: str = "" SO_REFRESH_TOKEN: str = "" SO_REDIRECT_URI: str = "http://localhost" SO_CONTEXT_IDENTIFIER: str = "Cust55774" # e.g. Cust12345 # --- Feature Flags --- ENABLE_WEBSITE_SYNC: bool = False # Disabled by default to prevent loops # --- Mappings (IDs from SuperOffice) --- # Vertical IDs (List Items) # Default values match the current hardcoded DEV IDs # Format: "Name In Explorer": ID_In_SuperOffice VERTICAL_MAP_JSON: str = '{"Logistics - Warehouse": 23, "Healthcare - Hospital": 24, "Infrastructure - Transport": 25, "Leisure - Indoor Active": 26}' # Persona / Job Role IDs (List Items for "Position" field) # To be filled after discovery PERSONA_MAP_JSON: str = '{}' # User Defined Fields (ProgIDs) # The technical names of the fields in SuperOffice # Default values match the current hardcoded DEV UDFs UDF_SUBJECT: str = "SuperOffice:5" UDF_INTRO: str = "SuperOffice:6" UDF_SOCIAL_PROOF: str = "SuperOffice:7" UDF_VERTICAL: str = "SuperOffice:5" # NOTE: Currently same as Subject in dev? Need to verify. worker.py had 'SuperOffice:5' for vertical AND 'SuperOffice:5' for subject in the map? class Config: env_file = ".env" env_file_encoding = "utf-8" extra = "ignore" # Ignore extra fields in .env # Global instance settings = Settings()