Skip to content

ADR 0001 — Separación de configuración de infraestructura vs configuración de negocio

Estado: Aceptado
Fecha: 2026-04-22
Change: storage-env-config

Contexto

El sistema utiliza data_config (tabla en base de datos) para guardar configuración operativa del negocio (estrategias, parámetros de facturación, plazos, etc.). Históricamente, storage.base_url fue colocado en data_config, pero esta URL es una propiedad del entorno de despliegue (infraestructura), no una regla de negocio configurable por el operador.

Decisión

Se establece la siguiente separación:

TipoFuenteEjemplos
Configuración de infraestructuraVariables de entorno (.env)STORAGE_BASE_URL, URLs de APIs externas, credenciales
Configuración de negociodata_config (DB)storage.strategy, plazos de facturación, parámetros de módulos

STORAGE_BASE_URL se migra de data_config a variable de entorno porque:

  • Varía por entorno (dev/staging/prod), no por empresa/sucursal
  • No debe ser editable por operadores del sistema
  • No tiene lógica de negocio asociada; es un path de acceso a archivos del servidor

Consecuencias

  • storage.strategy permanece en data_config (es una decisión de negocio por empresa)
  • storage.base_url fue eliminada del seed de data_config (ya no se siembra en nuevos entornos); las filas existentes en producción pueden eliminarse manualmente en un cleanup futuro
  • Todo valor que dependa del entorno de despliegue DEBE ir en .env, no en data_config
  • .env.dist y .env.test.dist deben documentar TODAS las variables de entorno obligatorias

Regla general derivada

Si el valor cambia entre entornos (dev/staging/prod) sin cambiar la lógica de negocio → va en .env. Si el valor es configurable por el operador del sistema dentro de un mismo entorno → va en data_config.