2.6 KiB
2.6 KiB
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)
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_atbrukes til UI-feedback, ikke til conflict resolution (ennå)- Sjekk
docs/erfaringer/adapter_moenster.mdfor hybrid-strategi