Files
swyxweb/.vscode/launch.json
T
SvenandClaude Opus 5 01594a1f3d Adressdaten-Bereich, Mock hinter einem Profil, Webhook
Drei Stränge, die sich über dieselben Dateien ziehen (HomePage, index.css,
README, application.properties) und deshalb nicht getrennt committet werden
können, ohne einen nicht übersetzbaren Zwischenstand zu hinterlassen:

Adressdaten: Der Bereich zeigt den gesamten Bestand des globalen Telefon-
buchs - zuerst aus dem Adress-Cache der App (Protokoll 8), sonst über das
Kommando "addresses" und ersatzweise aus rund 110 Einzelabfragen hinter
einem Wartedialog. Der Mock gibt denselben Bestand heraus und lässt sich
über /api/mock/address-cache leeren, um die Rückfallebene zu prüfen.

Mock hinter dem Profil "mock": Seine Bohnen (/ws und /api/mock/**) hängen
jetzt an @Profile, sind ohne das Profil also nicht vorhanden. Damit kann
der Mock nicht versehentlich in einer Produktivumgebung mitlaufen; das
Container-Image setzt das Profil nicht. Je ein Test hält beide Richtungen
fest.

Webhook: POST /api/webhook nimmt beliebiges JSON eines fremden Systems an
und reicht es über Server-Sent Events an die offenen Browser weiter, wo es
der neue Bereich "Webhook" unverändert anzeigt. Der WebSocket kam dafür
nicht in Frage - er gehört der SwyxTray-App. Das Backend hält die letzten
50 Nachrichten vor und liefert sie beim Wiederverbinden anhand der
Last-Event-ID nach; ein Heartbeat und X-Accel-Buffering: no halten die
Verbindung durch Reverse Proxys hindurch offen. Ein Token (app.webhook.token)
ist vorgesehen, aber nicht voreingestellt.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-24 15:11:55 +02:00

87 lines
2.7 KiB
JSON
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{
// Gesamtsystem starten: im Debug-Panel "SwyxWeb starten (Backend + Frontend)" wählen.
"version": "0.2.0",
"configurations": [
{
"type": "java",
"name": "Backend (Spring Boot)",
"request": "launch",
"mainClass": "de.appcreation.swyxweb.BackendApplication",
"projectName": "backend",
"cwd": "${workspaceFolder}/backend",
"console": "internalConsole"
},
{
// Wie oben, aber der eingebaute SwyxTray-Mock wird über das Profil "mock"
// eingeschaltet (ohne das Profil gibt es ihn nicht) und /api/config zeigt
// auf ihn statt auf 192.168.180.135:17654 so lässt sich die Startseite
// ohne echte Telefonanlage ausprobieren (eingehenden Anruf auslösen:
// siehe README).
"type": "java",
"name": "Backend (lokaler Test gegen SwyxTray-Mock)",
"request": "launch",
"mainClass": "de.appcreation.swyxweb.BackendApplication",
"projectName": "backend",
"cwd": "${workspaceFolder}/backend",
"console": "internalConsole",
"args": [
"--spring.profiles.active=mock",
"--app.websocket.host=localhost",
"--app.websocket.port=8080"
]
},
{
"type": "node-terminal",
"name": "Frontend (Vite + Chrome)",
"request": "launch",
"command": "npm run dev",
"cwd": "${workspaceFolder}/frontend",
// Wartet auf die von Vite ausgegebene URL und öffnet dann Chrome mit Debugger.
// Bewusst ohne "Local:"-Präfix im Muster: im Terminal steht dazwischen ANSI-Farbcode.
"serverReadyAction": {
"pattern": "(https?://localhost:[0-9]+)",
"uriFormat": "%s",
"action": "debugWithChrome",
"webRoot": "${workspaceFolder}/frontend"
}
},
{
"type": "node-terminal",
"name": "Frontend (nur Vite-Dev-Server)",
"request": "launch",
"command": "npm run dev",
"cwd": "${workspaceFolder}/frontend"
},
{
"type": "chrome",
"name": "Browser an laufenden Dev-Server hängen",
"request": "launch",
"url": "http://localhost:5173",
"webRoot": "${workspaceFolder}/frontend"
}
],
"compounds": [
{
"name": "SwyxWeb starten (Backend + Frontend)",
"configurations": ["Backend (Spring Boot)", "Frontend (Vite + Chrome)"],
"stopAll": true,
"presentation": {
"group": "swyxweb",
"order": 1
}
},
{
"name": "SwyxWeb starten (lokaler Test gegen SwyxTray-Mock)",
"configurations": [
"Backend (lokaler Test gegen SwyxTray-Mock)",
"Frontend (Vite + Chrome)"
],
"stopAll": true,
"presentation": {
"group": "swyxweb",
"order": 2
}
}
]
}