mirror of
https://github.com/MBombeck/HealthLog.git
synced 2026-11-08 12:32:43 +00:00
Deepen the structured mood-tag taxonomy and close a bulk-ingest data-loss gap the iOS client has been blocked on. Taxonomy (migration 0118, additive + idempotent, mirrors the 0101 seed): - New `hobbies` category: movies, reading, gaming, music, outdoors. - Nutrition-detail tags appended to the existing `health` category: fast_food, no_sweets, big_meal (alongside the original ate_well). - Lucide icon names seeded per row and registered in the client icon map; labelKeys added for every new category and tag across all six locales. Bulk tagKeys (data-loss fix): - `POST /api/mood-entries/bulk` previously Zod-stripped `tagKeys`, so structured taxonomy links were silently dropped on the adopt-on-pair backfill while the single-entry route persisted them correctly. Add `tagKeys` to the bulk entry schema and write the `MoodEntryTagLink` rows per entry via the shared `createTagLinks` helper — unknown keys are dropped against the catalog, the join insert skips duplicates so a re-posted batch stays idempotent. Tests cover the bulk tagKeys round-trip (links created, unknown keys ignored, over-long arrays rejected at the schema boundary) at the unit level and against real Postgres.