Files
checklist/backend/app/core/config.py
2025-11-25 08:43:54 -03:00

49 lines
1.5 KiB
Python

import os
# Variables de conexión S3/MinIO
MINIO_HOST = os.getenv('MINIO_HOST', 'localhost')
MINIO_SECURE = os.getenv('MINIO_SECURE', 'false').lower() == 'true'
MINIO_PORT = int(os.getenv('MINIO_PORT', '9000'))
MINIO_ACCESS_KEY = os.getenv('MINIO_ACCESS_KEY', 'minioadmin')
MINIO_SECRET_KEY = os.getenv('MINIO_SECRET_KEY', 'minioadmin')
MINIO_IMAGE_BUCKET = os.getenv('MINIO_IMAGE_BUCKET', 'images')
MINIO_PDF_BUCKET = os.getenv('MINIO_PDF_BUCKET', 'pdfs')
MINIO_ENDPOINT = f"{'https' if MINIO_SECURE else 'http'}://{MINIO_HOST}:{MINIO_PORT}"
from pydantic_settings import BaseSettings
class Settings(BaseSettings):
# Database
DATABASE_URL: str
# Security
SECRET_KEY: str
ALGORITHM: str = "HS256"
ACCESS_TOKEN_EXPIRE_MINUTES: int = 10080 # 7 días
# OpenAI
OPENAI_API_KEY: str | None = None
# Environment
ENVIRONMENT: str = "development"
# Notificaciones
NOTIFICACION_ENDPOINT: str = ""
# CORS - Orígenes permitidos separados por coma
ALLOWED_ORIGINS: str = "http://localhost:3000,http://localhost:5173"
# Uploads
UPLOAD_DIR: str = "uploads"
MAX_FILE_SIZE: int = 10 * 1024 * 1024 # 10MB
@property
def cors_origins(self) -> list:
"""Convierte el string de origins separado por comas en una lista"""
return [origin.strip() for origin in self.ALLOWED_ORIGINS.split(",") if origin.strip()]
class Config:
env_file = ".env"
case_sensitive = True
extra = "ignore" # Permite variables extras sin error
settings = Settings()