98 lines
3.7 KiB
Markdown
98 lines
3.7 KiB
Markdown
# 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 │
|
|
└─────────────────────────────┘
|
|
```
|