Files
IPSExtractor/.env.example
T

69 lines
3.6 KiB
Bash
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Copia este archivo a `.env` en la raiz del repositorio.
# ── OpenAI ────────────────────────────────────────────────
# API key usada para extracción y normalización.
# El modelo del extractor lo elige el usuario en la app (ej. gpt-4o, gpt-5.4).
# El normalizador siempre usa gpt-4o-mini (fijado en docker-compose).
EXTRACTOR_API_KEY=sk-...
EXTRACTOR_MODEL=gpt-4o
EXTRACTOR_TIMEOUT_S=120
# ── Procesamiento de imagenes ─────────────────────────────
# DPI mas bajo = mas rapido; 150 es suficiente para la mayoria de documentos.
PDF_DPI=150
PDF_THREAD_COUNT=4
# ── Concurrencia ──────────────────────────────────────────
# Cuantas llamadas LLM simultáneas por worker ARQ
WORKER_CONCURRENCY=25
# Cuántas réplicas del worker levantar
WORKER_REPLICAS=2
# ── Rate limiting OpenAI ──────────────────────────────────
# Ajusta según tu tier de OpenAI (estos son los valores tier-1 de gpt-4o)
OPENAI_RPM_LIMIT=500
OPENAI_TPM_LIMIT=800000
# ── Cola de tareas (Redis + ARQ) ─────────────────────────
# ASYNC_QUEUE=false (default) → procesa documentos sincronamente, sin Redis.
# ASYNC_QUEUE=true → encola en Redis/ARQ para procesamiento distribuido
# (requiere el servicio `worker` y `redis` corriendo via docker-compose).
ASYNC_QUEUE=false
# Solo necesario cuando ASYNC_QUEUE=true. Se levanta via docker-compose.
REDIS_URL=redis://redis:6379/0
# ── Carpeta de documentos ─────────────────────────────────
# Ruta local que Docker monta como /data dentro de los contenedores.
IPS_DOCUMENT_ROOT=./data
# ── Servicio de conteo (count-api) ────────────────────────
# OCR_DPI: resolución para Tesseract.
# 300 = alta calidad (recomendado para documentos escaneados de baja calidad)
# 150 = 4× más rápido, suficiente para la mayoría de facturas digitales
# Para procesar MILES de archivos se recomienda OCR_DPI=150
OCR_DPI=150
OCR_LANG=spa
# OCR_POOL_SIZE y SYNC_PROCESS_CONCURRENCY: igualar al número de núcleos de CPU.
# Ejemplo: máquina con 8 núcleos → OCR_POOL_SIZE=8, SYNC_PROCESS_CONCURRENCY=8
# El frontend envía BATCH_CONCURRENCY=6 requests simultáneos × SYNC_PROCESS_CONCURRENCY archivos c/u.
OCR_POOL_SIZE=8
SYNC_MAX_FILES=50
SYNC_PROCESS_CONCURRENCY=8
# Memoria para el contenedor count-api. Con 8 workers Tesseract se necesitan ~3 GB.
COUNT_API_MEMORY=3g
# ── Misc ──────────────────────────────────────────────────
ALLOWED_DOCUMENT_TYPES=CC,TI,CE,RC,PA,PPT,PEP,EPT,NUIP
# ── Desktop app (API Gateway) ─────────────────────────────
# En Windows use 127.0.0.1 en lugar de localhost (evita colgar con IPv6).
# La app desktop guarda esta URL en localStorage; valor por defecto: http://127.0.0.1:8189
# ── Build paralelo (solo si falla docker compose up --build) ──────────────────
# Compose v2.37+ usa Bake por defecto y lanza todos los builds en paralelo.
# Si BuildKit se satura (error "frontend grpc server closed unexpectedly"),
# desactivar Bake y limitar el paralelismo resuelve el problema.
# Descomentar solo si se produce ese error.
#COMPOSE_BAKE=false
#COMPOSE_PARALLEL_LIMIT=2