Mustafa.
Zurück zu allen Projekten

Urla Shoes — Routensicherheit mit Google Maps, OpenWeather und Salesforce Einstein

Eine Live-Demo, die drei externe Integrationen kombiniert, um eine Route zu planen, das Wetter an fünf Wegpunkten zu holen und einen Einstein Prompt Template (GPT-4o mini) entscheiden zu lassen, ob die Reise sicher ist.

Jahr
2024
Rolle
Salesforce Developer
Technologien
Apex (Queueable)Lightning Web ComponentsVisualforce (bridge)Salesforce EinsteinPrompt TemplatesConnectApi.EinsteinLLMNamed CredentialsRemote Site Settings

Eckdaten

  • Drei externe APIs in einem einzigen User-Flow komponiert
  • Wetterabfrage für fünf Wegpunkte parallel via Promise.all
  • GPT-4o-mini-Reasoning via Einstein Prompt Template — Output rot/gelb/grün eingefärbt per Schlagwort-Klassifizierer
  • postMessage-Brücke zwischen LWC und Visualforce, um Lightning Web Security für Google Maps zu umgehen
  • Queueable Apex mit voller HttpCalloutMock-Testabdeckung für das sekundäre Nationalize-Feature

Das Problem

Vertriebsmitarbeiter und Außendiensttechniker in logistiklastigen Branchen planen Routen tagesaktuell. Wetter und Bedingungen schwanken entlang der Strecke, nicht nur am Ziel — ein simpler 'in Frankfurt scheint die Sonne'-Check versagt, wenn es auf halbem Weg hagelt. Die Komposition aus Routengeometrie, Wegpunkt-Wetter und einer Bewertungs-Empfehlung zu einer Salesforce-nativen Erfahrung ist genau die Mehrsystem-Komposition, an der naive Trigger-und-Callout-Muster scheitern.

Architektur

Die routeWeather-LWC ist der Orchestrator. Sie hostet eine Visualforce-Seite im iframe (der einzige Weg, Google Maps unter Lightning Web Security zu laden) und kommuniziert via postMessage: Die LWC sendet DRAW_ROUTE, die Seite antwortet mit ROUTE_DONE plus Zielkoordinaten. Die LWC berechnet dann fünf Wegpunkte (Start, 25 %, Mitte, 75 %, Ziel) und feuert fünf parallele Fetches gegen OpenWeatherMap via Promise.all. Sobald das Wetter ankommt, POSTet die LWC ein schlankes Payload mit sechs Feldern pro Wegpunkt an den Apex-Service RouteWeatherAnalysisService, der die Daten als Text formatiert und ConnectApi.EinsteinLLM.generateMessagesForPromptTemplate('RouteWeatherAnalysis', input) aufruft. Die GPT-4o-mini-Antwort wird in einer farbcodierten Karte basierend auf einem Schlagwort-Klassifizierer gerendert (storm / ice / hazard → rot; caution / careful → gelb; sonst grün).

Der Ansatz

Drei Lektionen prägten das Design. Erstens: Die LWC behält die Hoheit über den User-Flow, sodass Wetterkarten erscheinen, bevor das KI-Urteil eintrifft — Graceful Degradation, falls Einstein in Timeout läuft. Zweitens: Payloads minimiert — nur sechs Felder pro Wegpunkt überqueren die Apex-Grenze, Heap- und Serialisierungskosten bleiben niedrig. Drittens: Das sekundäre Nationalize.io-Feature beim Contact-Insert ist bewusst in einen Queueable mit Database.AllowsCallouts ausgelagert — bulk-safe, End-to-End gemockt (Erfolg, leere Antwort, HTTP 500, fehlender FirstName, Zehn-Datensatz-Bulk-Insert, Parser-Unit-Test) und gegenüber einem synchronen Trigger-Callout gewählt, weil die Demo explizit als Referenzimplementierung gedacht ist.

Das Ergebnis

Ein einziger Screen, auf dem ein Mitarbeiter ein Ziel eingibt und drei Entscheidungs-Layer bekommt: die Route, das Wetter entlang der Route und ein KI-Sicherheitsurteil — alles in Salesforce, alles mit plattformnativer KI ohne den Trust Layer zu verlassen. Dasselbe Kompositions-Muster überträgt sich direkt auf Fleet-Management-, Field-Service- und Delivery-Scheduling-Apps, von denen der DACH-Markt voll ist.

Externe Integrationen