# Validate Service Ein Flask-basierter Microservice zur asynchronen Verarbeitung und Validierung von Entitäten aus zwei verschiedenen NLP-Services (SpaCy und Exxeta). ## Funktionsweise Das Service empfängt für jede eindeutige ID zwei POST-Requests von verschiedenen Services: 1. **SpaCy Service** - sendet extrahierte Entitäten 2. **Exxeta Service** - sendet extrahierte Entitäten Beim ersten Request werden die Daten zwischengespeichert. Beim zweiten Request startet die asynchrone Verarbeitung. Nach der Verarbeitung werden die Ergebnisse an einen nachgelagerten Service weitergeleitet. ## API Endpoints ### POST /validate Empfängt Entitätsdaten von SpaCy oder Exxeta Services. **Request Body:** ```json { "id": "pitch_book_id", "service": "spacy|exxeta", "entities": [ { "label": "PERSON", "entity": "Max Mustermann", "page": 1 } ] } ``` **Response:** - **200**: Daten erfolgreich verarbeitet - **400**: Fehlende oder ungültige Parameter - **500**: Serverfehler ## Installation und Start 1. **Abhängigkeiten installieren:** ```bash pip install -r requirements.txt ``` 2. **Service starten:** ```bash python app.py ``` Das Service läuft standardmäßig auf `http://localhost:5050` ## Konfiguration Umgebungsvariablen in `config.py`: - `COORDINATOR_URL`: URL des Koordinators ## Verarbeitungslogik 1. **Zwischenspeicherung**: Beim ersten Request wird das JSON in einem Thread-sicheren Dictionary gespeichert 2. **Trigger**: Beim zweiten Request wird die asynchrone Verarbeitung gestartet 3. **Merge & Validate**: Die `merge_and_validate_entities` Funktion führt die Validierung durch: - Normalisiert Entitäten (entfernt Zeilenumbrüche, konvertiert zu lowercase) - Matched Entitäten basierend auf Label, normalisiertem Text und Seitenzahl - Kennzeichnet Entitäten als "validated" (beide Services) oder "single-source" 4. **Weiterleitung**: Ergebnisse werden an den nächsten Service gesendet 5. **Cleanup**: Verarbeitete Daten werden aus dem Speicher entfernt ## Architektur ``` ┌─────────────────┐ ┌─────────────────┐ │ SpaCy Service │ │ Exxeta Service │ └─────────┬───────┘ └─────────┬───────┘ │ │ │ POST /validate │ POST /validate │ (service_type:spacy) │ (service_type:exxeta) ▼ ▼ ┌─────────────────────────────────────┐ │ Validate Service │ │ ┌─────────────────────────────┐ │ │ │ Zwischenspeicher │ │ │ │ (Thread-safe Dictionary) │ │ │ └─────────────────────────────┘ │ │ ┌─────────────────────────────┐ │ │ │ Asynchrone Verarbeitung │ │ │ │ (merge_and_validate_entities)│ │ │ └─────────────────────────────┘ │ └─────────────┬───────────────────────┘ │ │ POST (processed data) ▼ ┌─────────────────────────────┐ │ Nachgelagerter Service │ └─────────────────────────────┘ ```