Plataforma LegalTech para ingesta documental, extracción jurídica trazable y análisis técnico de expedientes laborales.
- Centraliza documentos del caso en una sola interfaz.
- Procesa y clasifica evidencia de forma asíncrona.
- Construye ficha técnica con semáforo de riesgo, fuentes y trazabilidad.
- Permite revisar evidencia en PDF con navegación directa a la fuente.
- Backend: FastAPI + Celery + SQLAlchemy
- Frontend: Streamlit
- Base de datos: PostgreSQL + pgvector
- Almacenamiento de archivos: MinIO (S3 compatible)
- Cola: Redis
- IA:
- Ollama local para tareas rápidas/costo eficiente
- Groq para tareas de mayor calidad de razonamiento y extracción
- Entorno reproducible para todo el equipo (backend, frontend, DB, workers).
- Menos fricción para levantar servicios dependientes (Postgres, Redis, MinIO, Ollama).
- Facilita escalar workers por cola sin acoplar al host local.
- Modelo local liviano (Ollama) para tareas frecuentes y de bajo costo.
- Modelo más potente (Groq/OpenRouter) para extracción/auditoría donde la precisión importa más.
- Estrategia híbrida: menor costo operativo + mejor calidad en puntos críticos.
- Metadatos y hechos técnicos: PostgreSQL.
- Vectores para búsqueda semántica: pgvector.
- Archivos originales: MinIO.
- Estado de tareas asíncronas: Redis/Celery backend.
- Resultado: trazabilidad completa de dato + fuente + estado de procesamiento.
backend: API REST y reglas de negocio.frontend: interfaz Streamlit.db: PostgreSQL con pgvector.redis: broker/resultado Celery.minio: almacenamiento documental.worker-ingest: OCR + clasificación.worker-embed: embeddings.worker-extract: extracción estructurada.worker-audit: validaciones y consistencia.
Revisa .env.example y crea .env.
# DB
DATABASE_URL=postgresql://admin:legalpassword123@db:5432/legal_audit_db
# Redis / Celery
CELERY_BROKER_URL=redis://redis:6379/0
CELERY_RESULT_BACKEND=redis://redis:6379/1
# MinIO
S3_ENDPOINT=http://minio:9000
S3_ACCESS_KEY=minioadmin
S3_SECRET_KEY=minioadmin
S3_BUCKET=evidence-crusher
S3_REGION=us-east-1
# IA
AI_PROVIDER=ollama|groq|openrouter
OLLAMA_URL=http://ollama:11434
OLLAMA_EMBED_MODEL=mxbai-embed-large
OLLAMA_LLM_MODEL=llama3.2:1b
GROQ_API_KEY=
OPENROUTER_API_KEY=
# Ficha técnica
TECH_SHEET_V2_ENABLED=true
TECH_SHEET_PHASE2_ENABLED=true
TECH_SHEET_NARRATIVE_MODE=HYBRID- Levantar stack:
docker compose up --build -d- Frontend:
http://localhost:8501 - API:
http://localhost:8000 - MinIO Console:
http://localhost:9001
Ejecutar dentro de backend container:
docker compose exec backend sh -lc "cd /app && PYTHONPATH=/app alembic upgrade head"- Subir documentos.
- Clasificación/OCR (
ingest). - Indexación (
embed). - Extracción técnica (
extract). - Auditoría (
audit). - Revisión en ficha técnica con fuentes.
POST /api/v1/documents/{id}/processPOST /api/v1/documents/{id}/embedGET /api/v1/documents/{id}/filePOST /api/v1/documents/{id}/chatPOST /api/v1/cases/{id}/extract-metadataPOST /api/v1/cases/{id}/build-technical-sheetGET /api/v1/cases/{id}/technical-sheetGET /api/v1/tasks/{task_id}
El repositorio incluye pipeline para:
ruff check(calidad estática)pytest(pruebas unitarias/integración básica)
Archivo: .github/workflows/ci.yml
Este proyecto usa DVC para versionar datasets de evaluación sin cargar archivos pesados al historial de Git.
Dataset actual en DVC:
scripts/datasets/techsheet_v1.dvc
Comandos útiles:
# Si no tienes dependencias MLOps instaladas
pip install -r scripts/requirements-mlops.txt
# Descargar dataset desde remoto DVC (cuando configures remote)
python -m dvc pull
# Actualizar dataset y regenerar .dvc
python -m dvc add scripts/datasets/techsheet_v1
git add scripts/datasets/techsheet_v1.dvc scripts/datasets/.gitignoreNota:
- El contenido del dataset se comparte vía remote DVC (S3/GDrive/MinIO/etc.).
Script integrado:
scripts/track_eval_mlflow.py
Métricas registradas:
accuracy_pctcoverage_pctcritical_coverage_pctavg_api_latency_msavg_build_latency_sectokens_per_second(si proporcionas--token-count)
Configuración base en ruff.toml.
Comandos locales:
ruff check backend frontend
ruff check backend frontend --fixQué sí se versiona:
- Código fuente (
backend/,frontend/,scripts/). - Migraciones de base de datos (
backend/alembic/versions/). - Configuración de CI/CD (
.github/workflows/). - Plantillas de entorno sin secretos (
.env.example).
Qué no se versiona:
- Secretos y entornos locales (
.env,.env.*,venv/,.venv/). - Cachés y artefactos temporales (
__pycache__/,.pytest_cache/,.ruff_cache/). - Datos locales y archivos subidos de prueba (
uploaded_files/,logs/,data/,*.db).
- Mantener secretos fuera del repositorio (
.env, GitHub Secrets). - Limitar CORS y endurecer configuraciones para producción.
- Programar backups de PostgreSQL y MinIO.
- Monitorear latencia de tareas y tasa de errores por worker.
