ttzzs's picture
Deploy Chronos2 Forecasting API v3.0.0 with new SOLID architecture
c40c447 verified
"""
Configuraci贸n centralizada del proyecto usando Pydantic Settings.
Este m贸dulo implementa el patr贸n Singleton para la configuraci贸n,
cumpliendo con el principio SRP (Single Responsibility Principle).
"""
from typing import List
from pydantic_settings import BaseSettings, SettingsConfigDict
class Settings(BaseSettings):
"""
Configuraci贸n centralizada de la aplicaci贸n.
Todas las configuraciones se cargan desde variables de entorno
o valores por defecto. Esto permite f谩cil configuraci贸n en
diferentes ambientes (dev, staging, production).
"""
# API Configuration
api_title: str = "Chronos-2 Forecasting API"
api_version: str = "3.0.0"
api_description: str = (
"API de pron贸sticos con Chronos-2 + Excel Add-in. "
"Refactorizado con Clean Architecture y principios SOLID."
)
api_port: int = 8000
# Model Configuration
model_id: str = "amazon/chronos-2"
device_map: str = "cpu"
# CORS Configuration
cors_origins: List[str] = [
"https://localhost:3000",
"https://localhost:3001",
"https://ttzzs-chronos2-excel-forecasting-api.hf.space",
"*" # Permitir todos los or铆genes para Office Add-ins
]
# Logging
log_level: str = "INFO"
log_format: str = "%(asctime)s - %(name)s - %(levelname)s - %(message)s"
# Static Files
static_dir: str = "static"
model_config = SettingsConfigDict(
env_file=".env",
env_file_encoding="utf-8",
case_sensitive=False,
extra="ignore"
)
# Singleton instance
_settings_instance = None
def get_settings() -> Settings:
"""
Obtiene la instancia singleton de Settings.
Returns:
Settings: Instancia de configuraci贸n
"""
global _settings_instance
if _settings_instance is None:
_settings_instance = Settings()
return _settings_instance
# Exportar instancia por defecto para uso directo
settings = get_settings()