synops/docs/concepts/adminpanelet.md
vegard 7eae02eeb5 Fullfør oppgave 7.5: Segmenttabell-migrasjon og SRT-pipeline
Oppretter transcription_segments-tabellen i PostgreSQL som master-kopi
for alle transkripsjoner. transcribe.rs er oppdatert fra verbose_json
til SRT-format med full parse → segment-innsetting pipeline.

Endringer:
- Migration 005: transcription_segments med GIN fulltekstsøk (norsk)
- transcribe.rs: SRT-parser, segment-innsetting, node-oppdatering
- Miljøvariabler: WHISPER_MODEL (default "medium"), WHISPER_INITIAL_PROMPT
- Docker-compose: nye env vars for maskinrommet-containeren
- Docs: oppdatert podcastfabrikken, arkitektur, primitiver, CLAUDE.md

Tabellen kjørt på server, maskinrommet restartet med nye env vars.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-17 18:19:00 +01:00

5.1 KiB

Adminpanelet — Serveradministrasjon

Oversikt

Sentralt administrasjonspanel for hele Synops-instansen. Tilgjengelig kun for server-admins (Vegard). Dekker alt som ikke er per-samling: AI-konfigurasjon, ressursstyring, systemvarsler og serverhelse.

Adminpanelet er en del av SvelteKit-frontenden, bak egen tilgangskontroll (admin-edge til server-noden eller Authentik-gruppe).

Moduler

1. AI Gateway-styring

Konfigurasjon av LiteLLM og modellruting. Ref: docs/infra/ai_gateway.md.

  • Modelloversikt: Liste over tilgjengelige modeller med status, kostnad per token, latens-snitt
  • API-nøkler: Legg til, rotér og deaktiver nøkler for OpenRouter, Anthropic, Google, xAI osv. Nøkler vises aldri i klartekst etter lagring
  • Ruting-regler: Hvilken modell brukes for hvilken jobbtype (transkripsjonsanalyse, oppsummering, tagging, diktat-cleanup osv.)
  • Fallback-kjeder: Primærmodell → fallback → siste utvei. Per jobbtype
  • Forbruksoversikt: Aggregert ressursforbruk per samling, per jobbtype, per tidsperiode. Dekker AI-tokens, Whisper-tid, TTS-tegn, CAS-lagring, båndbredde og LiveKit-tid. Ref: docs/features/ressursforbruk.md
  • Prompt Lab-tilgang: Snarvei til testing av prompts mot faktisk data. Ref: docs/features/prompt_lab.md

2. Ressursstyring

Kontroll over CPU, minne og prioritering av bakgrunnsjobber.

  • Jobbkø-oversikt: Aktive, ventende og feilede jobber. Filtrer på type, samling, status. Manuell retry/avbryt
  • Prioritetsregler: Konfigurer relativ prioritet mellom jobbtyper (f.eks. live transkripsjon > batch-transkripsjon > embedding-generering)
  • Ressursgrenser: Maks samtidige jobber per type, CPU/minne-grenser per worker-container
  • Ressurs-governor: Automatisk nedprioritering av tunge jobber (Whisper, embedding) under aktive LiveKit-sesjoner. Konfigurerbar terskel
  • Disk-status: CAS-lagring, PG-størrelse, mediefiler. Visuell oversikt med varsling ved terskelverdier (ref: pruning-logikk i docs/retninger/maskinrommet.md)

3. Systemvarsler og vedlikeholdsmodus

Varsle brukere om planlagt nedetid, oppdateringer eller hendelser. Kritisk for å unngå avbrudd midt i møter, podcast-opptak eller publisering.

Varslingsmekanisme

  • Sanntidsvarsel via STDB: Maskinrommet skriver en varslingsnode som frontend abonnerer på. Vises som banner/toast i alle aktive klienter umiddelbart
  • Varslingstyper:
    • info — generell melding (f.eks. "Ny funksjonalitet tilgjengelig")
    • warning — planlagt vedlikehold med nedtelling
    • critical — umiddelbar handling kreves
  • Nedtelling: Admin setter tidspunkt for vedlikehold. Frontend viser nedtelling: "Serveren restartes om 15 minutter"
  • Aktive sesjoner-sjekk: Før vedlikehold, vis oversikt over pågående aktivitet:
    • Aktive LiveKit-rom (møter, opptak)
    • Brukere med ulagrede endringer (collaboration-sesjoner)
    • Pågående jobbkø-jobber
  • Graceful shutdown-sekvens:
    1. Varsel sendes X minutter i forveien (konfigurerbart, default 15 min)
    2. Nye LiveKit-rom blokkeres etter varsling
    3. Påminnelse ved T-5 min og T-1 min
    4. Jobbkøen stopper å plukke nye jobber
    5. Vent til aktive jobber fullføres (med timeout)
    6. Restart

Varslingsnode

{
  "node_kind": "system_announcement",
  "title": "Planlagt vedlikehold",
  "content": "Serveren oppdateres kl. 22:00. Forventet nedetid: 10 minutter.",
  "metadata": {
    "announcement_type": "warning",
    "scheduled_at": "2026-03-17T22:00:00Z",
    "expires_at": "2026-03-17T22:30:00Z",
    "blocks_new_sessions": true
  }
}

Vises for alle med visibility: open. Forsvinner automatisk etter expires_at.

4. Serverhelse

Sanntidsoversikt over systemtilstand.

  • Tjeneste-status: PG, STDB, Caddy, Authentik, LiteLLM, Whisper, LiveKit — oppe/nede/degradert
  • Metrikker: CPU, minne, disk, nettverkstrafikk
  • PG-helse: Tilkoblingspool, aktive spørringer, replikerings-lag (fremtidig)
  • STDB-helse: Minnebruk, antall abonnenter, graf-størrelse
  • Logg-tilgang: Siste feil og advarsler fra alle tjenester, filtrerbart
  • Backup-status: Siste vellykkede backup per type, neste planlagte kjøring

5. Bruker- og tilgangsoversikt

  • Aktive brukere: Hvem er pålogget nå, siste aktivitet
  • Authentik-integrasjon: Snarvei til Authentik admin for brukerhåndtering
  • Samlingsoversikt: Alle samlinger med eier, traits, størrelse, aktivitetsnivå

Tilgang

Adminpanelet er ikke en trait — det er en plattformfunksjon som eksisterer utenfor samlings-modellen. Tilgang styres via:

  • Authentik-gruppe synops-admin
  • Eller admin-edge til en dedikert server-node

Vanlige brukere ser aldri adminpanelet. Ruten er skjult og tilgangskontrollert server-side.

Implementeringsstrategi

Adminpanelet bygges inkrementelt. Første prioritet er det som trengs for daglig drift:

  1. Systemvarsler — kritisk for å unngå avbrudd
  2. Jobbkø-oversikt — nødvendig for feilsøking
  3. AI Gateway-konfigurasjon — nødvendig når AI-features aktiveres
  4. Serverhelse — nyttig men ikke blokkerende
  5. Ressursstyring — optimalisering, kan vente