68 lines
2.6 KiB
Markdown
68 lines
2.6 KiB
Markdown
# Feature: Notater (Scratchpad)
|
|
**Filsti:** `docs/features/notater.md`
|
|
|
|
## 1. Konsept
|
|
Et enkelt notatverktøy med automatisk lagring. Brukes som scratchpad i ulike kontekster — show notes, møtenotater, research-notater. Notater er nodes i kunnskapsgrafen og kan kobles til andre noder.
|
|
|
|
## 2. Status
|
|
**PG-adapter ferdig og deployet (mars 2025).** Rich text og SpacetimeDB-sync gjenstår.
|
|
|
|
### Implementert
|
|
- Migrering `0004_notes.sql`: `notes`-tabell (FK→nodes)
|
|
- Notater er nodes — arver workspace-isolasjon automatisk
|
|
- Auto-save med 500ms debounce (visuell feedback: "Lagrer..."/"Lagret")
|
|
- REST API: GET og PATCH (tittel + innhold)
|
|
- PG polling-adapter med 10 sek intervall (tregere enn chat/kanban — notater endres sjeldnere)
|
|
- NotesBlock.svelte: tittel-input + fritekst-textarea med auto-save
|
|
- Polling pauses mens brukeren skriver (unngår overskriving av egne endringer)
|
|
|
|
### Gjenstår — Fase 2
|
|
- Markdown-editor (rich text med forhåndsvisning)
|
|
- Versjonering / undo-historikk
|
|
- Kobling til andre noder (temaer, episoder, aktører)
|
|
- Flerbruker-redigering (conflict resolution)
|
|
- SpacetimeDB-modul + hybrid-adapter
|
|
- Eksport (Markdown, PDF)
|
|
|
|
## 3. Datamodell (implementert)
|
|
|
|
```sql
|
|
CREATE TABLE notes (
|
|
id UUID PRIMARY KEY REFERENCES nodes(id) ON DELETE CASCADE,
|
|
parent_id UUID NOT NULL REFERENCES nodes(id),
|
|
title TEXT NOT NULL DEFAULT '',
|
|
content TEXT NOT NULL DEFAULT '',
|
|
created_by TEXT REFERENCES users(authentik_id),
|
|
created_at TIMESTAMPTZ NOT NULL DEFAULT now(),
|
|
updated_at TIMESTAMPTZ NOT NULL DEFAULT now()
|
|
);
|
|
```
|
|
|
|
`updated_at` oppdateres automatisk ved PATCH og brukes til "Lagret [tidspunkt]"-visning.
|
|
|
|
## 4. API-endepunkter
|
|
|
|
| Metode | Sti | Beskrivelse |
|
|
|---|---|---|
|
|
| GET | `/api/notes/[noteId]` | Hent notat |
|
|
| PATCH | `/api/notes/[noteId]` | Oppdater tittel og/eller innhold |
|
|
|
|
## 5. Brukes av
|
|
|
|
| Konsept | Bruk |
|
|
|---|---|
|
|
| Redaksjonen (Sidelinja) | Show notes for episoder |
|
|
| Foreningen Liberalistene | Møtenotater |
|
|
| Møterommet (fremtidig) | Scratchpad under møter |
|
|
|
|
## 6. Auto-save-mønster
|
|
- Bruker skriver → 500ms debounce → PATCH til server
|
|
- Under lagring vises "Lagrer..." (gul)
|
|
- Etter vellykket lagring vises "Lagret [dato]" (grå)
|
|
- Polling (10 sek) henter siste versjon, men hopper over overskriving mens `saving`-flagget er satt
|
|
|
|
## 7. Instruks for Claude Code
|
|
* Notater er workspace-scopet via node-modellen
|
|
* Auto-save bruker debounce — ikke send PATCH ved hvert tastetrykk
|
|
* `updated_at` brukes til UI-feedback, ikke til conflict resolution (ennå)
|
|
* Sjekk `docs/erfaringer/adapter_moenster.md` for hybrid-strategi
|