Appearance
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:
| Tipo | Fuente | Ejemplos |
|---|---|---|
| Configuración de infraestructura | Variables de entorno (.env) | STORAGE_BASE_URL, URLs de APIs externas, credenciales |
| Configuración de negocio | data_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.strategypermanece endata_config(es una decisión de negocio por empresa)storage.base_urlfue eliminada del seed dedata_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 endata_config .env.disty.env.test.distdeben 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 endata_config.