"""
Configurações globais do sistema de IA Chatbot
"""
import os
from dataclasses import dataclass
from typing import Optional


@dataclass
class LLMConfig:
    """Configuração do modelo de linguagem"""
    provider: str = "openai"  # openai, anthropic, local
    model: str = "gpt-4"
    api_key: Optional[str] = None
    base_url: Optional[str] = None
    temperature: float = 0.7
    max_tokens: int = 2000
    timeout: int = 30


@dataclass
class MemoryConfig:
    """Configuração de memória"""
    max_history: int = 10  # Mensagens de histórico
    summary_threshold: int = 20  # Quando resumir
    storage_type: str = "sqlite"  # sqlite, redis, postgres


@dataclass
class EmbeddingConfig:
    """Configuração de embeddings"""
    model: str = "text-embedding-3-small"
    dimension: int = 1536
    chunk_size: int = 500
    chunk_overlap: int = 50


@dataclass
class SystemConfig:
    """Configuração do sistema"""
    name: str = "Assistente IA"
    version: str = "1.0.0"
    debug: bool = False
    log_level: str = "INFO"
    max_concurrent_requests: int = 100


class Settings:
    """Centralizador de configurações"""
    
    def __init__(self):
        self.llm = LLMConfig(
            api_key=os.getenv("OPENAI_API_KEY"),
            model=os.getenv("LLM_MODEL", "gpt-4"),
            temperature=float(os.getenv("TEMPERATURE", "0.7"))
        )
        self.memory = MemoryConfig()
        self.embedding = EmbeddingConfig()
        self.system = SystemConfig(
            debug=os.getenv("DEBUG", "false").lower() == "true"
        )
    
    @classmethod
    def from_env(cls) -> "Settings":
        """Carrega configurações das variáveis de ambiente"""
        return cls()


# Instância global
settings = Settings.from_env()