feat(notion): Finalize relational DB implementation and scripts
- Implement relational data structure in Notion as per the plan. - Add scripts for initial data import (import_product.py) and distribution to related databases (distribute_product_data.py). - Create helper scripts for reading Notion content. - Update Notion_Dashboard.md and GEMINI.md with the latest implementation status, database IDs, and key lessons learned from the MVP phase, including API constraints and schema-first principles.
This commit is contained in:
@@ -92,6 +92,7 @@ Um die relationale Integrität zu wahren, sind folgende Datenbanken in Notion zw
|
||||
* **Messaging Matrix** $\leftrightarrow$ **Sector Master** (Welcher Schmerz gehört zu welcher Branche?)
|
||||
* **The Brain** $\leftrightarrow$ **Product Master** (Welches Support-Wissen gehört zu welcher Hardware?)
|
||||
* **GTM Workspace** $\leftrightarrow$ **Product Master** (Welche Kampagne bewirbt welches Gerät?)
|
||||
* **Feature-to-Value Translator** $\leftrightarrow$ **Product Master** (Welcher Nutzen gehört zu welchem Feature?)
|
||||
|
||||
---
|
||||
|
||||
@@ -141,6 +142,7 @@ Die folgenden IDs wurden bei der initialen Erstellung der Datenbanken generiert
|
||||
* **Enrichment Factory & RevOps:** `2e288f42-8544-8172-a3a7-f5101b6ac0f0`
|
||||
* **The Brain:** `2e288f42-8544-810f-8e7d-e9a2a3100779`
|
||||
* **GTM Workspace:** `2e288f42-8544-81cc-b167-f9dffe9c7bde`
|
||||
* **Feature-to-Value Translator:** `2e288f42-8544-8184-ba08-d6d736879f19`
|
||||
|
||||
---
|
||||
|
||||
@@ -154,5 +156,19 @@ Die folgenden IDs wurden bei der initialen Erstellung der Datenbanken generiert
|
||||
**Status:** Blueprint Finalisiert.
|
||||
**Nächster Schritt:** Umsetzung der Datenbank-Properties und API-Endpunkte gemäß diesem Dokument.
|
||||
|
||||
### 8.8 Erfolgreicher Datenimport (08. Jan. 2026)
|
||||
Der Produkt-Datensatz "Puma M20" wurde erfolgreich mithilfe des `import_product.py`-Skripts und der Quelldatei `Puma_m20_2026-01-08.md` in die Notion-Datenbanken "Product Master", "Sector & Persona Master" und "Messaging Matrix" importiert.
|
||||
### 8.8 Erfolgreicher Datenimport & -verteilung (08. Jan. 2026)
|
||||
Der Produkt-Datensatz "Puma M20" wurde erfolgreich importiert. Die strategischen Daten (Zielgruppen, Pain Points, Messaging) wurden anschließend aus dem Produkteintrag extrahiert und in die relational verknüpften Datenbanken "Sector & Persona Master" und "Messaging Matrix" verteilt. Dies schafft eine "Single Source of Truth" und legt die Grundlage für automatisierte Marketing-Workflows.
|
||||
|
||||
### 8.9 Neu gelernte Lektionen (Post-MVP)
|
||||
|
||||
6. **Notion API - Schema First:**
|
||||
* **Problem:** Skripte schlugen fehl beim Versuch, Daten in eine nicht existierende Datenbankeigenschaft (Spalte) zu schreiben.
|
||||
* **Lösung:** IMMER sicherstellen, dass das Datenbankschema korrekt ist, *bevor* Daten importiert oder aktualisiert werden. Den `databases.update`-Endpunkt verwenden, um die erforderlichen Eigenschaften (z.B. "Key Features", "Constraints") programmatisch als vorbereitenden Schritt hinzuzufügen. Die API erstellt diese nicht spontan.
|
||||
|
||||
7. **Notion API - Zeichenbeschränkungen:**
|
||||
* **Problem:** API-Aufrufe schlugen mit einem `400 Bad Request`-Fehler fehl, wenn ein Rich-Text-Feld die maximale Länge überschritt.
|
||||
* **Lösung:** Das **2000-Zeichen-Limit** für Rich-Text-Eigenschaften beachten. Eine Logik implementieren, um den Textinhalt vor dem Senden des Payloads an die Notion-API zu kürzen, um Validierungsfehler zu vermeiden.
|
||||
|
||||
8. **Notion API - Antwortstrukturen:**
|
||||
* **Problem:** Parsing-Funktionen schlugen mit `TypeError` oder `AttributeError` fehl, da die JSON-Struktur für eine Eigenschaft unterschiedlich war, je nachdem, wie sie angefordert wurde.
|
||||
* **Lösung:** Robuste Hilfsfunktionen schreiben, die mehrere mögliche JSON-Strukturen verarbeiten können. Ein Eigenschaftsobjekt, das über einen direkten Eigenschafts-Endpunkt (`/pages/{id}/properties/{prop_id}`) abgerufen wird, ist anders strukturiert als dieselbe Eigenschaft, wenn sie Teil eines vollständigen Seitenobjekts (`/pages/{id}`) ist. Die Parsing-Logik muss diese Variationen berücksichtigen.
|
||||
Reference in New Issue
Block a user