# 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 (arver workspace-isolasjon) - 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 — all workspace-isolasjon arves automatisk via `nodes.workspace_id`. ## 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. * Alt er workspace-scopet via node-modellen. * Sjekk `docs/erfaringer/adapter_moenster.md` for hybrid-strategi.