import os import requests import json from dotenv import load_dotenv load_dotenv() NOTION_API_KEY = os.getenv("NOTION_API_KEY") NOTION_DB_ID = "2ec88f4285448014ab38ea664b4c2b81" if not NOTION_API_KEY: print("Error: NOTION_API_KEY not found.") exit(1) headers = { "Authorization": f"Bearer {NOTION_API_KEY}", "Notion-Version": "2022-06-28", "Content-Type": "application/json" } # COMPLETE LIST OF UPDATES updates = { "Infrastructure - Transport": { # Airports, Stations "Pains": "Sicherheitsbereiche erfordern personalintensives Screening von externen Reinigungskräften. Verschmutzte Böden (Winter/Salz) erhöhen das Rutschrisiko für Passagiere und Klagerisiken.", "Gains": "Autonome Reinigung innerhalb der Sicherheitszonen ohne externe Personalwechsel. Permanente Trocknung von Nässe (Schneematsch) in Eingangsbereichen." }, "Leisure - Indoor Active": { # Bowling, Cinema, Gym "Pains": "Personal ist rar und teuer, Gäste erwarten aber Service am Platz. Reinigung im laufenden Betrieb stört den Erlebnischarakter.", "Gains": "Service-Roboter als Event-Faktor und Entlastung: Getränke kommen zum Gast, Personal bleibt an der Bar/Theke. Konstante Sauberkeit auch bei hoher Frequenz." }, "Leisure - Outdoor Park": { # Zoos, Theme Parks "Pains": "Enorme Flächenleistung (Wege) erfordert viele Arbeitskräfte für die Grobschmutzbeseitigung (Laub, Müll). Sichtbare Reinigungstrupps stören die Immersion der Gäste.", "Gains": "Autonome Großflächenreinigung (Kehren) in den frühen Morgenstunden vor Parköffnung. Erhalt der 'heilen Welt' (Immersion) für Besucher." }, "Leisure - Wet & Spa": { # Pools, Thermen "Pains": "Hohes Unfallrisiko durch Nässe auf Fliesen (Rutschgefahr). Hoher Aufwand für permanente Desinfektion und Trocknung im laufenden Betrieb bindet Aufsichtspersonal.", "Gains": "Permanente Trocknung und Desinfektion kritischer Barfußbereiche. Reduktion der Rutschgefahr und Haftungsrisiken. Entlastung der Bademeister (Fokus auf Aufsicht)." }, "Retail - Shopping Center": { # Malls "Pains": "Food-Court ist der Schmutz-Hotspot: Verschüttete Getränke und Essensreste wirken unhygienisch und binden Personal dauerhaft. Dreckige Böden senken die Verweildauer.", "Gains": "Sofortige Beseitigung von Malheuren im Food-Court. Steigerung der Aufenthaltsqualität und Verweildauer der Kunden durch sichtbare Sauberkeit." }, "Retail - Non-Food": { # DIY, Furniture "Pains": "Riesige Gangflächen verstauben schnell, Personal ist knapp und soll beraten, nicht kehren. Verschmutzte Böden wirken im Premium-Segment (Möbel) wertmindernd.", "Gains": "Staubfreie Umgebung für angenehmes Einkaufsklima. Roboter reinigen autonom große Flächen, während Mitarbeiter für Kundenberatung verfügbar sind." }, "Infrastructure - Public": { # Fairs, Schools "Pains": "Extrem kurze Turnaround-Zeiten zwischen Messetagen oder Events. Hohe Nachtzuschläge für die Endreinigung der Hallengänge oder Klassenzimmer.", "Gains": "Automatisierte Nachtreinigung der Gänge/Flure stellt die Optik für den nächsten Morgen sicher. Kalkulierbare Kosten ohne Nachtzuschlag." }, "Hospitality - Gastronomy": { # Restaurants "Pains": "Servicepersonal verbringt Zeit auf Laufwegen statt am Gast ('Teller-Taxi'). Personalmangel führt zu langen Wartezeiten und Umsatzverlust.", "Gains": "Servicekräfte werden von Laufwegen befreit und haben Zeit für aktive Beratung und Verkauf (Upselling). Steigerung der Tischumschlagshäufigkeit." } } def update_vertical(vertical_name, new_data): url = f"https://api.notion.com/v1/databases/{NOTION_DB_ID}/query" payload = { "filter": { "property": "Vertical", "title": { "contains": vertical_name } } } resp = requests.post(url, headers=headers, json=payload) if resp.status_code != 200: return results = resp.json().get("results", []) if not results: print(f"Skipping {vertical_name} (Not found)") return page_id = results[0]["id"] update_url = f"https://api.notion.com/v1/pages/{page_id}" update_payload = { "properties": { "Pains": {"rich_text": [{"text": {"content": new_data["Pains"]}}]}, "Gains": {"rich_text": [{"text": {"content": new_data["Gains"]}}]} } } requests.patch(update_url, headers=headers, json=update_payload) print(f"✅ Updated {vertical_name}") print("Starting FULL Notion Update...") for v_name, data in updates.items(): update_vertical(v_name, data) print("Done.")