diff --git a/docker-compose.prod.yml b/docker-compose.prod.yml index c3f08ee..7330562 100644 --- a/docker-compose.prod.yml +++ b/docker-compose.prod.yml @@ -84,6 +84,31 @@ services: - S3_USE_SSL=${S3_USE_SSL:-false} - S3_FILE_STORAGE=${S3_FILE_STORAGE:-true} - S3_PRESIGNED_EXPIRES_SECONDS=${S3_PRESIGNED_EXPIRES_SECONDS:-3600} + + # ── Carril hacia EFC, el expediente electronico (T2026-08-046) ────────────────────── + # EFC_API_URL VACIA = CARRIL APAGADO. No es un error de configuracion: con la URL vacia + # `EfcClient.is_configured` es False, todo el enganche hace no-op y el CRM guarda sus + # archivos solo en su propio MinIO. Encenderlo exige las dos primeras. + # + # EFC_API_KEY debe ser IDENTICA a CRM_INTEGRATION_API_KEY del lado de EFC. Alla el permiso + # es fail-closed: si no coinciden, EFC responde 403 "API key invalida o no configurada" y + # esa respuesta NO distingue entre clave equivocada y clave ausente, a proposito. + # + # Las cuatro ultimas van declaradas aunque hoy queden vacias. La razon no es simetria: si + # una variable no se declara aqui, editarla en el .env NO surte efecto y el sintoma parece + # un problema de red. Ya paso con EFC_API_VERIFY_SSL en el compose de desarrollo. + - EFC_API_URL=${EFC_API_URL:-} + - EFC_API_KEY=${EFC_API_KEY:-} + - EFC_API_VERIFY_SSL=${EFC_API_VERIFY_SSL:-true} + - EFC_API_TIMEOUT_MS=${EFC_API_TIMEOUT_MS:-8000} + # Las subidas van aparte: 8 s no alcanzan para un archivo de 25 MB. Debe quedar POR DEBAJO + # del proxy_read_timeout del nginx de EFC. + - EFC_UPLOAD_TIMEOUT_MS=${EFC_UPLOAD_TIMEOUT_MS:-55000} + # Scaffolding de mTLS: activarlo es configuracion, no codigo. Es el endurecimiento que la + # deuda de la API key estatica pide antes de produccion real. + - EFC_MTLS_CA_PATH=${EFC_MTLS_CA_PATH:-} + - EFC_MTLS_CERT_PATH=${EFC_MTLS_CERT_PATH:-} + - EFC_MTLS_KEY_PATH=${EFC_MTLS_KEY_PATH:-} ports: - "3467:8000" depends_on: @@ -148,6 +173,19 @@ services: - S3_REGION=${S3_REGION:-us-east-1} - S3_USE_SSL=${S3_USE_SSL:-false} - S3_FILE_STORAGE=${S3_FILE_STORAGE:-true} + + # Carril hacia EFC (T2026-08-046). EL WORKER LAS NECESITA IGUAL QUE EL BACKEND: la entrega + # de expedientes y archivos la hace `deliver_*_row` AQUI, no en el proceso web. Si solo el + # backend las tuviera, el encolado se veria perfecto y nada se entregaria nunca. + # Ver la nota completa en el servicio `backend`. + - EFC_API_URL=${EFC_API_URL:-} + - EFC_API_KEY=${EFC_API_KEY:-} + - EFC_API_VERIFY_SSL=${EFC_API_VERIFY_SSL:-true} + - EFC_API_TIMEOUT_MS=${EFC_API_TIMEOUT_MS:-8000} + - EFC_UPLOAD_TIMEOUT_MS=${EFC_UPLOAD_TIMEOUT_MS:-55000} + - EFC_MTLS_CA_PATH=${EFC_MTLS_CA_PATH:-} + - EFC_MTLS_CERT_PATH=${EFC_MTLS_CERT_PATH:-} + - EFC_MTLS_KEY_PATH=${EFC_MTLS_KEY_PATH:-} depends_on: - backend - valkey @@ -186,6 +224,20 @@ services: - S3_REGION=${S3_REGION:-us-east-1} - S3_USE_SSL=${S3_USE_SSL:-false} - S3_FILE_STORAGE=${S3_FILE_STORAGE:-true} + + # Carril hacia EFC (T2026-08-046). El BEAT las necesita porque de aqui salen los tres + # barridos —`sweep_outbox`, `sweep_file_outbox` y `sweep_expediente_gaps`—, que son la red + # que atrapa lo que el despacho inmediato no alcanzo a entregar. Sin ellas el carril + # depende solo del despacho inmediato y una caida de EFC deja la cola detenida para + # siempre. Ver la nota completa en el servicio `backend`. + - EFC_API_URL=${EFC_API_URL:-} + - EFC_API_KEY=${EFC_API_KEY:-} + - EFC_API_VERIFY_SSL=${EFC_API_VERIFY_SSL:-true} + - EFC_API_TIMEOUT_MS=${EFC_API_TIMEOUT_MS:-8000} + - EFC_UPLOAD_TIMEOUT_MS=${EFC_UPLOAD_TIMEOUT_MS:-55000} + - EFC_MTLS_CA_PATH=${EFC_MTLS_CA_PATH:-} + - EFC_MTLS_CERT_PATH=${EFC_MTLS_CERT_PATH:-} + - EFC_MTLS_KEY_PATH=${EFC_MTLS_KEY_PATH:-} depends_on: - backend - valkey