Varsling: notification-noder i grafen, trigger ved edge-opprettelse/ nevnelse/oppgave. WebSocket toast + ulest-badge + valgfri epost. Universell input: én TipTap-komponent med kontekst-drevne moduser (chat/forum/editor/code). Markup-bytte (WYSIWYG/markdown/LaTeX). Draft-caching i localStorage + valgfri graf-synk for kryssenhets. Integrert medieinput og inline-handlinger (@mentions, [[lenker]]). Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
75 lines
2.1 KiB
Markdown
75 lines
2.1 KiB
Markdown
# Proposal: Varslingssystem
|
|
|
|
## Konsept
|
|
|
|
Når noe skjer som angår deg — ny samtale, ny melding, ny oppgave,
|
|
noen nevner deg — får du et varsel. Varsler er noder i grafen,
|
|
ikke en separat mekanisme.
|
|
|
|
## Varsling som noder
|
|
|
|
```
|
|
node_kind: 'notification'
|
|
metadata: {
|
|
type: "added_to_conversation",
|
|
actor_id: "vegard-uuid",
|
|
target_id: "redaksjonen-uuid",
|
|
seen: false
|
|
}
|
|
belongs_to → din person-node
|
|
```
|
|
|
|
Fordeler:
|
|
- Varsler er søkbare, filtrerbare, arkiverbare
|
|
- Samme PG NOTIFY → WebSocket-pipeline som alt annet
|
|
- Ingen ny infrastruktur
|
|
|
|
## Trigger-hendelser
|
|
|
|
| Hendelse | Varsel |
|
|
|----------|--------|
|
|
| Lagt til i samtale | "Vegard la deg til i Redaksjonen" |
|
|
| Nevnt i melding (@Trond) | "Vegard nevnte deg i Redaksjonen" |
|
|
| Ny melding i samtale (valgfritt) | "3 nye meldinger i Redaksjonen" |
|
|
| Tildelt oppgave | "Vegard tildelte deg: Fiks lyden" |
|
|
| Innsendt artikkel behandlet | "Artikkelen din ble godkjent" |
|
|
| Orkestrering fullført | "Transkribering ferdig" |
|
|
|
|
## Leveringskanaler
|
|
|
|
Samme varsel kan leveres via flere kanaler:
|
|
|
|
- **WebSocket → toast i appen** (alltid, sanntid)
|
|
- **Ulest-badge i Mine ting** (alltid)
|
|
- **Epost** (konfigurerbart per bruker i metadata.preferences)
|
|
- **Lyd-ping** (konfigurerbart)
|
|
|
|
Brukerens preferanser styrer hva som trigger epost vs bare
|
|
in-app varsel. Default: alt in-app, epost kun for direkte
|
|
nevnelser og invitasjoner.
|
|
|
|
## Visning
|
|
|
|
Varsler vises som:
|
|
- Klokke-ikon i header med ulest-teller
|
|
- Dropdown med siste varsler
|
|
- Klikk → naviger til relevant kontekst
|
|
- "Marker alle som lest"
|
|
|
|
Kan også være et panel i arbeidsflaten ("Varsler"-trait)
|
|
for de som vil ha det synlig.
|
|
|
|
## Ikke-forstyrrende
|
|
|
|
- Ingen popup-vinduer, ingen blokkerende dialoger
|
|
- Toast forsvinner etter 5 sekunder
|
|
- Bruker velger selv hva som sender epost
|
|
- "Ikke forstyrr"-modus per arbeidsflate
|
|
|
|
## Implementering
|
|
|
|
1. `notification`-node-type i maskinrommet
|
|
2. Trigger-logikk i vaktmesteren (ved edge-opprettelse, melding, etc.)
|
|
3. Frontend: toast-komponent + varsler-dropdown i header
|
|
4. `synops-notify` CLI finnes allerede — utvid med notification-noder
|
|
5. Epost-varsling via eksisterende `synops-mail --send`
|