Adressen tragen die Kennungen ihrer Jobs (job_ids) – das Anruf-Popup zeigt
je Kennung einen Knopf, der den Job über den neuen Endpunkt
GET /api/jobs/{id} aus der Sammlung holt und seine Sprungadresse (url) in
einem neuen Tab öffnet; Fehler (unbekannte Kennung, Ablage nicht
erreichbar) erscheinen im Popup. Der Knopf "Auftrag öffnen" (customer.url)
ist entfallen.
Das Popup öffnet jetzt bei jedem eingehenden Anruf – mit Kundendaten, wenn
die Rufnummer einem Kunden gehört, sonst nur mit der Rufnummer – und trägt
links unten einen grünen Knopf "Anruf annehmen", solange es klingelt. Die
Anrufkarte über den Tabs (IncomingCallCard) ist damit überflüssig und
samt Styles ausgebaut; ein Ablehnen-Knopf fehlt dem Popup noch.
Die Debug-Starts beenden vorab einen Altlauf des Backends: eine Task macht
Port 8080 frei (nur der Lauscher – lsof ohne -sTCP:LISTEN träfe auch den
Vite-Proxy) und hängt als preLaunchTask an beiden Backend-Konfigurationen;
tasks.json wandert dafür mit ins Repo.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
91 lines
2.9 KiB
JSON
91 lines
2.9 KiB
JSON
{
|
||
// 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",
|
||
// Ein noch laufendes Backend würde Port 8080 belegen und weiter den
|
||
// alten Stand ausliefern – vor dem Start wird es deshalb beendet.
|
||
"preLaunchTask": "Backend-Port 8080 freimachen"
|
||
},
|
||
{
|
||
// 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 127.0.0.1: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"
|
||
],
|
||
"preLaunchTask": "Backend-Port 8080 freimachen"
|
||
},
|
||
{
|
||
"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
|
||
}
|
||
}
|
||
]
|
||
}
|