Tre fikser funnet under validering:
1. SIKKERHET: Admin-endepunkter manglet autorisasjonssjekk.
Alle /admin/*-endepunkter brukte kun AuthUser (autentisert),
ikke admin-rolle. Ny AdminUser-extractor sjekker owner/admin-edge
til samling — returnerer 403 Forbidden for ikke-admins.
Berører: maintenance, jobs, resources, health, ai, usage.
2. Race condition i toggle_effect: les-modifiser-skriv uten transaksjon
på active_effects JSON. Erstattet med atomisk PG jsonb-operasjon.
3. Manglende updated_by i set_gain, set_mute, set_mixer_role, toggle_effect.
Nå spores hvem som endret mixer-tilstanden.
Fase M2 (oppgave 22.2): Portvokteren sender nå full raddata i
WebSocket-events (ikke bare ID), slik at frontend kan oppdatere
stores direkte uten ekstra API-kall.
Endringer:
- ws.rs: Berik node/edge/access-events med full PG-data etter NOTIFY
- ws.rs: Ny mixer_channel_changed event-type + initial_sync inkluderer mixer
- ws.rs: Resync ved lag (broadcast overflow)
- mixer.rs: Nye HTTP-endepunkter som erstatter STDB-reducers
(create_mixer_channel, set_gain, set_mute, toggle_effect, set_mixer_role)
- 019_mixer_channels.sql: PG-tabell + NOTIFY-trigger for mixer-tilstand