# Datei: firebase_service.py import firebase_admin from firebase_admin import credentials from firebase_admin import firestore import os # --- INITIALISIERUNG --- # Lade den Pfad des Service Account Schlüssels aus Umgebungsvariablen (Beste Praxis) SERVICE_ACCOUNT_PATH = os.environ.get("FIREBASE_SA_KEY_PATH", "sky-ai-key.json") # Default-Name def initialize_firebase_db(): """Initialisiert die Firebase Admin SDK Verbindung und gibt den Firestore-Client zurück.""" if firebase_admin._apps: return firestore.client() try: # Lade die Anmeldedaten cred = credentials.Certificate(SERVICE_ACCOUNT_PATH) # Initialisiere die Firebase App firebase_admin.initialize_app(cred) print("INFO: Firebase Admin SDK erfolgreich initialisiert.") # Gebe den Firestore-Client zurück return firestore.client() except Exception as e: print(f"FEHLER: Firebase-Initialisierung fehlgeschlagen. Fehler: {e}") return None # Globale Variable, die den initialisierten Datenbank-Client hält FIRESTORE_DB = initialize_firebase_db() # --- KERNFUNKTION FÜR DATENSPEICHERUNG --- def track_and_attribute_revenue_to_db(transaction_data: dict) -> bool: """Speichert eine Transaktion in der Firestore-Datenbank (Kollektion: 'transactions').""" if not FIRESTORE_DB: print("FEHLER: Datenbank nicht verbunden.") return False try: # Die Transaktions-ID wird als Dokumenten-ID verwendet doc_ref = FIRESTORE_DB.collection('transactions').document(transaction_data['transaction_id']) doc_ref.set(transaction_data) print(f"INFO: Transaktion {transaction_data['transaction_id']} erfolgreich in Firebase gespeichert.") return True except Exception as e: print(f"FEHLER beim Speichern in Firebase: {e}") return False