每週餐點計畫
餐點計畫會從 Luca 的本地 WebApp(「食物」區塊)讀取,因此 JSON 檔案必須嚴格遵循以下結構。
需讀取的輸入
profilo.md— 目標、排除食物、偏好、餐次數量、補充品。frigo.json— 家裡已有的食材(含有效期限):應優先使用。同時包含冰箱與儲藏室:dove欄位值為"frigo"或"dispensa"(若缺少:碳水化合物、油脂與罐頭歸類為儲藏室,其餘為冰箱)。spesa.json— 目前的購物清單:與冰箱庫存同為計畫的基礎。impostazioni.json—target.kcal和target.proteine_g;calendario用於了解哪些是訓練日;sempre_in_casa(例如鹽、油:永遠有庫存,無需列入購物清單)。piani-pasti/中的最後一個檔案 — 避免重複相同菜餚。log/misure.json— 若體重趨勢顯示需要調整份量。
如果 frigo.json 或 impostazioni.json 尚不存在,則跳過不處理。
Luca 也會從 WebApp 修改計畫(新增、更改或刪除餐點,並標記為已吃)。如果當週的檔案已存在,則從該檔案開始:不要更動 "fatto": true 的餐點,也不要覆蓋他自行撰寫的餐點,除非他要求;僅填補缺少的天數或餐點。
規則
- 先冰箱,後購物清單:優先使用
frigo.json中的物品,尤其是即將到期的。然後再用購物清單。至少 80-90% 的食材必須來自冰箱 + 購物清單;缺少的部分則放入da_comprare_extra,並附上簡短原因。 - 名稱一致性:食材名稱需與
frigo.json/spesa.json中的名稱一致(例如 "雞胸肉",而非 "雞肉"),這樣 WebApp 才能識別家中已有食材。 - 零浪費:易腐食材(蔬菜、肉類、鮮魚)應在頭幾天使用。巧妙規劃剩菜:一次烹調,兩次使用。
- 減脂期,適度熱量赤字:每頓主餐都要有蛋白質、大量蔬菜、碳水化合物(訓練日根據
calendario增加份量)。不可跳過餐點或採用極端飲食。每日總量應接近target.kcal和target.proteine_g。 - 建議份量:使用實用單位(拳頭、手掌、湯匙、「1 塊中等雞胸肉」),僅對主要碳水化合物以公克標示在括號內。
- 多樣性:Luca 樂於每天下廚,因此食譜應簡單但多變,同一道菜每週最多重複 2 次。可以重複之前計畫中他喜歡的菜餚,使用相同的菜名(WebApp 會將其收錄在食譜集中)。
- 週末:Luca 週末會外食(每週至少一次披薩):請不要規劃這些餐點,或在備註中標示「外食」。
- 始終遵守
profilo.md中標示的排除食物。
購物清單、冰箱與儲藏室(與 WebApp 規則相同)
WebApp 透過簡單規則來保持計畫、購物清單與家中庫存一致:請你也遵循這些規則,以確保各個檔案的一致性。
- 在寫入計畫後,更新
spesa.json:針對尚未被吃掉的餐點(從今天起)中,每個不在frigo.json(冰箱或儲藏室)內、不屬於sempre_in_casa、且尚未在清單中的食材,新增一個項目{ "nome", "categoria", "quantita": "", "auto": true }。auto: true表示「因計畫而新增」:如果餐點變更,WebApp 會自動移除它。不要更動沒有auto的項目(那些是 Luca 自己寫的)。 da_comprare_extra保留給選擇性建議(例如,一顆檸檬調味),而非餐點所需的食材。- 名稱:WebApp 比較名稱時會忽略大小寫和重音符號,並視單複數為相同(例如 "uovo" = "uova"),但 "pollo"(雞肉)和 "petto di pollo"(雞胸肉)仍視為不同:請使用與
frigo.json/spesa.json相同的名稱。 - 當 Luca 告訴你他已吃掉某餐時:將該餐點的
"fatto"設為true,從frigo.json中移除屬於冰箱(FRIGO)的食材(儲藏室的部分保留),並將這些被移除的食材(原樣)儲存在該餐點的"consumati"欄位中,這樣如果 Luca 在 WebApp 上取消勾選,它們就能恢復。 - 當 Luca 告訴你他已完成購物時:從
spesa.json中移除已購買的項目,並將其加入frigo.json,填入dove(碳水化合物、油脂與罐頭為"dispensa",其餘為"frigo"),如果你知道有效期限則填入scadenza。
簡易食譜
每個餐點都有一個 ricetta 欄位:一個包含 3-5 個簡短步驟的陣列(每行一個步驟),並附上建議烹調時間。不要包含顯而易見的步驟(例如「擺盤」)。如果某道菜使用了前一天剩菜,請在第一個步驟中說明。
檔案結構
{
"settimana": "AAAA-Www",
"kcal_giorno_indicative": 2150,
"giorni": [
{
"giorno": "lunedì",
"pasti": [
{
"tipo": "pranzo",
"piatto": "Riso con pollo e zucchine",
"ingredienti": [{ "nome": "Riso basmati", "porzione": "1 pugno abbondante (~80 g)" }],
"ricetta": ["Cuoci il riso in acqua salata (circa 12 min)", "…"],
"note": "",
"fatto": true
}
]
}
],
"da_comprare_extra": [{ "nome": "Limoni", "categoria": "frutta", "quantita": "2", "motivo": "per condire il pesce" }]
}
giorno:小寫的星期名稱(lunedì … domenica)。tipo:pranzo(午餐)、cena(晚餐)、colazione(早餐)或 spuntino(點心)。categoriainda_comprare_extra:可選 proteine(蛋白質)、carboidrati(碳水化合物)、verdure(蔬菜)、frutta(水果)、latticini(乳製品)、grassi(油脂)、dispensa(儲藏室)、altro(其他)。fatto為可選:僅在已吃掉的餐點中設為true(由 Luca 從 WebApp 設定,或在你被告知他已吃什麼時設定);未來的餐點請省略此欄位。consumati為可選:僅存在於已吃掉的餐點中,包含從冰箱移出的項目(見上文)。請勿修改。- 不要新增其他欄位。
輸出
- 將計畫儲存在
piani-pasti/AAAA-Www.json(ISO 週數),並嚴格遵守上述結構。 - 使用缺少的食材更新
spesa.json(參見「購物清單、冰箱與儲藏室」)。 - 在聊天中顯示簡短摘要:每天一行,列出主要菜餚,然後是你添加到購物清單的項目、
da_comprare_extra清單,以及 2-3 個備餐建議(可以提前煮什麼)。提醒 Luca 該計畫已可在 WebApp 的「食物」區塊中查看。