MongoDB-Ablage für Adressen, Anrufe und Jobs; Webhook-URLs je Datenart
Adress-, Anruf- und Jobdaten landen dauerhaft in der MongoDB (ArchiveService, best-effort auf eigenem Thread): Die Startseite meldet Adress-Cache und Anruf-Ereignisse an POST /api/addresses bzw. /api/calls, der Webhook legt seine Nutzlasten selbst ab. Adressen tragen eine generierte Kennung, die Rufnummer erkennt per Upsert die Dublette. Der Webhook bekommt je Datenart eine eigene URL – /api/webhook/kunden, /api/webhook/kuriere, /api/webhook/jobs –, die URL bestimmt die Ablage, ein Kennzeichen in der Nutzlast ist nicht mehr nötig. Die Herkunft steht als channel am Ereignis. Der generische POST /api/webhook bleibt. Die Controller-Tests ersetzen den ArchiveService (MockitoBean) und laufen damit ohne MongoDB. Markenrot laut Styleguide in beiden Farbmodi. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
1 parent
1598852785
commit
97c3778180
21 files changed
+1011
-26
No files matched your search
@@ -0,0 +1,22 @@
|
||||
import type { CallEvent } from './swyx/protocol'
|
||||
|
||||
/**
|
||||
* Meldet Anruf-Ereignisse an das Backend, das sie in der MongoDB ablegt.
|
||||
*
|
||||
* Die Ereignisse entstehen nur hier im Browser (aus dem Vergleich zweier
|
||||
* SwyxTray-Snapshots); das Backend sieht die WebSocket-Verbindung nicht.
|
||||
* Fire-and-forget: Ist das Backend nicht erreichbar, läuft die Anzeige
|
||||
* unverändert weiter – die Speicherung ist Beiwerk, nicht Voraussetzung.
|
||||
*/
|
||||
export function reportCallEvents(events: CallEvent[]): void {
|
||||
if (events.length === 0) return
|
||||
void fetch('/api/calls', {
|
||||
method: 'POST',
|
||||
headers: { 'Content-Type': 'application/json' },
|
||||
body: JSON.stringify(events),
|
||||
// Auch beim Schließen des Tabs noch absetzen, z. B. das "ended" beim Auflegen.
|
||||
keepalive: true,
|
||||
}).catch((e: unknown) => {
|
||||
console.warn('Anrufdaten nicht an das Backend gemeldet:', e)
|
||||
})
|
||||
}
|
||||
Reference in new issue
Block a user