70 lines
3.7 KiB
Bash
70 lines
3.7 KiB
Bash
# Copia este archivo a `.env` en la raiz del repositorio.
|
||
|
||
# ── OpenAI ────────────────────────────────────────────────
|
||
# API key usada para extracción y normalización.
|
||
# GPT-5.6 Luna es el modelo predeterminado para extracción y normalización.
|
||
# El extractor también se puede cambiar desde la aplicación.
|
||
EXTRACTOR_API_KEY=sk-...
|
||
EXTRACTOR_MODEL=gpt-5.6-luna
|
||
NORMALIZER_MODEL=gpt-5.6-luna
|
||
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
|