Grunnleggende arkitekturbeslutninger tatt og dokumentert: - Alt er noder (brukere, team, innhold, mediefiler, samlings-noder) - Edges definerer hva en node er (freeform typer, metadata i JSONB) - Materialisert tilgangsmatrise (node_access) erstatter workspace-RLS - Visibility (hidden/discoverable/readable/open) på noder - Aliaser via usynlige system-edges - Maskinrommet eier all skriving (SpacetimeDB først, PG asynk) - SpacetimeDB holder hele grafen, PG er persistent backup - Node- og edge-skjema spesifisert (docs/primitiver/) Fjernet workspace-konseptet fra hele dokumentasjonen (~40 filer). Fem retninger besluttet, én åpen (rom, ikke forum). Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
59 lines
2.7 KiB
Markdown
59 lines
2.7 KiB
Markdown
# Feature: Kanban (Planlegging)
|
|
**Filsti:** `docs/features/kanban.md`
|
|
|
|
## 1. Konsept
|
|
Et drag-and-drop Kanban-brett for planlegging. Primært brukt til episodeplanlegging i Redaksjonen, men også mottaker av AI-genererte action points fra Møterommet.
|
|
|
|
## 2. Status
|
|
**PG-adapter ferdig og deployet (mars 2025).** SpacetimeDB-sync gjenstår.
|
|
|
|
### Implementert
|
|
- Migrering `0002_kanban.sql`: `kanban_boards`, `kanban_columns`, `kanban_cards`
|
|
- Kanban-kort er nodes i kunnskapsgrafen (tilgangsstyrt via `node_access`-matrise)
|
|
- REAL-posisjon for midpoint-innsetting (`(1.0 + 2.0) / 2 = 1.5`) — ingen re-nummerering
|
|
- REST API: GET brett, POST kolonne/kort, PATCH kort/flytt, DELETE kort
|
|
- PG polling-adapter (`pg.svelte.ts`) med 5 sek intervall og optimistisk UI
|
|
- Adapter-factory (`create.svelte.ts`) — klar for SpacetimeDB-hybrid
|
|
- KanbanBlock.svelte: drag & drop, redigeringsmodal (tittel/beskrivelse/slett), enkelt kort-input som legger til i første kolonne
|
|
|
|
### Gjenstår
|
|
- SpacetimeDB-modul + hybrid-adapter for sanntidsoppdatering
|
|
- Reposisjonering ved dra innad i kolonne (sortert rekkefølge)
|
|
- Tildeling (assignee) UI
|
|
- Fargekoder/labels på kort
|
|
- AI-integrasjon: møtereferent → nye kort
|
|
|
|
## 3. Datamodell
|
|
|
|
```
|
|
kanban_boards (id FK→nodes, parent_id FK→nodes, name)
|
|
kanban_columns (id, board_id FK→kanban_boards, name, color, position REAL)
|
|
kanban_cards (id FK→nodes, column_id FK→kanban_columns, title, description, assignee_id, position REAL, created_by, created_at)
|
|
```
|
|
|
|
Kort og brett er nodes — tilgang styres via `node_access`-matrisen.
|
|
|
|
## 4. API-endepunkter
|
|
|
|
| Metode | Sti | Beskrivelse |
|
|
|---|---|---|
|
|
| GET | `/api/kanban/[boardId]` | Hent brett med kolonner og kort |
|
|
| POST | `/api/kanban/[boardId]/columns` | Opprett kolonne |
|
|
| POST | `/api/kanban/[boardId]/cards` | Opprett kort (oppretter node + kort) |
|
|
| PATCH | `/api/kanban/[boardId]/cards/[cardId]` | Oppdater tittel/beskrivelse |
|
|
| PATCH | `/api/kanban/[boardId]/cards/[cardId]/move` | Flytt kort til kolonne/posisjon |
|
|
| DELETE | `/api/kanban/[boardId]/cards/[cardId]` | Slett kort (cascader fra node) |
|
|
|
|
## 5. Brukes av
|
|
|
|
| Konsept | Bruk |
|
|
|---|---|
|
|
| Redaksjonen | Episodeplanlegging — dra Temaer inn i Kjøreplanen |
|
|
| Møterommet | AI-referenten foreslår nye kort basert på action points |
|
|
| Foreningen Liberalistene | Styreoppgaver (Å gjøre / Pågår / Ferdig) |
|
|
|
|
## 6. Instruks for Claude Code
|
|
* Bruk native HTML5 Drag and Drop i SvelteKit, unngå tunge biblioteker.
|
|
* PG-adapter er autoritativ inntil SpacetimeDB-sync er på plass.
|
|
* Tilgang styres via `node_access`-matrisen.
|
|
* Sjekk `docs/erfaringer/adapter_moenster.md` for hybrid-strategi.
|