备餐时间倒排与购物清单｜制作与修订记录
============================
使用想象显影机 v3.2。制作前已写完整提示词；父级任务约定给出实用备餐流程和二维媒介，不称盲测或自动选择验证。

创作命题与范围
“把分散的厨房动作汇到同一个时刻”。舍弃以菜肴照片为主的菜单展示，也没有添加没有空间收益的三维锅具。选择厨房出餐条带：一条橙色装订边、一张大纸面、清楚的时间轴和不同菜品的连续步骤。菜谱、库存、资源与排程是同一个工作的四个入口；同一份派生数据驱动概览、列表、购物单和打印单。

真实迭代
1. 首轮真实 Canvas 输出保存在 review/first.png。实际查看发现终点 19:00 的刻度文字和“上桌”标签相撞。修订时保留上桌标记，在其附近留出 60 像素的刻度禁排区域。其他时间刻度不改。
2. “最晚开工”容易被理解为全局最优结果，改成“按此表开工”。打印稿相同措辞；说明保持分钟级可行贪心的真实边界。
3. 对人数和原用量检查时发现固定两位小数会把很小的用户单位显示为零，改成有效数字显示、较高精度 CSV，并对浮点微差加相对容差。空数字字段不再被 Number('') 静默转为零，而是提示填写。
4. 第一次自定义中文标题出图时，原生环境缺少设备字体回退，出现漏字。随后为原生 QA 注册完整 Noto 回退并重新实际查看 edited.png；浏览器文件内仍是可移植的示例字体子集，其他文字由正常设备字体提供，没有谎称把全部汉字装进 200 KB 子集。
5. 实际查看 default.png、edited.png、result.png 和 long-content.png。默认四人、一人操作，19:00 上桌时从 18:04 开工。改为六人、两人操作、19:30 上桌，并改食材/库存/步骤时长，真实排程变为 18:42 开工，48 分钟跨度。午夜案例显示前一天 23:19 开工。长菜名和步骤按 Canvas 的真实测量分行/省略，完整文字保留在 CSV 与打印单。

完成流程
支持完全替换菜谱和食材、单位/数量/基准人数/启用状态，步骤增删重排与资源勾选；资源名称/容量增改，仍被引用的资源不能直接删除；库存增删编辑、人数与固定上桌日期时间；撤销/重做、暂存与错误读取防护；完整 JSON、购物 CSV、实际时间表 CSV、可打印 HTML 和 Canvas PNG。

机制与文件证据
默认橄榄油需求 (15+15+8)×2 = 76 ml，扣 30 ml 库存后需购 46 ml；熟鹰嘴豆 (180+140)×2 = 640 g；盐需购 0、余 8 g。相同食材不同单位独立成行。
资源容量验证使用独立开始/结束事件扫描，与排程内部逐分钟占用方法不同；核对每一菜的步骤数量、顺序、分钟数和截止时间。完整改动后的 JSON 回导，购物和排程结果一致。未知资源、非法日期拒绝且当前方案不变；空菜谱返回明确空排程。
Python CSV 与 HTMLParser 回读实际输出：购物 9 项、步骤 10 项，跨日日期存在，打印稿有 21 个表行且含完整标题。最终 PNG 均完整解码。

诚实边界
通过模型与原生绘图检查不等于浏览器整体验收。尚未操作 DOM/CSS、真实鼠标/触屏、打印对话框和首次断网双击。没有实际读到食物状态，示例分钟不能充当烹饪或保温安全结论。没有以测试数量给作品打“大师级”分数。
