bmc_hub/fremtidige planer/kuando-busylight-integration.md
Christian 81b8229db1 feat: Add Kuando Busylight integration and enhance case creation UI
- Introduced Kuando Busylight integration for centralized presence management.
- Updated case creation UI to support new modules and improved type handling.
- Added personal Buzzwords visibility preferences for users.
- Implemented file upload functionality directly from the case topbar.
- Enhanced validation and user experience in case creation process.
- Created migration for user-specific module preferences.
- Updated tests to cover new features and ensure functionality.
2026-09-23 00:23:30 +02:00

100 lines
4.7 KiB
Markdown

# Kuando Busylight og central Presence i BMC Hub
**Status:** Planlagt
## Formål
Kuando Busylight bliver et output fra BMC Hubs fælles Presence Engine. Hubben er eneste status-master; profilprik, medarbejdervisning, Mission Control og Busylight bruger den samme resolved status og farve.
Hubben kalder KuandoHUB direkte på brugerens registrerede interne IP. Der bruges ingen BMC Device Agent.
## Arkitektur og afgrænsning
```text
Hændelse eller Hub-session
↓
Presence Engine
┌──────┼───────────────┐
↓ ↓ ↓
Profil Mission Control Kuando-klient i Hubben
↓
http://<intern-ip>:8989/
↓
KuandoHUB
↓
USB Busylight
```
- Hubben må kun kontakte IPv4-adresser i `172.16.0.0/12`.
- KuandoHUB bruger altid HTTP, port `8989` og den faste `/`-endpoint.
- Der understøttes én Busylight/KUandoHUB-konfiguration pr. bruger i første version.
- Brugeren indtaster selv sin interne IP i Profil → Busylight. IP-adressen er en begrænset destinationsadresse, ikke en login-mekanisme.
- Brugeren kan være `Available`, selv om KuandoHUB ikke kan nås. Enhedsstatus og presence er separate tilstande.
## Presence Engine
Det globale, administratorstyrede statuskatalog starter med:
| Status | Farve |
| --- | --- |
| Available | Grøn |
| Working | Gul |
| Busy | Rød |
| Do not disturb | Lilla |
| Lunch | Cyan |
| Away | Orange |
| Not at work | Pink |
| Offline | Grå |
- Normalstatus er `Available` ved aktiv Hub-session og `Offline`, når sidste aktive session lukker.
- En manuel status varer, indtil brugeren selv ændrer den.
- Prioritet opløses centralt: critical → phone → meeting → do-not-disturb → working → available.
- Når timer, opkald eller en notifikation ophører, genberegnes den gældende status. Der lagres ikke en løs farve, der blot skal genskabes.
- Presence udsendes gennem en dedikeret autentificeret WebSocket med bruger, resolved status, farve, kilde og tidspunkt. Eksisterende WebSocket-kontrakter for telefoni, Mission Control og bundbaren bevares.
## Profil og enhed
Profil → Busylight indeholder aktivering, intern IP, online-/fejlstatus, seneste kommando og testknapper for grøn, gul, rød, blå, lilla og sluk.
Kuando-klienten validerer destinationsadressen, følger ikke redirects og bruger korte connect-/response-timeouts. Kommandoresultater og fejl gemmes. UI må kun angive, at KuandoHUB accepterede kommandoen; fysisk lysrespons bekræftes visuelt.
## Leveringsrækkefølge
### Fase 1
- Statuskatalog og central resolved presence.
- Profilprik, Profil → Busylight og direkte KuandoHUB-kald.
- Manuelle farvetests og sluk.
### Fase 2
- Timer-start/-stop kobles til Working/Available.
- Telefoni: ringning giver midlertidig notifikation, besvaret samtale giver Busy, og afslutning genskaber den beregnede status.
- Mission Control viser samme medarbejderstatus.
### Fase 3
- Separat notification-overlay med blink/pulse, varighed og valgfri lyd.
- Tilslut ny/tildelt/hastesag, direkte besked, indgående opkald samt Mission Controls drift-warning og drift-critical.
- Critical-alarm kan kvitteres i Hubben og vender derefter tilbage til gældende presence.
- Profilen får lydvalg, volumen, ingen lyd under samtale/møde og quiet hours.
## Data og API'er
- Nye migrationer opretter statuskatalog, brugerpresence/overlejringer, Busylight-enhedsindstillinger, kommandohistorik og alarmkvitteringer.
- Autentificerede API'er dækker læs/ændr egen presence og Busylight-indstilling, hent/test egen enhed, administrér globale statuser og notifikationsregler samt kvittér critical-alarm.
- Kun administrator må ændre det globale statuskatalog. Brugeren kan kun læse og ændre sin egen enhed og status.
## Test og accept
- Enhedstest for prioritet, manuel overstyring, session-baseret online/offline og genberegning efter timer, opkald og notifikation.
- API- og autorisationstest for egne enheder, administratoradgang og afvisning af ugyldige, offentlige eller ikke-`172.16/12` IP-adresser.
- HTTP-test mod mock KuandoHUB for farver, sluk, timeout og fejl.
- WebSocket-test for realtime profil-/Mission Control-opdatering uden regression i eksisterende telefoni og bundbar.
- Manuel accept på internt net: visuel bekræftelse af testknapper, timer og opkald; utilgængelig KuandoHUB må kun gøre enheden fejlende.
## Forudsætninger
- Hub-serveren har netværksrute til brugernes `172.16.x.x`-adresser, og KuandoHUB lytter på port `8989`.
- Implementeringen ændrer ikke eksisterende API-adfærd uden for de nye presence- og Busylight-grænseflader.