""" SAMMS Enterprise Sovereign Operating System - Core Configuration SESOS v6 OMEGA CONSTRAINED """ from pydantic_settings import BaseSettings from typing import List, Optional, Dict, Any from functools import lru_cache import os class Settings(BaseSettings): """Application settings with environment variable support""" # Application APP_NAME: str = "SAMMS Enterprise Sovereign Operating System" APP_VERSION: str = "6.0.0" DEBUG: bool = True ENVIRONMENT: str = "development" # API Configuration API_V1_PREFIX: str = "/api/v1" API_TITLE: str = "SAMMS Enterprise API" API_DESCRIPTION: str = "Enterprise Sovereign Operating System API" # Database DATABASE_URL: str = "postgresql://postgres:postgres@localhost:5432/samms_enterprise" DATABASE_POOL_SIZE: int = 20 DATABASE_MAX_OVERFLOW: int = 10 DATABASE_POOL_RECYCLE: int = 3600 # Redis REDIS_URL: str = "redis://localhost:6379/0" REDIS_CACHE_DB: int = 1 REDIS_EVENT_DB: int = 2 # Security SECRET_KEY: str = "samms-enterprise-secret-key-change-in-production" ALGORITHM: str = "HS256" ACCESS_TOKEN_EXPIRE_MINUTES: int = 30 REFRESH_TOKEN_EXPIRE_DAYS: int = 7 # CORS CORS_ORIGINS: List[str] = ["http://localhost:3000", "http://localhost:8000"] CORS_ALLOW_CREDENTIALS: bool = True CORS_ALLOW_METHODS: List[str] = ["*"] CORS_ALLOW_HEADERS: List[str] = ["*"] # JWT JWT_SECRET_KEY: str = "jwt-secret-key-change-in-production" JWT_ALGORITHM: str = "HS256" JWT_ACCESS_TOKEN_EXPIRE: int = 3600 JWT_REFRESH_TOKEN_EXPIRE: int = 604800 # Email SMTP_HOST: str = "smtp.example.com" SMTP_PORT: int = 587 SMTP_USER: str = "" SMTP_PASSWORD: str = "" SMTP_FROM: str = "noreply@samms-enterprise.com" # File Storage UPLOAD_DIR: str = "/tmp/samms_uploads" MAX_UPLOAD_SIZE: int = 10485760 # 10MB # AI/ML AI_MODEL_PATH: str = "/models" AI_ENABLED: bool = True AI_CONFIDENCE_THRESHOLD: float = 0.85 # Localization DEFAULT_LANGUAGE: str = "en" DEFAULT_CURRENCY: str = "USD" DEFAULT_TIMEZONE: str = "UTC" SUPPORTED_LANGUAGES: List[str] = ["en", "es", "fr", "de", "zh", "ja", "pt", "ar"] SUPPORTED_CURRENCIES: List[str] = ["USD", "EUR", "GBP", "JPY", "CNY", "CAD", "AUD", "CHF"] # Feature Flags FEATURE_ANALYTICS: bool = True FEATURE_AI_COPILOT: bool = True FEATURE_WORKFLOW_BUILDER: bool = True