import json import time import os import sys # Ensure we can import from lead-engine sys.path.append(os.path.join(os.path.dirname(__file__), 'lead-engine')) try: from trading_twins_ingest import process_leads except ImportError: print("Warning: Could not import trading_twins_ingest from lead-engine. Email ingestion disabled.") process_leads = None from company_explorer_connector import handle_company_workflow def run_trading_twins_process(target_company_name: str): """ Startet den Trading Twins Prozess für ein Zielunternehmen. Ruft den Company Explorer Workflow auf, um das Unternehmen zu finden, zu erstellen oder anzureichern. """ print(f"\n{'='*50}") print(f"Starte Trading Twins Analyse für: {target_company_name}") print(f"{'='*50}\n") # Aufruf des Company Explorer Workflows # Diese Funktion prüft, ob die Firma existiert. # Wenn nicht, erstellt sie die Firma und startet die Anreicherung. # Sie gibt am Ende die Daten aus dem Company Explorer zurück. company_data_result = handle_company_workflow(target_company_name) # Verarbeitung der Rückgabe (für den POC genügt eine Ausgabe) print("\n--- Ergebnis vom Company Explorer Connector (für Trading Twins) ---") status = company_data_result.get("status") data = company_data_result.get("data") if status == "error": print(f"Ein Fehler ist aufgetreten: {company_data_result.get('message')}") elif status == "found": print(f"Unternehmen gefunden. ID: {data.get('id')}, Name: {data.get('name')}") print(json.dumps(data, indent=2, ensure_ascii=False)) elif status == "created_and_enriched": print(f"Unternehmen erstellt und Enrichment angestoßen. ID: {data.get('id')}, Name: {data.get('name')}") print("Hinweis: Enrichment-Prozesse laufen im Hintergrund und können einige Zeit dauern, bis alle Daten verfügbar sind.") print(json.dumps(data, indent=2, ensure_ascii=False)) elif status == "created_discovery_timeout": print(f"Unternehmen erstellt, aber Discovery konnte keine Website finden (ID: {data.get('id')}, Name: {data.get('name')}).") print("Der Analyse-Prozess wurde daher nicht gestartet.") print(json.dumps(data, indent=2, ensure_ascii=False)) else: print("Ein unerwarteter Status ist aufgetreten.") print(json.dumps(company_data_result, indent=2, ensure_ascii=False)) print(f"\n{'='*50}") print(f"Trading Twins Analyse für {target_company_name} abgeschlossen.") print(f"{'='*50}\n") def run_email_ingest(): """Starts the automated email ingestion process for Tradingtwins leads.""" if process_leads: print("\nStarting automated email ingestion via Microsoft Graph...") process_leads() print("Email ingestion completed.") else: print("Error: Email ingestion module not available.") if __name__ == "__main__": # Simulieren der Umgebungsvariablen für diesen Testlauf, falls nicht gesetzt if "COMPANY_EXPLORER_API_USER" not in os.environ: os.environ["COMPANY_EXPLORER_API_USER"] = "admin" if "COMPANY_EXPLORER_API_PASSWORD" not in os.environ: os.environ["COMPANY_EXPLORER_API_PASSWORD"] = "gemini" print("Trading Twins Tool - Main Menu") print("1. Process specific company name") print("2. Ingest leads from Email (info@robo-planet.de)") print("3. Run demo sequence (Robo-Planet, Erding, etc.)") choice = input("\nSelect option (1-3): ").strip() if choice == "1": name = input("Enter company name: ").strip() if name: run_trading_twins_process(name) elif choice == "2": run_email_ingest() elif choice == "3": # Testfall 1: Ein Unternehmen, das wahrscheinlich bereits existiert run_trading_twins_process("Robo-Planet GmbH") time.sleep(2) # Testfall 1b: Ein bekanntes, real existierendes Unternehmen run_trading_twins_process("Klinikum Landkreis Erding") time.sleep(2) # Testfall 2: Ein neues, eindeutiges Unternehmen new_unique_company_name = f"Trading Twins New Target {int(time.time())}" run_trading_twins_process(new_unique_company_name) else: print("Invalid choice.")