feat(3d): meal-box merge, stored mutations, undo, mobile undo UI + i18n ×12
- Merge leftovers into existing meal_box when same recipeId + cookedAt date + frozen + available. - Store mealBoxMutations JSONB on cooking_sessions for deterministic undo. - Undo decrements portions/remaining, discards box at zero, appends correction ledger rows. - Mobile: undo button in cooking/[id].tsx after-flow and meal-boxes.tsx within 24h window. - i18n undo strings across all 12 locales; parity test green. - 6 new integration tests: merge, no cross-date merge, frozen split, undo restore, undo discard, ledger invariant. - Update FAS3 audit doc with 3d semantics. Closes Fas 3d
This commit is contained in:
@@ -0,0 +1,4 @@
|
||||
-- Fas 3d: rester från cooking sessions spåras i befintliga meal_boxes.
|
||||
ALTER TABLE meal_boxes ADD COLUMN IF NOT EXISTS leftover_source TEXT;
|
||||
-- Bakåtfyll: befintliga matlådor skapade före 3d får källan 'cook_session'.
|
||||
UPDATE meal_boxes SET leftover_source = 'cook_session' WHERE leftover_source IS NULL;
|
||||
@@ -0,0 +1,2 @@
|
||||
-- Fas 3d: nya domänhändelser för matlådeuppdateringar.
|
||||
ALTER TYPE event_type ADD VALUE IF NOT EXISTS 'MEAL_BOX_UPDATED';
|
||||
@@ -0,0 +1,7 @@
|
||||
-- Fas 3d: spara måltidsdatum på cooking session för att kunna hitta
|
||||
-- matlådor som skapades/utökades vid samma tillfälle vid undo.
|
||||
ALTER TABLE cooking_sessions ADD COLUMN IF NOT EXISTS meal_date DATE;
|
||||
-- Bakåtfyll: använd completedAt-datumet för befintliga completed-sessioner.
|
||||
UPDATE cooking_sessions SET meal_date = completed_at::DATE WHERE meal_date IS NULL AND completed_at IS NOT NULL;
|
||||
UPDATE cooking_sessions SET meal_date = started_at::DATE WHERE meal_date IS NULL AND started_at IS NOT NULL;
|
||||
UPDATE cooking_sessions SET meal_date = created_at::DATE WHERE meal_date IS NULL;
|
||||
@@ -0,0 +1,3 @@
|
||||
-- Fas 3d: spara vilka meal_boxes som påverkades av en session och med
|
||||
-- hur många portioner, för deterministisk undo vid mergeade lådor.
|
||||
ALTER TABLE cooking_sessions ADD COLUMN IF NOT EXISTS meal_box_mutations JSONB DEFAULT '[]'::JSONB;
|
||||
@@ -99,6 +99,34 @@
|
||||
"when": 1786055900000,
|
||||
"tag": "0014_expand_event_types",
|
||||
"breakpoints": true
|
||||
},
|
||||
{
|
||||
"idx": 14,
|
||||
"version": "7",
|
||||
"when": 1786056300000,
|
||||
"tag": "0015_meal_box_leftover_source",
|
||||
"breakpoints": true
|
||||
},
|
||||
{
|
||||
"idx": 15,
|
||||
"version": "7",
|
||||
"when": 1786056400000,
|
||||
"tag": "0016_expand_event_types_meal_box_updated",
|
||||
"breakpoints": true
|
||||
},
|
||||
{
|
||||
"idx": 16,
|
||||
"version": "7",
|
||||
"when": 1786056500000,
|
||||
"tag": "0017_cooking_sessions_meal_date",
|
||||
"breakpoints": true
|
||||
},
|
||||
{
|
||||
"idx": 17,
|
||||
"version": "7",
|
||||
"when": 1786056600000,
|
||||
"tag": "0018_cooking_sessions_meal_box_mutations",
|
||||
"breakpoints": true
|
||||
}
|
||||
]
|
||||
}
|
||||
Reference in New Issue
Block a user