- Organisiert eine Vielzahl von Skripten aus dem Root-Verzeichnis in thematische Unterordner, um die Übersichtlichkeit zu verbessern und die Migration vorzubereiten. - Verschiebt SuperOffice-bezogene Test- und Hilfsskripte in . - Verschiebt Notion-bezogene Synchronisations- und Import-Skripte in . - Archiviert eindeutig veraltete und ungenutzte Skripte in . - Die zentralen Helfer und bleiben im Root, da sie von mehreren Tools als Abhängigkeit genutzt werden.
67 lines
2.2 KiB
Python
67 lines
2.2 KiB
Python
import os
|
|
import json
|
|
import sys
|
|
from dotenv import load_dotenv
|
|
|
|
# Path gymnastics
|
|
sys.path.append(os.path.dirname(os.path.abspath(__file__)))
|
|
sys.path.append(os.path.join(os.path.dirname(os.path.abspath(__file__)), "connector-superoffice"))
|
|
|
|
from company_explorer_connector import get_company_details
|
|
from superoffice_client import SuperOfficeClient
|
|
|
|
# Load ENV
|
|
load_dotenv(dotenv_path="/home/node/clawd/.env", override=True)
|
|
|
|
def round_trip_test(ce_id):
|
|
print(f"--- Starting Round-Trip POC: CE-ID {ce_id} -> SuperOffice ---")
|
|
|
|
# 1. Get enriched data from Company Explorer
|
|
ce_data = get_company_details(ce_id)
|
|
if not ce_data or "error" in ce_data:
|
|
print(f"❌ ERROR: Could not fetch data from Company Explorer for ID {ce_id}")
|
|
return
|
|
|
|
print(f"✅ Success: Received data from CE for '{ce_data.get('name')}'")
|
|
|
|
# 2. Extract CRM ID
|
|
so_id = ce_data.get("crm_id")
|
|
if not so_id:
|
|
print("❌ ERROR: No crm_id found in Company Explorer for this record. Cannot sync back.")
|
|
return
|
|
|
|
print(f"Targeting SuperOffice Contact ID: {so_id}")
|
|
|
|
# 3. Prepare SuperOffice Update Payload
|
|
# Based on your request: Address, Website, Email, Phone
|
|
# Note: We need to match the SO schema (Street Address vs Postal Address)
|
|
so_payload = {
|
|
"Name": ce_data.get("name"),
|
|
"UrlAddress": ce_data.get("website"),
|
|
"Address": {
|
|
"Street": {
|
|
"Address1": ce_data.get("address", ""), # Simplified mapping for POC
|
|
"City": ce_data.get("city", ""),
|
|
"Zipcode": ce_data.get("zip", "")
|
|
}
|
|
}
|
|
}
|
|
|
|
# 4. Perform Update via SuperOfficeClient
|
|
client = SuperOfficeClient()
|
|
print(f"Updating SuperOffice Contact {so_id}...")
|
|
|
|
# Using the generic PUT method from our client
|
|
endpoint = f"Contact/{so_id}"
|
|
result = client._put(endpoint, so_payload)
|
|
|
|
if result:
|
|
print(f"🚀 SUCCESS! Round-trip complete. SuperOffice Contact {so_id} updated.")
|
|
print(f"Updated Data: {ce_data.get('website')} | {ce_data.get('city')}")
|
|
else:
|
|
print("❌ ERROR: Failed to update SuperOffice.")
|
|
|
|
if __name__ == "__main__":
|
|
# Test with the ID you manually enriched
|
|
round_trip_test(53)
|