Context
Part of the Notes in Analysis Epic. M3 (Insights v1) is already completed. This issue retroactively adds manual note markers — the safest bridge from raw free-text to explainable analytics, fully within the existing API-first architecture.
Depends on: #195 (backend note fields), #196 (note visibility)
Spec Reference
docs/features/notes-in-analysis.md — Sections: Marker Taxonomy v1, Frontend Components — Entry Composer
Marker Taxonomy v1
| Key |
Display (DE/EN) |
work |
Arbeit / Work |
homeoffice |
Homeoffice / Remote |
social |
Sozial / Social |
movement |
Bewegung / Exercise |
sleep_bad |
Schlechter Schlaf / Poor Sleep |
sleep_good |
Guter Schlaf / Good Sleep |
stress |
Stress |
conflict |
Konflikt / Conflict |
symptom |
Symptom |
travel |
Reise / Travel |
achievement |
Erfolg / Achievement |
Custom markers: free-text, max 32 chars.
Tasks
Backend
Frontend
Acceptance Criteria
Context
Part of the Notes in Analysis Epic. M3 (Insights v1) is already completed. This issue retroactively adds manual note markers — the safest bridge from raw free-text to explainable analytics, fully within the existing API-first architecture.
Depends on: #195 (backend note fields), #196 (note visibility)
Spec Reference
docs/features/notes-in-analysis.md— Sections: Marker Taxonomy v1, Frontend Components — Entry ComposerMarker Taxonomy v1
workhomeofficesocialmovementsleep_badsleep_goodstressconflictsymptomtravelachievementCustom markers: free-text, max 32 chars.
Tasks
Backend
POST /entries/{id}/note-markerswith validation against taxonomy + custom rulesDELETE /entries/{id}/note-markers/{marker_id}GET /users/me/note-markers/suggestions(most-used first, max 20)GET /analysis/notes/marker-summaryendpoint (see spec for response shape)Frontend
entry_note_markerswithsource: 'user'Acceptance Criteria
GET /analysis/notes/marker-summaryreturns correct avg_mood per marker