import os import requests import json from dotenv import load_dotenv load_dotenv(dotenv_path="/home/node/clawd/.env") NOTION_TOKEN = os.getenv("NOTION_API_KEY") HEADERS = { "Authorization": f"Bearer {NOTION_TOKEN}", "Content-Type": "application/json", "Notion-Version": "2022-06-28" } PROJECT_ID = "2ea88f42-8544-8074-9ad8-c24d283bc1c9" def find_tasks_db(): url = "https://api.notion.com/v1/search" payload = {"query": "Tasks", "filter": {"value": "database", "property": "object"}} resp = requests.post(url, headers=HEADERS, json=payload) if resp.status_code == 200: results = resp.json().get("results", []) if results: return results[0]['id'] return None def create_log_entry(): db_id = find_tasks_db() if not db_id: print("❌ Tasks DB not found.") return # Content for 16.02. content = """# Tages-Log: 16.02.2026 (Nachtrag) ## Zusammenfassung Durchbruch bei der technischen Integration zwischen SuperOffice CRM und Company Explorer. Der bidirektionale Datenaustausch steht. ## Erreichte Meilensteine ### 1. SuperOffice Integration (Deep Dive) - **Status:** ✅ **POC Erfolgreich.** - **Token-Management:** Automatische Refresh-Logik implementiert (kein manuelles Login mehr nötig). - **Write-Back:** Erfolgreiches Update von Firmen-Daten (Adresse, VAT, URL) in SuperOffice. - **Hürden genommen:** - **Pflichtfelder:** Fehler mit `Number2` (unbekanntes Pflichtfeld) identifiziert und umgangen. - **Listen-Objekte:** Korrekte Syntax für das Update von Dropdowns (Branche) gefunden (`Select` vs `Id`). ### 2. Company Explorer Connector - **Status:** ✅ **Client fertig.** - **Workflow:** Skript `company_explorer_connector.py` steuert jetzt den Upload von Firmen und das Abholen der Ergebnisse. ### 3. Regeln der Zusammenarbeit - **Core Directive V2.0:** Fokus auf "Ehrlicher Partner" und präzise technische Umsetzung ohne Floskeln definiert. ## Fazit Die "Rohre" zwischen den Systemen sind verlegt. Daten können fließen. """ blocks = [] for line in content.split('\n'): blocks.append({ "object": "block", "type": "paragraph", "paragraph": {"rich_text": [{"type": "text", "text": {"content": line}}]} }) url = "https://api.notion.com/v1/pages" payload = { "parent": {"database_id": db_id}, "properties": { "Name": {"title": [{"text": {"content": "Tages-Log 16.02.2026 (Nachtrag)"}}]}, "Status": {"status": {"name": "Done"}}, "Project": {"relation": [{"id": PROJECT_ID}]} }, "children": blocks[:90] } resp = requests.post(url, headers=HEADERS, json=payload) if resp.status_code == 200: print("✅ Nachtrag 16.02. erstellt.") else: # Fallback Name/Task check if "Name is not a property" in resp.text: payload["properties"].pop("Name") payload["properties"]["Task"] = {"title": [{"text": {"content": "Tages-Log 16.02.2026 (Nachtrag)"}}]} requests.post(url, headers=HEADERS, json=payload) print("✅ Nachtrag 16.02. erstellt (Fallback).") if __name__ == "__main__": create_log_entry()