Legg til dagsplan + kommentar ved statusbytte

Dagsplan: tredje visning ved siden av tavle/tabell. To-kolonne planlegger
der man plukker oppgaver fra backlog og bygger en ordnet plan for dagen
(drag-sortering, kapasitet i timer, datovelger). Per bruker, per dato,
lagret i plans.json; synkes mellom egne faner via plan-WS-melding.

Kommentar ved statusbytte: når en oppgave markeres ferdig/blokkert (knapp,
kanban-drag eller modal) tilbys en valgfri kommentar som festes til oppgaven
(kind:status) og legges i aktivitetsloggen — atomisk i ett update-kall.

20 integrasjonstester (8 nye), alle grønne. README + CLAUDE.md oppdatert.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Jon Vanvik 2026-06-15 13:18:33 +02:00
parent 6b9dbf8254
commit be166034de
8 changed files with 686 additions and 32 deletions

View file

@ -134,6 +134,12 @@ WantedBy=multi-user.target
- **Sanntidssynk** — alle endringer pushes til alle åpne faner via WebSocket
- **Presence** — se hvem som er pålogget akkurat nå
- **Kanban-tavle** med drag & drop mellom statuskolonner, pluss klassisk tabellvisning
- **Dagsplan** — plukk oppgaver fra lista og bygg en ordnet plan for dagen
(dra for å sortere, kapasitet i timer, datovelger). Planen er personlig og
synkes mellom dine egne faner.
- **Kommentar ved statusbytte** — når du markerer ferdig eller blokkert (via
knapp, kanban-drag eller modal) tilbys du å skrive en kommentar som festes
til oppgaven og vises i aktivitetsloggen
- **Hurtig-registrering** med tokens: `Bytt SFP #l1 p2 @me !imorgen ~1h loc:DC-OSL-1`
- **Kommentarer** per oppgave
- **Aktivitetslogg** — hvem gjorde hva, når (sidepanel)
@ -143,7 +149,7 @@ WantedBy=multi-user.target
- **Angre sletting** direkte fra toast
- KPI-er, grafer (kategori/prioritet/eier), filtre, sortering, søk
- Eksport/import av JSON, eksempeldata for demo
- Tastatursnarveier: `n` ny · `/` søk · `v` bytt visning · `a` aktivitet · `esc` lukk
- Tastatursnarveier: `n` ny · `/` søk · `v` bytt visning · `p` dagsplan · `a` aktivitet · `esc` lukk
## API
@ -152,12 +158,14 @@ optimistisk låsing — send med ved update, få 409 hvis noen andre har lagret.
| Metode | Endepunkt | Beskrivelse |
|---|---|---|
| GET | `/api/state` | Bruker, oppgaver, aktivitet, kjente brukere, hvem som er online |
| GET | `/api/state` | Bruker, oppgaver, aktivitet, kjente brukere, online, og dagens plan |
| POST | `/api/tasks` | Opprett oppgave (`title` påkrevd) |
| PUT | `/api/tasks/:id` | Oppdater (delvis OK; send `v` for konfliktsjekk) |
| PUT | `/api/tasks/:id` | Oppdater (delvis OK; send `v` for konfliktsjekk; valgfri `comment` festes som status-kommentar) |
| DELETE | `/api/tasks/:id` | Slett |
| POST | `/api/tasks/:id/comments` | Legg til kommentar `{ text }` |
| DELETE | `/api/tasks/:id/comments/:cid` | Slett egen kommentar |
| GET | `/api/plan?date=YYYY-MM-DD` | Hent egen dagsplan (ordnet liste av task-ids) |
| PUT | `/api/plan` | Lagre egen dagsplan `{ date, items: [id…] }` |
| POST | `/api/replace` | Erstatt hele listen (import) |
| POST | `/api/seed` | Last eksempeldata (kun hvis tomt) |
| POST | `/api/login` | Sett navn-cookie (hvis cookie-auth er på) |
@ -175,5 +183,7 @@ curl -s -X POST localhost:3000/api/tasks \
## Lagring
JSON-filer i `DATA_DIR` (atomisk skriv via tmp-fil + rename, serialisert i
prosessen). Én node-prosess per datakatalog. Holder fint til tusenvis av
oppgaver; blir det trangt er SQLite (`node:sqlite`) neste naturlige steg.
prosessen): `tasks.json`, `activity.json`, `users.json` og `plans.json`
(dagsplaner per bruker per dato; planer eldre enn 30 dager ryddes ved oppstart).
Én node-prosess per datakatalog. Holder fint til tusenvis av oppgaver; blir det
trangt er SQLite (`node:sqlite`) neste naturlige steg.