
import requests
import json

# --- Configuration ---
try:
    with open("notion_token.txt", "r") as f:
        NOTION_TOKEN = f.read().strip()
except FileNotFoundError:
    print("Error: notion_token.txt not found.")
    exit(1)

NOTION_VERSION = "2022-06-28"
NOTION_API_BASE_URL = "https://api.notion.com/v1"
HEADERS = {
    "Authorization": f"Bearer {NOTION_TOKEN}",
    "Notion-Version": NOTION_VERSION,
    "Content-Type": "application/json",
}

# DB: Sector & Persona Master
DB_ID = "2e288f42-8544-8113-b878-ec99c8a02a6b"

# --- Data ---
archetypes = [
    {
        "name": "Wirtschaftlicher Entscheider",
        "pains": [
            "Steigende operative Personalkosten und Fachkräftemangel gefährden die Profitabilität.",
            "Unklare Amortisation (ROI) und Risiko von Fehlinvestitionen bei neuen Technologien.",
            "Intransparente Folgekosten (TCO) und schwierige Budgetplanung über die Lebensdauer."
        ],
        "gains": [
            "Nachweisbare Senkung der operativen Kosten (10-25%) und schnelle Amortisation.",
            "Sicherung der Wettbewerbsfähigkeit durch effizientere Kostenstrukturen.",
            "Volle Transparenz und Planbarkeit durch klare Service-Modelle (SLAs)."
        ]
    },
    {
        "name": "Operativer Entscheider",
        "pains": [
            "Personelle Unterbesetzung führt zu Überstunden, Stress und Qualitätsmängeln.",
            "Wiederkehrende Routineaufgaben binden wertvolle Fachkräfte-Ressourcen.",
            "Schwierigkeit, gleichbleibend hohe Standards (Hygiene/Service) 24/7 zu garantieren."
        ],
        "gains": [
            "Spürbare Entlastung des Teams von Routineaufgaben (20-40%).",
            "Garantierte, gleichbleibend hohe Ausführungsqualität unabhängig von der Tagesform.",
            "Stabilisierung der operativen Abläufe und Kompensation von Personalausfällen."
        ]
    },
    {
        "name": "Infrastruktur-Verantwortlicher",
        "pains": [
            "Sorge vor komplexer Integration in bestehende IT- und Gebäudeinfrastruktur (WLAN, Türen, Aufzüge).",
            "Risiko von hohen Ausfallzeiten und aufwändiger Fehlerbehebung ohne internes Spezialwissen.",
            "Unklare Wartungsaufwände und Angst vor 'Insel-Lösungen' ohne Schnittstellen."
        ],
        "gains": [
            "Reibungslose, fachgerechte Integration durch Experten-Support (Plug & Play).",
            "Maximale Betriebssicherheit durch proaktives Monitoring und schnelle Reaktionszeiten.",
            "Zentrales Management und volle Transparenz über Systemstatus und Wartungsbedarf."
        ]
    },
    {
        "name": "Innovations-Treiber",
        "pains": [
            "Verlust der Attraktivität als moderner Arbeitgeber oder Dienstleister (Veraltetes Image).",
            "Fehlende 'Wow-Effekte' in der Kundeninteraktion und mangelnde Differenzierung vom Wettbewerb.",
            "Verpasste Chancen durch fehlende Datengrundlage für digitale Optimierungen."
        ],
        "gains": [
            "Positionierung als Innovationsführer und Steigerung der Markenattraktivität.",
            "Schaffung einzigartiger Kundenerlebnisse durch sichtbare High-Tech-Lösungen.",
            "Gewinnung wertvoller Daten zur kontinuierlichen Prozessoptimierung und Digitalisierung."
        ]
    }
]

# --- Helper Functions ---

def format_rich_text(text):
    return {"rich_text": [{"type": "text", "text": {"content": text}}]}

def format_title(text):
    return {"title": [{"type": "text", "text": {"content": text}}]}

def find_page(title):
    url = f"{NOTION_API_BASE_URL}/databases/{DB_ID}/query"
    payload = {
        "filter": {
            "property": "Name",
            "title": {"equals": title}
        }
    }
    resp = requests.post(url, headers=HEADERS, json=payload)
    resp.raise_for_status()
    results = resp.json().get("results")
    return results[0] if results else None

def create_page(properties):
    url = f"{NOTION_API_BASE_URL}/pages"
    payload = {
        "parent": {"database_id": DB_ID},
        "properties": properties
    }
    resp = requests.post(url, headers=HEADERS, json=payload)
    resp.raise_for_status()
    print("Created.")

def update_page(page_id, properties):
    url = f"{NOTION_API_BASE_URL}/pages/{page_id}"
    payload = {"properties": properties}
    resp = requests.patch(url, headers=HEADERS, json=payload)
    resp.raise_for_status()
    print("Updated.")

# --- Main Sync Loop ---

def main():
    print(f"Syncing {len(archetypes)} Personas to Notion DB {DB_ID}...")
    
    for p in archetypes:
        print(f"Processing '{p['name']}'...")
        
        # Format Pains/Gains as lists with bullets for Notion Text field
        pains_text = "\n".join([f"- {item}" for item in p["pains"]])
        gains_text = "\n".join([f"- {item}" for item in p["gains"]])
        
        properties = {
            "Name": format_title(p["name"]),
            "Pains": format_rich_text(pains_text),
            "Gains": format_rich_text(gains_text),
            # Optional: Add a tag to distinguish them from Sectors if needed?
            # Currently just relying on Name uniqueness.
        }
        
        existing_page = find_page(p["name"])
        
        if existing_page:
            print(f"  -> Found existing page {existing_page['id']}. Updating...")
            update_page(existing_page["id"], properties)
        else:
            print("  -> Creating new page...")
            create_page(properties)

    print("Sync complete.")

if __name__ == "__main__":
    main()
