| import os |
| from typing import Optional |
| from dotenv import load_dotenv |
|
|
| |
| load_dotenv() |
|
|
|
|
| class Config: |
| |
| |
| |
| GOOGLE_API_KEY: str = os.getenv("GOOGLE_API_KEY", "") |
|
|
| |
| |
| |
| DEBUG: bool = os.getenv("DEBUG", "True").lower() == "true" |
| STREAMLIT_SERVER_PORT: int = int(os.getenv("STREAMLIT_SERVER_PORT", "8501")) |
| STREAMLIT_SERVER_ADDRESS: str = os.getenv("STREAMLIT_SERVER_ADDRESS", "localhost") |
| MAX_FILE_SIZE_MB: int = int(os.getenv("MAX_FILE_SIZE_MB", "10")) |
| SUPPORTED_FILE_TYPES: list = os.getenv( |
| "SUPPORTED_FILE_TYPES", "pdf,docx,txt" |
| ).split(",") |
|
|
| |
| |
| |
| LOG_LEVEL: str = os.getenv("LOG_LEVEL", "INFO") |
| LOG_FILE: str = os.getenv("LOG_FILE", "./data/app.log") |
|
|
| |
| |
| |
| SECRET_KEY: str = os.getenv("SECRET_KEY", "development-key-change-in-production") |
| SESSION_TIMEOUT_MINUTES: int = int(os.getenv("SESSION_TIMEOUT_MINUTES", "60")) |
|
|
| |
| |
| |
| CHAT_MODEL: str = os.getenv("CHAT_MODEL", "gemini-1.5-flash") |
| TEMPERATURE: float = float(os.getenv("TEMPERATURE", "0.2")) |
| MAX_TOKENS: int = int(os.getenv("MAX_TOKENS", "2048")) |
| EMBEDDING_MODEL: str = os.getenv("EMBEDDING_MODEL", "models/embedding-001") |
|
|
| |
| |
| |
| CHROMA_PERSIST_DIR: str = os.getenv("CHROMA_PERSIST_DIRECTORY", "./data/chroma_db") |
|
|
| |
| |
| |
| UPLOAD_DIR: str = os.getenv("UPLOAD_DIR", "./uploads") |
| DATA_DIR: str = os.getenv("DATA_DIR", "./data") |
| DATABASE_URL: str = os.getenv("DATABASE_URL", "sqlite:///./data/lega.db") |
|
|
| |
| |
| |
| MAX_CONCURRENT_UPLOADS: int = int(os.getenv("MAX_CONCURRENT_UPLOADS", "5")) |
| DOCUMENT_PROCESSING_TIMEOUT: int = int( |
| os.getenv("DOCUMENT_PROCESSING_TIMEOUT", "300") |
| ) |
| ENABLE_CACHE: bool = os.getenv("ENABLE_CACHE", "True").lower() == "true" |
| CACHE_TTL_SECONDS: int = int(os.getenv("CACHE_TTL_SECONDS", "3600")) |
|
|
| |
| |
| |
| ENABLE_DOCUMENT_LIBRARY: bool = ( |
| os.getenv("ENABLE_DOCUMENT_LIBRARY", "True").lower() == "true" |
| ) |
| ENABLE_QA_ASSISTANT: bool = ( |
| os.getenv("ENABLE_QA_ASSISTANT", "True").lower() == "true" |
| ) |
| ENABLE_MARKET_COMPARISON: bool = ( |
| os.getenv("ENABLE_MARKET_COMPARISON", "True").lower() == "true" |
| ) |
| ENABLE_TIMELINE_TRACKER: bool = ( |
| os.getenv("ENABLE_TIMELINE_TRACKER", "True").lower() == "true" |
| ) |
| ENABLE_EXPORT_FEATURES: bool = ( |
| os.getenv("ENABLE_EXPORT_FEATURES", "True").lower() == "true" |
| ) |
|
|
| |
| |
| |
| ENABLE_ANALYTICS: bool = os.getenv("ENABLE_ANALYTICS", "False").lower() == "true" |
| ANALYTICS_API_KEY: str = os.getenv("ANALYTICS_API_KEY", "") |
| ENABLE_ERROR_TRACKING: bool = ( |
| os.getenv("ENABLE_ERROR_TRACKING", "False").lower() == "true" |
| ) |
| SENTRY_DSN: str = os.getenv("SENTRY_DSN", "") |
|
|
| |
| |
| |
| DEFAULT_REGION: str = os.getenv("DEFAULT_REGION", "India") |
| DEFAULT_CURRENCY: str = os.getenv("DEFAULT_CURRENCY", "INR") |
| TIMEZONE: str = os.getenv("TIMEZONE", "Asia/Kolkata") |
|
|
| |
| |
| |
| RISK_SENSITIVITY: int = int(os.getenv("RISK_SENSITIVITY", "3")) |
| SIMPLIFICATION_LEVEL: str = os.getenv("SIMPLIFICATION_LEVEL", "intermediate") |
| MAX_RISK_FACTORS: int = int(os.getenv("MAX_RISK_FACTORS", "10")) |
|
|
| |
| |
| |
| API_REQUESTS_PER_MINUTE: int = int(os.getenv("API_REQUESTS_PER_MINUTE", "60")) |
| API_REQUESTS_PER_DAY: int = int(os.getenv("API_REQUESTS_PER_DAY", "1000")) |
|
|
| |
| |
| |
| ENABLE_AUTO_BACKUP: bool = ( |
| os.getenv("ENABLE_AUTO_BACKUP", "False").lower() == "true" |
| ) |
| BACKUP_INTERVAL_HOURS: int = int(os.getenv("BACKUP_INTERVAL_HOURS", "24")) |
| BACKUP_RETENTION_DAYS: int = int(os.getenv("BACKUP_RETENTION_DAYS", "30")) |
| AUTO_CLEANUP_TEMP_FILES: bool = ( |
| os.getenv("AUTO_CLEANUP_TEMP_FILES", "True").lower() == "true" |
| ) |
| CLEANUP_INTERVAL_HOURS: int = int(os.getenv("CLEANUP_INTERVAL_HOURS", "6")) |
|
|
| @classmethod |
| def validate_config(cls) -> bool: |
| """Validate that required configuration is present.""" |
| required_vars = ["GOOGLE_API_KEY"] |
|
|
| missing_vars = [] |
| for var in required_vars: |
| value = getattr(cls, var, "") |
| if not value or value == "your_google_ai_api_key_here": |
| missing_vars.append(var) |
|
|
| if missing_vars: |
| print( |
| f"⚠️ Missing required environment variables: {', '.join(missing_vars)}" |
| ) |
| print("📝 Please update your .env file with valid values") |
| return False |
|
|
| return True |
|
|
| @classmethod |
| def get_config_summary(cls) -> dict: |
| """Get a summary of current configuration for debugging.""" |
| return { |
| "api_configured": bool( |
| cls.GOOGLE_API_KEY |
| and cls.GOOGLE_API_KEY != "your_google_ai_api_key_here" |
| ), |
| "debug_mode": cls.DEBUG, |
| "features_enabled": { |
| "document_library": cls.ENABLE_DOCUMENT_LIBRARY, |
| "qa_assistant": cls.ENABLE_QA_ASSISTANT, |
| "market_comparison": cls.ENABLE_MARKET_COMPARISON, |
| "timeline_tracker": cls.ENABLE_TIMELINE_TRACKER, |
| "export_features": cls.ENABLE_EXPORT_FEATURES, |
| }, |
| "supported_file_types": cls.SUPPORTED_FILE_TYPES, |
| "max_file_size_mb": cls.MAX_FILE_SIZE_MB, |
| "risk_sensitivity": cls.RISK_SENSITIVITY, |
| "region": cls.DEFAULT_REGION, |
| "currency": cls.DEFAULT_CURRENCY, |
| } |
|
|
|
|
| |
| config = Config() |
|
|