书架设计与板材排料 · 真实设计与修订记录
================================
制作前已写制作提示词。依照冻结的 imagination-developer v3.2 和第二辑约定制作，内嵌团队共同的 Atelier3D 1.0.1；不是盲测。中文字体为 Noto Sans CJK SC 的实际用字子集，许可随包提供。

主工作面采用并排的温暖木作三维与炭灰排料图，参数放在图下方三段工单。主命题是每块实物板件都能在整板上找到编号，故没有将书架做成一个外壳旋转示意。书架外廓、位置、尺寸、清单、排料、表格与导出共用 AppModel.parts / derive；选中板件在三维和排料中共同变化。

书架采用明确的对接结构。顶底、独立开间层板在侧板内，竖隔位于顶底之间；后覆背板占用总深。整数开间余量按 1 mm 分配。例如宽 1001 mm、18 mm 板、3 开间为 310 / 310 / 309 mm，仍精确加回总宽。默认 15 片，净开间各 523 mm、每层净高 324.4 mm，主体深度 314 mm。

排料使用可解释的矩形切分。记录每个剩余矩形与锯缝矩形，按材料分组；面积优先、长边优先、宽边优先分别执行后择优。独立核对两片 1000 × 500 mm 加 3 mm 锯缝，恰好放入 2003 × 500 mm；净料、锯缝、修边、余料面积可逐张守恒。默认 2 张主体板 + 1 张背板，示例成本 584 元。编辑结果为宽高各 1400、3 开间、无背板，16 片放入 2 张主体板，476 元。边界整板长 1500、每种材料最多 1 张时，10 片没有排入，明确保留在工单中。

真实图面修订
第一轮默认相机在高书架底部、展开与宽横柜有裁切，保存了 before-index.html 和 before-default/action/result-3d.png。改为正交观察，以所有当前变换后的板件外廓角点计算画幅，并接受实际画布宽高比；UI 容器尺寸改变会重新适配。最终查看默认、全展开、横向无背板和未排下边界图，板件完整可见。木纹强度从 .27 降为 .18；地面扩展，避免背景边界。

查看“排料”单图时，原先视图开关在被隐藏的三维面板里，无法返回；已移到始终可见的图下方。最后事件审阅发现最多 12 张板时固定画高可能造成负缩放；已按张数与最小可读整板高度延长排料 Canvas，在固定工作面内滚动。Canvas 按 CSS 逻辑坐标绘制以保留高 DPI 上标签字号，实际像素仅用于清晰度。无效数值会恢复当前有效字段值。

资源与异步修订
最后选择的 JSON 使用独立读取代次，继续编辑、取消或隐藏会废弃旧读取；页面历史缓存返回重新连接尺寸观察器、三维渲染器与轨道控制。资源清理幂等，创建失败、绘制失败、contextlost 与离开页面共用清理。不存在持续空转渲染循环。未进行浏览器事件或实物加工验收，不能把原生图面当成整页截图。
