Skip to content

email2trip/extractor

Repository files navigation

extractor - email2trip

Extracción de campos relevantes de reservas de viajes

Estructura

  • core: pipeline de extracción que recibe un .EML y retorna los campos relevantes (Stanford NLP)
  • server: aplicación web que permite arrastrar un .EML, dispara el pipeline de core y permite ver los resultados (Spring Boot + Spring Security)
  • client: frontend web estático (Thymeleaf)
  • enricher: repositorios de CSV en memoria para obtener más información a partir de un código de aeropuerto o de aerolínea
  • recommender: recomendador de POIs para las ciudades destino del itinerario, usando un LLM local (Spring AI + Ollama + gemma4) Por el momento solo recomienda nombres de POIs. Se intentó pedir además las coordenadas pero alucina.
  • api: entidades del modelo compartidas por los módulos
  • common: utilidades comunes como la lectura de un csv usada tanto para la creación de reglas NLP (core) y para los repositorios de CSV (enricher)

Deploy

Server (Dev)

Para hacer deploy la webapp es necesario ejecutar el módulo server:

./mvnw -pl server -am spring-boot:run

Deploy Docker Local

Para hacer deploy de la webapp es necesario ejecutar compose

docker compose build --no-cache webapp
docker compose up --build

El compose queda preparado para desarrollo local con:

  • SPRING_AI_MODEL_CHAT=ollama
  • Ollama local en Docker
  • APP_AUTH_REGISTRATION_ENABLED=true

Para detener la webapp:

docker compose down

Para destruir el volumen creado, usar el flag -v

docker compose down -v

Deploy Azure Cloud

Para deploy en Azure no se usa el contenedor de Ollama. En ese entorno la app se configura con:

  • SPRING_AI_MODEL_CHAT=openai
  • endpoint OpenAI-compatible de Ollama Cloud
  • APP_AUTH_REGISTRATION_ENABLED=false

El paso a paso utilizando Terraform se encuentra en infra/terraform/azure-container-apps

Dependencias

Dependencias Core

Dependencias Server

Dependencias Recommender

APIs Externas

Tests Unitarios

Archivos EML necesarios

Para copiar los archivos .eml necesarios del repositorio local DVC del dataset ejecutar el siguiente comando

dvc get ../dataset data/raw/flight_001.eml -o src/main/resources/mail/flight_001.eml
./mvnw clean package

Test Ollama Local

Para ejecutar el test TripRecommendationServiceIntegrationTest directamente desde IntelliJ es necesario tener Ollama corriendo en la máquina local, escuchando en http://localhost:11434.

Instalación y preparación en macOS:

brew install ollama
ollama serve

En otra terminal:

ollama pull gemma4:e4b

Ahora al listar los modelos se debe ver en la salida

ollama list

La configuración del test requiere definir esta variable de entorno en la Run Configuration de IntelliJ:

RUN_OLLAMA_TESTS=true

Swagger

Para acceder a la documentación autogenerada de la API web se puede acceder a la ruta http://localhost:8080/swagger-ui/index.html#/

Notas

  • Se realiza un "warmup" del pipeline NLP al inciar server para evitar que el primer procesamiento del usuario implique la inicialización del pipeline de Stanford NLP.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors