# config.py """ Global configuration constants for the LinkedIn Organization Dashboard. """ # --- LinkedIn Post Constants --- DEFAULT_INITIAL_FETCH_COUNT = 10 DEFAULT_POSTS_UPDATE_FETCH_COUNT = 10 LINKEDIN_POST_URN_KEY = 'id' # Key for post URN in LinkedIn API response BUBBLE_POST_URN_COLUMN_NAME = 'id' # Column name for unique post ID in Bubble 'LI_posts' table BUBBLE_POST_DATE_COLUMN_NAME = 'published_at' # Column name for post publication date in Bubble 'LI_posts' table BUBBLE_POSTS_TABLE_NAME = "LI_posts" BUBBLE_POST_STATS_TABLE_NAME = "LI_post_stats" BUBBLE_POST_COMMENTS_TABLE_NAME = "LI_post_comments" # --- LinkedIn Mentions Constants --- BUBBLE_MENTIONS_TABLE_NAME = "LI_mentions" BUBBLE_MENTIONS_ID_COLUMN_NAME = "id" # Column name for unique mention ID in Bubble BUBBLE_MENTIONS_DATE_COLUMN_NAME = "date" # Column name for mention date in Bubble DEFAULT_MENTIONS_INITIAL_FETCH_COUNT = 20 DEFAULT_MENTIONS_UPDATE_FETCH_COUNT = 10 # --- LinkedIn Follower Stats Constants --- BUBBLE_FOLLOWER_STATS_TABLE_NAME = "LI_follower_stats" FOLLOWER_STATS_CATEGORY_COLUMN = "category_name" # For demographics: name (e.g., "Engineering"), for monthly gains: date string 'YYYY-MM-DD' FOLLOWER_STATS_TYPE_COLUMN = "follower_count_type" # e.g., "follower_seniority", "follower_gains_monthly" FOLLOWER_STATS_ORG_URN_COLUMN = "organization_urn" # URN of the organization FOLLOWER_STATS_ORGANIC_COLUMN = "follower_count_organic" FOLLOWER_STATS_PAID_COLUMN = "follower_count_paid" FOLLOWER_STATS_CATEGORY_COLUMN_DT = 'category_name_dt' # Temporary column for datetime conversion # --- Environment Variable Names (Optional, for consistency if checking elsewhere) --- LINKEDIN_CLIENT_ID_ENV_VAR = "Linkedin_client_id" BUBBLE_APP_NAME_ENV_VAR = "BUBBLE_APP_NAME" BUBBLE_API_KEY_PRIVATE_ENV_VAR = "BUBBLE_API_KEY_PRIVATE" BUBBLE_API_ENDPOINT_ENV_VAR = "BUBBLE_API_ENDPOINT" # --- UI Constants --- UI_DATE_FORMAT = '%Y-%m-%d %H:%M' UI_MONTH_FORMAT = '%Y-%m' # --- NEW CONSTANTS for LinkedIn Data Operations Log --- BUBBLE_OPERATIONS_LOG_TABLE_NAME = "linkedin_data_operations_log" # Column names in the 'linkedin_data_operations_log' table in Bubble: BUBBLE_OPERATIONS_LOG_DATE_COLUMN = "data" # Stores the timestamp of the sync attempt BUBBLE_OPERATIONS_LOG_SUBJECT_COLUMN = "linkedin_data_operation_subject" # e.g., "post", "mention", "follower_stats" BUBBLE_OPERATIONS_LOG_ORG_URN_COLUMN = "organization_urn" # Stores the org URN # Standardized subject names for the operations log LOG_SUBJECT_POSTS = "post" LOG_SUBJECT_MENTIONS = "mention" LOG_SUBJECT_FOLLOWER_STATS = "followers_stats" BUBBLE_UNIQUE_ID_COLUMN_NAME = "_id" # Mapping from plot_configs IDs to PLOT_FORMULAS keys PLOT_ID_TO_FORMULA_KEY_MAP = { "posts_activity": "posts_activity", "mentions_activity": "mentions_activity", "mention_sentiment": "mention_sentiment", "followers_count": "followers_count_over_time", "followers_growth_rate": "followers_growth_rate", "followers_by_location": "followers_by_demographics", "followers_by_role": "followers_by_demographics", "followers_by_industry": "followers_by_demographics", "followers_by_seniority": "followers_by_demographics", "engagement_rate": "engagement_rate_over_time", "reach_over_time": "reach_over_time", "impressions_over_time": "impressions_over_time", "likes_over_time": "likes_over_time", "clicks_over_time": "clicks_over_time", "shares_over_time": "shares_over_time", "comments_over_time": "comments_over_time", "comments_sentiment": "comments_sentiment_breakdown", "post_frequency_cs": "post_frequency", "content_format_breakdown_cs": "content_format_breakdown", "content_topic_breakdown_cs": "content_topic_breakdown", "mention_analysis_volume": "mentions_activity", "mention_analysis_sentiment": "mention_sentiment" }