- 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.
100 lines
4.7 KiB
Markdown
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.
|