Commit Graph

125 Commits

Author SHA1 Message Date
Sven (AAMOS AI) 8637eaa6c3 3c-fix: partial consumption now deducts eaten + leftovers
- consumptionPortions = min(planned, actualPortionsEaten + leftoverEstimatePortions).
  Meal boxes are a subset of leftovers; raw inventory is only retained for
  portions that were never cooked.
- Added validation leftoverEstimatePortions >= mealBoxPortions with localized
  400 error (cooked.leftoverLessThanBox) in server i18n + all 12 locales.
- Removed unused COOKING_SESSION_STATUSES / MEAL_BOX_STATUSES imports from
  apps/api/src/lib/cooking.ts.
- Hardened test cleanup to delete mealBoxes/meals/recipeCooks/cookingSessions
  by household before dropping storageLocations.
- New regression tests: meal-box double-counting, eaten+leftover split, and
  leftover < box rejection.
- Updated FAS3-COOKING-SESSIONS-AUDIT.md with corrected physics semantics.
2026-08-07 15:35:25 +07:00
Sven (AAMOS AI) cb493010d0 3c: partial consumption + undo for cooking sessions
- Append-only undo via correction transactions tied to cookingSessionId.
- POST /v1/cooking-sessions/:id/undo with 24h UTC window (409 + i18n after expiry).
- Complete undo scope: meals removed, meal boxes discarded, recipe_cooks
deleted, cookCount decremented; activation milestones left intact.
- Deterministic assumption-profile rollback via lastSessionAnswers.sessionId;
profile deleted when observationCount reaches 0.
- New status 'undone' as TEXT validated against COOKING_SESSION_STATUSES.
- Analytics event cooking_session_undone + domain events MEAL_BOX_DISCARDED,
MEAL_REMOVED, COOKING_SESSION_UNDONE.
- Partial consumption uses actualPortionsEaten/plannedPortions factor.
- i18n coverage for cooked.undoWindowExpired across all 12 locales + server.
- Invariant tests: computeBalance(transactions) === item.quantity after
complete, undo, and undo + new complete; transaction count increases on undo.
- Migration 0014_expand_event_types.sql adds new enum values.
- Updated FAS3-COOKING-SESSIONS-AUDIT.md with chosen semantics.
2026-08-07 05:47:54 +07:00
Sven (AAMOS AI) bbe7526ef3 fix(3b): delad kompletteringsväg för legacy /cook + deterministiska cooking-assumptions
- cookRecipeInputSchema utökas med actualPortionsEaten, leftoverEstimatePortions, leftoverNote
- completeCookingSession-wrapper i apps/api/src/lib/cooking.ts hanterar summavalidering,
  persistens av svar, profiluppdateringar och analytics (started+completed) för båda vägarna
- Legacy POST /v1/recipes/:id/cook använder wrappern med emitStartedEvent
- GET /v1/recipes/:id/cooking-assumptions väljer deterministiskt bland icke-valfria ingredienser
- i18n: nyckel cooked.portionsSumExceedsPlanned i samtliga 12 lokaler + server-i18n
- Nya tester för legacy /cook och cooking-assumptions med valfri första ingrediens

