作品：备餐时间倒排与购物清单
原始愿望：我想把几道菜安排到同一个时间上桌，自动算出要买什么、什么时候开始做。

制作一个单文件中文备餐工作台，打开已有三道原创素食的完整示例：蘑菇番茄意面、香烤南瓜鹰嘴豆、黄瓜柠檬拌豆。核心命题是“让厨房里分散的动作，朝同一个上桌时刻汇合”。用奶白与番茄橙、墨黑的厨房出餐条带语言；主工作台是一张可读、可导出、有实际步骤内容的时间条带，而不是一组统计卡。

用户能把一切替换成自己的晚饭：菜谱名称与基准人数、食材名称/数量/单位、步骤文字/分钟数、每一步占用的操作人手与锅具灶眼，增删菜谱/食材/步骤、重排步骤。调整就重新计算。全局设就餐人数、日期和固定上桌时间；资源数量可改，允许新资源。购物清单只合并相同规范名称且同单位的食材，按人数缩放再扣可编辑库存，不猜测克/个/勺的换算。库存超出需求时需购为零并显示余量。

时间表采用有明确边界的向后排程：同一道菜保持用户定义顺序，不允许其前一步越过后一步；多道菜共享有限灶、锅、烤箱和人手；资源不能重叠超容量。用实际结果显示最晚开工时间、各菜完成与待上桌时间、资源使用和每一步始末。说明这是分钟级可行贪心排程，不保证最短、不模拟食物变熟，也不把示例耗时当烹饪安全标准。所有默认素食步骤与耗时为原创可改估算。

导出购物 CSV、烹饪时间表 CSV、完整方案 JSON 与可打印 HTML 备餐单，另以同源 Canvas 导出完整时间图。重要编辑撤销/重做，完整回读恢复菜谱、食材、步骤、库存、资源与上桌时间；非法文件不破坏当前状态；暂存失败可继续手动保存。

结构分离 AppModel 与 Artwork，网页显示、图片和报告使用同一真实派生排程；中文字体制作子集内嵌，其他用户文字回退设备字体。实际查看默认、人数与资源变化后的时间图和最终打印稿，修订可读性问题。独立核对汇总、库存、资源容量、步骤顺序和跨日时间，并回读实际 JSON/CSV。禁止浏览器绕路；只能陈述实际原生图、模型与文件验证，不声称已实机验收。
