# 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://: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.