feat(dev-session): Containerize dev session manager

This commit introduces a containerized workflow for the development session manager (dev_session.py).

- Dockerization: Added gemini.Dockerfile to create a self-contained environment with all Python dependencies, removing the need for manual host setup.
- Start Script: Updated start-gemini.sh to build and run the container, executing dev_session.py as the entrypoint.
- Session Management: Implemented --done flag to properly terminate a session, update the Notion task status, and clean up the git hook.
- Notion Integration: Created and integrated notion_commit_hook.py which is automatically installed/uninstalled to post commit messages to the active Notion task.
- Documentation: Updated README_dev_session.md to reflect the new container-based setup, usage, and features.
This commit is contained in:
2026-01-25 19:22:18 +00:00
parent c888c52e4e
commit ebf0a4cc0a
5 changed files with 333 additions and 81 deletions

View File

@@ -15,43 +15,57 @@
## Voraussetzungen
* Python 3.6+
* `requests` Bibliothek (`pip install requests`)
* Ein Notion Integration Token mit Zugriff auf deine "Projects [UT]"- und "Tasks [UT]"-Datenbanken.
* **Docker:** Das gesamte Setup ist containerisiert, um Abhängigkeitskonflikte zu vermeiden.
* **Notion Integration Token:** Ein Notion API-Token mit Zugriff auf Ihre "Projects"- und "Tasks"-Datenbanken.
## Installation und Einrichtung
1. **Notion API Key:**
* Stelle sicher, dass du einen Notion Integration Token hast.
* Speichere deinen Token in einer Umgebungsvariablen namens `NOTION_API_KEY`. Alternativ fragt das Skript beim Start danach.
* Gewähre der Integration Zugriff auf deine "Projects [UT]"- und "Tasks [UT]"-Datenbanken in Notion.
Das Setup ist so konzipiert, dass es mit minimalem Aufwand sofort einsatzbereit ist.
2. **Abhängigkeiten installieren:**
```bash
pip install requests
```
1. **Notion API Key:**
* Stellen Sie sicher, dass Sie einen Notion Integration Token haben.
* Das Skript fragt beim ersten Start interaktiv nach dem Token. Sie können es auch als Umgebungsvariable `NOTION_API_KEY` in einer `.env`-Datei im Hauptverzeichnis speichern, um diesen Schritt zu überspringen.
* Gewähren Sie Ihrer Notion-Integration Zugriff auf die relevanten "Projects"- und "Tasks"-Datenbanken.
2. **Abhängigkeiten:** Alle notwendigen Abhängigkeiten (Python, `requests`, `python-dotenv`) sind im Dockerfile (`gemini.Dockerfile`) definiert und werden automatisch im Container installiert. Es ist keine manuelle Installation via `pip` erforderlich.
## Nutzung
1. **Führe das Skript aus:**
```bash
python3 dev_session.py
```
### 1. Sitzung starten
2. **Notion API Key eingeben:** Wenn `NOTION_API_KEY` nicht als Umgebungsvariable gesetzt ist, wirst du zur Eingabe aufgefordert.
Führen Sie das Start-Skript aus. Es baut bei Bedarf das Docker-Image und startet den Session-Manager.
3. **Projekt auswählen:** Wähle dein gewünschtes Projekt aus der angezeigten Liste der Notion-Projekte.
```bash
./start-gemini.sh
```
4. **Task auswählen oder erstellen:**
* Wenn Tasks für das Projekt vorhanden sind, wähle einen aus.
* Wenn keine Tasks vorhanden sind oder du einen neuen erstellen möchtest, wähle die Option zum "Neuen Task für dieses Projekt erstellen". Du wirst dann nach dem Task-Titel gefragt.
Das Skript führt Sie dann interaktiv durch die Auswahl eines Projekts und eines Tasks, genau wie in der Beispiel-Interaktion unten beschrieben. Nach der Auswahl startet es eine Gemini-CLI-Sitzung mit dem passenden Kontext.
5. **Git Branch erstellen (manuell):** Das Skript gibt einen `git checkout -b`-Befehl aus, den du kopieren und in deinem Terminal ausführen solltest, um einen neuen Branch für den Task zu erstellen.
### 2. Sitzung abschließen
6. **Gemini CLI Kontext:** Das Skript gibt einen formatierten Textblock aus, den du direkt in die Gemini CLI kopieren und einfügen kannst, um die KI mit dem relevanten Kontext zu versorgen.
Wenn Sie die Arbeit an einem Task beendet haben, können Sie die Sitzung über den folgenden Befehl abschließen. Dieser Befehl muss **im Terminal des Hosts** ausgeführt werden, während der Container (`gemini-session`) noch läuft.
```bash
docker exec -it gemini-session python3 dev_session.py --done
```
Dieser Befehl:
* Setzt den Status des Notion-Tasks auf "Done" (oder den finalen Status in Ihrer Konfiguration).
* Löscht die lokale Session-Datei (`.session_info.json`).
* Deinstalliert den Git-Hook.
### 3. Automatisches Notion-Feedback (Git-Hook)
Beim Starten einer Sitzung wird automatisch ein `post-commit`-Git-Hook installiert.
* **Funktion:** Nach jedem `git commit` wird die Commit-Nachricht automatisch als Kommentar an den verknüpften Notion-Task gesendet.
* **Voraussetzung:** Funktioniert nur für Commits, die im `gemini-session`-Container oder auf dem Host-System (mit installiertem `requests`) gemacht werden, während die Session aktiv ist.
* **Deinstallation:** Der Hook wird beim Abschluss der Sitzung mit `--done` automatisch wieder entfernt.
### Beispiel-Interaktion (gekürzt)
Die interaktive Auswahl von Projekt und Task bleibt unverändert:
```
Starte interaktive Entwicklungs-Session...
Bitte gib deinen Notion API Key ein (Eingabe wird nicht angezeigt): ****************
@@ -63,45 +77,11 @@ An welchem Projekt möchtest du arbeiten?
[2] Sync Engine
[...]
Bitte wähle eine Nummer: 2
Projekt 'Sync Engine' ausgewählt.
--- Lade Tasks für das ausgewählte Projekt... ---
Keine offenen Tasks für dieses Projekt gefunden.
[1] Neuen Task für dieses Projekt erstellen
Bitte wähle eine Nummer: 1
--- Neuen Task erstellen ---
Bitte gib den Titel für den neuen Task ein: Create README.md for dev_session.py
✅ Task 'Create README.md for dev_session.py' erfolgreich erstellt.
Task 'Create README.md for dev_session.py' ausgewählt.
--- Aktualisiere Status von Task '<TASK_ID>' auf 'Doing'... ---
✅ Task-Status erfolgreich auf 'Doing' aktualisiert.
------------------------------------------------------------------
✅ Setup abgeschlossen!
Du solltest jetzt den Git-Branch manuell erstellen und auschecken:
git checkout -b feature/task-2f388f42-create-readmemd-for-devsessionpy
Der Notion-Task 'Create README.md for dev_session.py' wurde auf 'Doing' gesetzt.
---
Kontext für die Gemini CLI (bitte kopieren und einfügen):
Ich arbeite jetzt am Projekt 'Sync Engine'. Der Fokus liegt auf dem Task 'Create README.md for dev_session.py'.
Die relevanten Dateien für dieses Projekt sind wahrscheinlich:
- Die primäre Projektdokumentation: @readme.md
- Die spezifische Dokumentation für dieses Modul: @readme.md (falls vorhanden)
- Der Haupt-Code befindet sich wahrscheinlich in: @dev_session.py
Mein Ziel ist es, den Task 'Create README.md for dev_session.py' umzusetzen. Alle Commits für diesen Task sollen die Kennung `[2f388f42]` enthalten.
------------------------------------------------------------------
...
```
Nach der Auswahl wird automatisch die Gemini CLI gestartet.
## Git Branch Benennungs-Konvention
Das Skript schlägt automatisch einen Git-Branch-Namen vor, der dem Muster `feature/task-{kurze_task_id}-{task_titel_slug}` folgt.