Configuración (.env)
Variables de entorno del backend, leídas por app/config.py (clase Config) y
la app factory. Se cargan con python-dotenv desde el .env de la raíz.
Variables principales
# --- Seguridad ---
SECRET_KEY=<cadena-aleatoria-larga> # firma de JWT; OBLIGATORIA en producción
# --- Base de datos ---
DATABASE_URL=postgresql://user:pass@host:5432/gestion_civis
# Si no se define, cae a SQLite local (solo desarrollo)
# --- Almacenamiento ---
STORAGE_PROVIDER=local # 'local' o 'gcs'
STORAGE_LOCAL_PATH=./storage # ruta base si es local
# --- Frontend / CORS ---
FRONTEND_URL=http://localhost:5173
FRONTEND_ALLOWED_ORIGINS=http://localhost:5173,http://127.0.0.1:5173
# --- IA ---
IA_AUDITORIA_ENABLED=false
GOOGLE_API_KEY=<api-key>
# --- Feature flags de presupuesto ---
PRESUPUESTO_EDICION_CONCEJALIAS=false
PRESUPUESTO_PRORROGA_AUTO=false
PRESUPUESTO_LOG_LEVEL=INFO
Tokens JWT
Los tiempos de caducidad están en Config (no en .env por defecto):
- Access token: 15 minutos.
- Refresh token: 7 días.
SIR / Registro (si se usa interconexión real)
SIR_MODE=production # 'mock' (def.) o 'production'
SIR_WSDL_URL=<url-wsdl>
SIR_USERNAME=<usuario-minhap>
SIR_PASSWORD=<password>
SIR_CERT_P12_PATH=/ruta/sello-organo.p12
SIR_CERT_P12_PWD=<password-cert>
SIR_TIMEOUT_S=60
Google Cloud Storage (si STORAGE_PROVIDER=gcs)
Seguridad de SECRET_KEY
En producción SECRET_KEY debe ser una cadena aleatoria fuerte y secreta.
No usar el valor por defecto del código (es solo para desarrollo). La
auditoría de seguridad del proyecto recoge la retirada del fallback débil
como tarea pendiente: confirmar que en el despliegue real se define
explícitamente.
load_dotenv
El proyecto puede convivir con otras aplicaciones; conviene asegurar que el
.env de Gestión Civis no se vea contaminado por variables globales del
shell (especialmente DATABASE_URL).