Configuración del Entorno
Yastubo Backend utiliza variables de entorno para gestionar conexiones seguras, secretos criptográficos y habilitar integraciones de terceros. Este enfoque garantiza que el sistema sea agnóstico al entorno (Desarrollo, Staging o Producción).
Gestión del archivo .env
Section titled “Gestión del archivo .env”El script de instalación automática genera un archivo .env basado en .env.example. Debe configurar las siguientes variables para la funcionalidad completa del sistema.
Variables de Configuración Crítica
Section titled “Variables de Configuración Crítica”1. Seguridad
Section titled “1. Seguridad”- SECRET_KEY: Cadena utilizada para firmar los tokens JWT. Debe ser una clave criptográfica fuerte.
- APP_ENV: Define el modo de ejecución (development, staging, production).
2. Infraestructura de Datos
Section titled “2. Infraestructura de Datos”- DATABASE_URL: URL de conexión asíncrona para PostgreSQL.
- Ejemplo:
postgresql+asyncpg://user:password@localhost:5432/yastubo
- Ejemplo:
- REDIS_URL: Conexión para el motor de tareas asíncronas y caché.
- Ejemplo:
redis://localhost:6379
- Ejemplo:
3. Integraciones Externas (Feature Flags)
Section titled “3. Integraciones Externas (Feature Flags)”Yastubo permite habilitar módulos dinámicamente. El sistema desactivará las llamadas externas si los secretos no están configurados.
| Variable | Módulo | Descripción |
|---|---|---|
STRIPE_SECRET_KEY | Payments | Gestión de cobros vía Stripe. |
GOOGLE_API_KEY | AI (Gemini) | Agentes de IA para soporte y análisis. |
CRM_ENABLED | CRM (Zoho) | Sincronización con Zoho CRM. |
WHATSAPP_ENABLED | Notificaciones | Envío de alertas vía Twilio. |
Análisis Técnico: Validación de Configuración
Section titled “Análisis Técnico: Validación de Configuración”En Yastubo, la configuración se somete a una Validación Estricta mediante Pydantic.
Diseño Fail-Fast
Section titled “Diseño Fail-Fast”Si al iniciar el servidor falta una variable obligatoria o el formato de los datos es incorrecto, el sistema interrumpirá el arranque. Esto evita comportamientos erráticos en entornos de producción.
class Settings(BaseSettings): DATABASE_URL: str # Pydantic valida que sea una cadena obligatoria REDIS_URL: str = "redis://localhost:6379"Ejemplo de Configuración en Desarrollo
Section titled “Ejemplo de Configuración en Desarrollo”# EntornoAPP_ENV="development"DEBUG=True
# PersistenciaDATABASE_URL="postgresql+asyncpg://user:password@localhost:5432/yastubo"REDIS_URL="redis://localhost:6379"
# Stripe Test ModeSTRIPE_SECRET_KEY="sk_test_..."STRIPE_WEBHOOK_SECRET="whsec_..."Proceso de Carga de Configuración
Section titled “Proceso de Carga de Configuración”[FLOW: Al inicio, Pydantic Settings busca variables en el entorno del Sistema Operativo. Si no existen, lee el archivo .env. Valida los esquemas de datos en app/core/config.py. Si la validación es exitosa, se inyecta el objeto Settings; de lo contrario, se genera un ValidationError.]