diff --git a/docs/features/feature_feedback.md b/docs/features/feature_feedback.md new file mode 100644 index 0000000..5acdabc --- /dev/null +++ b/docs/features/feature_feedback.md @@ -0,0 +1,118 @@ +# Feature Feedback — Levende spesifikasjoner med brukertilbakemelding + +## Konsept + +Hver feature har to koblede noder: +1. **Spec-node** (`node_kind: 'content'`, `metadata.feature_spec: true`) — + markdown-spesifikasjon synlig for brukerne +2. **Feedback-chat** (`node_kind: 'communication'`) — chattråd der brukere + gir tilbakemelding, foreslår endringer, rapporterer bugs + +Koblet via `discusses`-edge: `feedback-chat --discusses--> spec-node`. + +Spec-noden vises som første/pinned melding i chatten (eller som eget panel +i arbeidsflaten ved siden av chatten). + +## Prinsipp + +**Alle features er gjenstand for tilbakemelding.** Ingen feature er "ferdig" +— den har bare en gjeldende spec som brukerne kan påvirke. + +## Datamodell + +``` +spec-node (content, feature_spec: true) + ├── belongs_to → samling (f.eks. "Synops Platform") + └── <-- discusses -- feedback-chat (communication) + ├── owner → feature-eier (utvikler/admin) + └── member_of → relevante brukere/team +``` + +### Spec-noden +- `node_kind: 'content'` +- `metadata.feature_spec: true` +- `metadata.feature_key: 'lydstudio'` (unik nøkkel for kobling til kode) +- `content`: markdown-spesifikasjon (samme format som docs/features/*.md) +- `visibility: 'readable'` — alle innloggede brukere kan lese + +### Feedback-chatten +- Standard kommunikasjonsnode +- Claude er `member_of` og kan delta i diskusjonen +- Brukerroller: alle med tilgang til samlingen kan delta + +## Brukeropplevelse + +### For brukere +1. I arbeidsflaten eller mottaket: se liste over features med "Gi feedback"-knapp +2. Klikk → åpner feedback-chatten med spec-noden synlig øverst +3. Skriv kommentar, forslag, bug-rapport — vanlig chat +4. Claude kan svare, oppsummere, og foreslå spec-endringer + +### For utviklere/Claude +1. Les feedback-chatten for å forstå brukerbehov +2. Oppdater spec-noden basert på feedback +3. Commit oppdatert spec til disk (md-fil) for kodebruk + +## Synk: database ↔ disk + +Feature-specs lever to steder: +- **Database** (spec-node): autoritativ for brukere og feedback +- **Disk** (`docs/features/*.md`): autoritativ for kode og Claude Code + +### DB → disk (eksport) +`GET /query/feature_specs` returnerer alle spec-noder som markdown. +Periodisk jobb eller manuell trigger: maskinrommet skriver spec-noder +til `docs/features/` med frontmatter: + +```markdown +--- +feature_key: lydstudio +node_id: 019cfda5-... +last_synced: 2026-03-18T12:00:00Z +--- +# Lydstudio +... +``` + +### Disk → DB (import) +Ved oppstart eller manuell trigger: maskinrommet leser `docs/features/*.md`, +matcher på `feature_key`, og oppdaterer spec-noden hvis disk-versjonen er nyere +(basert på git commit-tidspunkt vs node updated_at). + +### Konflikthåndtering +- Disk vinner ved kodeendringer (utvikler oppdaterer spec) +- DB vinner ved bruker-feedback som Claude har integrert +- Ved ekte konflikt: opprett merge-node med begge versjoner, flagg for manuell løsning + +## Claude sin rolle + +Claude er deltaker i feedback-chatten og kan: +1. **Oppsummere** tilbakemeldinger: "3 brukere har bedt om X" +2. **Foreslå** spec-endringer basert på feedback +3. **Integrere** godkjente endringer i spec-noden +4. **Synke** oppdatert spec til disk (md-fil) og committe + +Trigger: `agent_respond`-jobben (eksisterende mekanisme) eller +dedikert `feature_feedback_digest`-jobb som kjører periodisk. + +## Implementering + +### Fase 1: Grunnlag +- Opprett spec-noder for eksisterende features (migrer fra docs/features/*.md) +- Opprett feedback-chat per feature +- Vis spec + chat i frontend + +### Fase 2: Synk +- Eksport-endepunkt (`GET /query/feature_specs`) +- Import ved oppstart +- Periodisk synk-jobb + +### Fase 3: Claude-integrasjon +- Claude som deltaker i feedback-chatter +- Digest-jobb som oppsummerer ny feedback +- Automatisk spec-oppdatering ved godkjenning + +## Bygger på +- Kommunikasjonsnoder (fase 5) +- Claude som chat-deltaker (fase 8 / `docs/infra/claude_agent.md`) +- Arbeidsflaten (fase 19) — spec + chat som to paneler side om side