Refs: steg 3b-fix, granskningsrunda 2026-08-07
2026-08-07 05:13:35 +07:00
Sven (AAMOS AI) e46281b9b5 Fas 3 steg 3b: minimala efterfrågor + hushållsantagandeprofiler per ingrediens 2026-08-07 03:56:41 +07:00
Sven (AAMOS AI) 44f6385dce Fas 3 steg 3a-fix: hermetisk test-setup + analytics-event regler för cooking sessions 2026-08-07 03:36:54 +07:00
Sven (AAMOS AI) e9fb4a17d4 Fas 3 steg 3a: cooking_sessions-tabell + lifecycle-endpoints + timeout-jobb, gamla /cook kvar som kortkommando 2026-08-07 03:14:13 +07:00
Sven (AAMOS AI) 4a4f448e1c Fas 2 steg 5: Scan-to-scan-diff + konfliktlösning, samt buggfix depleted-transaktion i reconciliation 2026-08-07 01:30:31 +07:00
Sven (AAMOS AI) 218bc44d08 Fas 2 steg 4: Quick Reconciliation (motor, API, app + 12-språks i18n) 2026-08-07 01:02:08 +07:00
Sven (AAMOS AI) 4385fe5125 Fas 2 steg 3: Household Trust Score (admin + i18n status i appen) 2026-08-06 23:45:28 +07:00
Sven (AAMOS AI) bcf932d2ff Fas 2 steg 2: Inventory Trust Engine - decay-profiler och cache-jobb 2026-08-06 23:25:32 +07:00
Sven (AAMOS AI) 8ae4bf6ec3 Fas 2 steg 1: Inventory Trust Engine - trust states pa inventory_items 2026-08-06 23:01:43 +07:00
Sven (AAMOS AI) 3d1d823583 Server-i18n katalog + backfill for befintliga anvandare utan hushall 2026-08-06 22:33:00 +07:00
Sven (AAMOS AI) 3696aadf98 Hermetiska integrationstester + auto-hushall i onboarding (size, i18n, locations) 2026-08-06 22:06:11 +07:00
Sven (AAMOS AI) dd66ebedbf Bugfix: what-to-eat utan hushall ger forslag; onboarding mal kan valjas multi 2026-08-06 21:32:32 +07:00
Sven (AAMOS AI) 8e6b780480 Lagg till custom Metro-resolver for .js->ts samt react-native-web for SDK 54 2026-08-06 20:51:30 +07:00
Sven (AAMOS AI) a837283a2e Migrera mobilappen fran Expo SDK 57 till SDK 54 2026-08-06 19:54:28 +07:00
Sven (AAMOS AI) e5a9d72197 Lägesmedveten DB-URL: runtime endast DATABASE_URL, tester endast TEST_DATABASE_URL 2026-08-06 17:43:11 +07:00
Sven (AAMOS AI) 03e30755dc Förberedelse fas 2: testmiljö fix + analytics tracker i mobilappen 2026-08-06 16:46:30 +07:00
Sven (AAMOS AI) bd8df59138 Fas 1b punkt 6: First Scan Coach + aktiveringsmätning 2026-08-06 04:14:49 +07:00
Sven (AAMOS AI) 2f3cdf8016 FAS 1b: Progressive onboarding (3-layer flow)
- Add PROGRESSIVE_ONBOARDING feature flag to KNOWN_FLAGS
- Add onboarding_step column to users table (a/b/c)
- New backend endpoints:
  - GET /v1/onboarding/status – check current step + feature flag
  - POST /v1/onboarding/quick-start – complete Step A (goal + precision)
  - POST /v1/onboarding/complete-b – complete Step B (diet, allergens, household)
  - POST /v1/onboarding/complete-c – complete Step C (health profile)
  - POST /v1/onboarding/skip – GDPR-friendly skip
- Refactor mobile onboarding screen into 3 progressive layers
- Update auth store with onboardingStep state
- Update tab layout to only block on Step A
- Update registration to set onboardingStep='a'
- Add i18n keys for Step B/C titles across all 12 locales
- Add Zod validation schemas (quickStartInputSchema, onboardingStatusSchema)
- Add tests for validation and feature flag
- Preserve existing /v1/me/onboarding for backward compatibility
- Migration: 0004_progressive_onboarding.sql
2026-08-06 00:40:59 +07:00
Sven (AAMOS AI) b2b6601f54 Fas 1a punkt 3+4: worker-härdning (DLQ, larm, multi-instance), AAMOS training export 2026-08-05 23:32:18 +07:00
Sven (AAMOS AI) d1455fb581 Fas 1a punkt 2: release_gates tabell + go/no-go-vy 2026-08-05 23:10:09 +07:00
Sven (AAMOS AI) 1250640b1d Fas 1a: analytics tracker, ingestion endpoint, admin dashboards 2026-08-05 22:15:37 +07:00
Sven (AAMOS AI) d627014425 Fas 1a: product analytics schema + GDPR controls 2026-08-05 19:51:37 +07:00
Sven (AAMOS AI) ac5340195a Initial commit (unpacked platform) 2026-08-05 19:21:11 +07:00