# Meeting Assistant (Transcription Tool)

**Version:** 0.6.0
**Status:** Beta (AI Insights Integration)

Der **Meeting Assistant** ist eine leistungsstarke Suite zur Transkription und Bearbeitung von Audio-Aufnahmen. Er kombiniert lokale FFmpeg-Verarbeitung mit der Gemini 2.0 Flash AI.

---

## 1. Architektur & Stack

*   **FFmpeg Engine:** Automatisches Splitting großer Dateien in 30-Minuten-Segmente.
*   **Gemini 2.0 Flash:** AI-Transkription mit Fokus auf JSON-Struktur (Sprecher, Timestamps) und zur Generierung von Meeting-Analysen.
*   **Prompt Library:** Eine Sammlung von Vorlagen zur Steuerung der KI-Analyse.
*   **Structured Storage:** SQLite speichert jedes Segment als editierbares JSON-Array und die Ergebnisse der KI-Analyse.
*   **Unified UI:** Das Frontend fügt alle Segmente zu einem nahtlosen Dokument zusammen und bietet interaktive Analyse-Funktionen.

---

## 2. Key Features (v0.6.0)

### 🚀 **NEU:** AI Insights & Translation
*   **Übersetzung (DE/EN):** Übersetzt das gesamte Transkript mit einem Klick ins Englische.
*   **Meeting-Protokoll:** Erstellt automatisch ein formelles Protokoll (Meeting Minutes) mit Agenda, Entscheidungen und nächsten Schritten.
*   **Action Items:** Extrahiert eine Aufgabenliste mit Verantwortlichen und Fälligkeiten direkt aus dem Gespräch.
*   **Rollenbasierte Zusammenfassungen:** Generiert spezifische Zusammenfassungen, z.B. eine "Sales Summary", die sich auf Kundenbedürfnisse, Kaufsignale und nächste Schritte für das Vertriebsteam konzentriert.

### 🎙️ Intelligente Transkription
*   Unterstützt MP3/WAV bis 500MB.
*   Native Sprechererkennung und Zeitstempel-Normalisierung über Segmentgrenzen hinweg.

### 👥 Globales Sprecher-Management
*   **Speaker Bar:** Eine Übersicht aller im Dokument gefundenen Sprecher.
*   **Global Rename:** Mit einem Klick kann ein Sprecher (z.B. "Speaker A") im gesamten Dokument dauerhaft umbenannt werden (z.B. "Thomas").

### ✂️ Präzises Schneiden (Trimming)
*   **Trim Start:** Löscht alles *vor* einer ausgewählten Zeile (ideal zum Entfernen von Vorgesprächen).
*   **Trim End:** Löscht alles *nach* einer ausgewählten Zeile (entfernt Verabschiedungen).
*   **Single Line Delete:** Einzelne Zeilen oder Störgeräusche können individuell entfernt werden.

### 📝 Editor & Export
*   **Inline-Edit:** Jeder Textblock und jeder Sprechername kann durch direktes Anklicken korrigiert werden.
*   **Copy Full Transcript:** Kopiert das gesamte, bereinigte Transkript inkl. Timestamps in die Zwischenablage.
*   **Copy Insights:** Jedes Analyse-Ergebnis kann einfach in die Zwischenablage kopiert werden.

---

## 3. API Endpunkte

| Methode | Pfad | Beschreibung |
| :--- | :--- | :--- |
| `GET` | `/meetings` | Liste aller Meetings. |
| `POST` | `/upload` | Audio-Upload & Prozess-Start. |
| `POST` | `/meetings/{id}/insights` | **Neu:** Generiert eine Analyse (z.B. Protokoll, Action Items). |
| `POST` | `/meetings/{id}/translate` | **Neu:** Übersetzt das Transkript in eine Zielsprache (aktuell: 'English'). |
| `POST` | `/meetings/{id}/rename_speaker` | Globale Umbenennung in der DB. |
| `PUT` | `/chunks/{id}` | Speichert manuelle Text-Korrekturen. |
| `DELETE` | `/meetings/{id}` | Vollständiges Löschen. |

---

## 4. Docker Deployment (Plug & Play)

Der **Meeting Assistant** ist vollständig in die zentrale `docker-compose.yml` integriert.

### Inbetriebname
```bash
# Build & Start
docker-compose up -d --build transcription-tool

# Logs überwachen
docker logs -f transcription-tool
```

### Konfiguration
*   **Port:** Intern `8001`.
*   **Persistenz:** Audio-Uploads werden im benannten Volume `transcription_uploads` gespeichert (`/app/uploads` im Container).
*   **Routing:** Das Tool läuft unter dem Pfad `/tr/`. Nginx muss das Präfix strippen: `rewrite ^/tr/(.*) /$1 break;`.

---

## 5. Roadmap

*   **v0.7: Search:** Globale Suche über alle Transkripte hinweg.
*   **v0.8: Q&A an das Meeting:** Ermöglicht, Fragen direkt an das Transkript zu stellen ("Was wurde zu Thema X beschlossen?").
*   **v0.9: Export-Formate:** Export der Ergebnisse in verschiedene Formate (z.B. PDF, DOCX).

---

## 5. Development Notes & Troubleshooting

Bei der Implementierung der AI-Insights-Funktion (v0.6.0) traten mehrere Probleme auf, deren Lösungen für die zukünftige Entwicklung wichtig sind:

*   **Isolierung von Microservices:** Der Versuch, eine zentrale `helpers.py`-Datei aus dem `transcription-app`-Container zu importieren, schlug mit einem `ModuleNotFoundError` fehl.
    *   **Lösung:** Kritische Funktionen (wie der Gemini-API-Client) wurden in eine lokale Bibliothek (`/lib/gemini_client.py`) innerhalb des Service-Backends dupliziert, um den Service eigenständig zu machen.
*   **API-Schlüssel in Docker:** Der neue, isolierte Service konnte den API-Schlüssel nicht aus einer Datei lesen.
    *   **Lösung:** Der `GEMINI_API_KEY` wurde als Umgebungsvariable über die `docker-compose.yml`-Datei an den Container übergeben. Dies ist die Best Practice für die Bereitstellung von "Secrets" für containerisierte Anwendungen. **Wichtig:** Ein `docker-compose restart` reicht nicht aus, um die Änderung zu übernehmen; ein `docker-compose up -d --force-recreate <service_name>` ist erforderlich.
*   **Modell-Kompatibilität:** API-Aufrufe schlugen mit `404 NOT_FOUND` fehl, weil versucht wurde, ein nicht zum API-Schlüssel passendes Modell (`gemini-1.5-flash`) zu verwenden.
    *   **Lösung:** Der Modellname wurde auf das im Projekt etablierte und funktionierende Modell `gemini-2.0-flash` korrigiert.
*   **Datenformatierung:** Die KI lieferte generische Antworten, weil das an sie übergebene Transkript leer war.
    *   **Lösung:** Die Analyse des rohen JSON-Outputs aus der Datenbank (`debug_chunks`-Endpunkt) zeigte, dass die Formatierungslogik die `absolute_seconds` zur korrekten chronologischen Sortierung verwenden muss. Die `_format_transcript`-Funktion wurde entsprechend angepasst.
