Part 5|第 27/30 篇
今日要做的事: 用 D3 那碗微波洋蔥雞肉蛋蓋飯,把推薦、完成、扣庫存接到下一餐的 Context。
今天要解決的目的: 分清哪些步驟已經在本機或固定回放裡驗過,哪些還沒有接成一條使用者走得到的路。
Day 25 的 Hard 是 16/16。規則過了,推薦可以守住當天的限制。
接著是另一個問題。假設今天交出的是微波丼。我看完決定不煮,明天的冰箱應不應該少一顆蛋?
這不是某天晚上真的發生的事。它是在問狀態:推薦、採用、完成,能不能跳著走。跳了的話,下一餐看到的冰箱就是錯的。

| 項目 | 內容 |
|---|---|
| 產出 | 用 D3 對上 Day 17 的狀態、Day 22 的回放、Day 23 的六格 |
| 案例 | 固定情境裡的週三:只剩微波爐,候選 1 道,微波洋蔥雞肉蛋蓋飯 |
| 工具 | 既有契約與回放。沒有新的 Gemini 呼叫 |
| 不用這篇證明 | 真人採用率、完成率、留存、減廢成效 |
本篇整理的是既有工程契約、固定情境回放與 Alpha 成果。還沒有真人連續使用,所以不填採用率、完成率或留存率。
D3 的條件在回放開始前就鎖好:只剩微波爐、30 分、預算中。設備篩完,候選只剩微波丼。Gemini 那天沒有第二道可以選。買的是雞腿肉 2 點、洋蔥 1 點、白飯 1 點,用到冰箱裡原有的蛋。
Day 22 把這筆放進五天腳本。有記憶的那組會照真實冰箱扣,再把扣完的結果交給下一天。Day 23 拿同一筆做成六格:Hard、Budget、Time、Pantry 過,Chain 和 Balance 是 N/A,tip 在煮完之後才寫「雞腿肉只放 2 天」。Day 17 則規定這中間的時序:打算做是 adopted,庫存不動;收到 complete_cook 才 outflow。
三篇對得上的是同一碗。對不上的是誰按了完成。回放腳本會把可行的那餐煮完並扣庫存。Day 17 的測試是本機記憶體,Firestore transaction 當時沒接。卡片是回放結果存進去,不是有人在頁面上按了煮完才長出來。
Day 17 鎖過的順序是:

recommended → adopted → complete_cook → outflowed
adopted → abandoned
| 走到 | 冰箱 |
|---|---|
| 推薦出來 | 不動。蛋還在 |
adopted,打算做 |
仍不動。測試裡豆腐和雞蛋的數量沒變,pantry_writes 是 0 |
abandoned |
只改狀態。契約寫明不能呼叫 completeCook,所以不扣、也不寫 tip |
complete_cook |
才依實際用量扣。外食用餐只追加 meal tags,不走這段 |
skipped 和 abandoned 先寫在契約裡。程式當時只有採用和煮完兩個入口,這兩個狀態還沒有頁面上的按鈕。
套回微波丼:看完不煮,不該少那顆蛋,也不該把「剛買的雞腿肉只放 2 天」寫進明天的 Context。那句 tip 是煮完才有的。若推薦一出現就扣蛋,下一餐會以為蛋沒了,再推薦別的;實際上蛋還在盒裡。
Day 22 的有記憶,每天拿的是前一天扣過、再過一天之後的冰箱。沒記憶每天仍拿第一天的來規劃,真的要煮時才對上已經變過的庫存。五天加總是 7 點對 12 點。
這是一份鎖定的五天情境,不是某一戶人家連著五個晚上的紀錄。兩組都還有食材過期,所以 7 點不是零浪費。它說明的是:下一餐的 Context 若永遠停在第一天,少買這件事會算錯。D3 用掉的蛋、買進來的雞腿肉,要嘛進了完成後的庫存,要嘛不該進。沒有中間那種「推薦過就算吃了」。

| 已經有 | 證據停在 |
|---|---|
| 採用不扣、煮完才扣 | Day 17 本機時序。Firestore transaction 當時沒接 |
| 固定五天的扣庫存與 7/12 點 | Day 22 回放腳本,不是使用者按完成 |
| D3 六格與煮完才出現的 tip | Day 23,result_cards/memory_D3 |
| 成績頁 | localhost:3024,給看考卷,不在晚餐流程裡 |
localhost:3022 跑回放,localhost:3023 存卡片。兩邊都還沒有「今晚採用/拒絕/中止」的入口,所以真人從推薦走到完成、再交給下一餐,這條還沒串起來。
符合規則的推薦還不是一餐完成。微波丼可以過 Hard,蛋要不要從明天的冰箱消失,取決於有沒有 complete_cook。庫存若把「看過」記成「吃過」,後面的少買、少浪費都會對著錯的冰箱說話。
下一篇: 回到 Eat-Cost Balance。手上有守得住的推薦,也有固定情境裡扣得動的庫存。缺的是人的決定真的寫進下一餐。
Day 22 候選 1 道,腳本煮完並扣庫存
Day 17 adopted 不扣;complete_cook 才 outflow(本機)
Day 23 同一筆的六格;tip 在完成之後
尚未串上 頁面上的採用/拒絕/中止 → 寫回 → 下一餐