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:
@@ -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.
|
||||
|
||||
Reference in New Issue
Block a user