From 64d944eb0f5a86d632365e80ee06bd1ea92d704e Mon Sep 17 00:00:00 2001 From: umsangdon Date: Tue, 1 Sep 2026 13:58:08 +0900 Subject: [PATCH] =?UTF-8?q?fix(B07):=20=EB=8F=84=EA=B0=81=EC=9D=84=20?= =?UTF-8?q?=EB=B0=B0=EA=B2=BD=EC=9C=BC=EB=A1=9C=20=EA=B5=B3=ED=98=80=20?= =?UTF-8?q?=EC=83=88=20=EC=84=A0=EC=9D=B4=20=EC=9E=A0=EA=B8=88=20=EB=8F=84?= =?UTF-8?q?=EB=A9=B4=EC=B8=B5=EC=97=90=20=EB=96=A8=EC=96=B4=EC=A7=80?= =?UTF-8?q?=EC=A7=80=20=EC=95=8A=EA=B2=8C=20=ED=95=9C=EB=8B=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - state.setActiveLayerId(): 잠금 도면층(도각·원지반) 요청은 잠금 아닌 첫 층으로 돌린다. 브리지·자동백업 복구·JSON 가져오기·도면층 패널·리본이 모두 이 함수를 지나므로 가드를 한 곳에 뒀다. 잠금 아닌 층이 없으면 요청값 유지. - RibbonWidgets: 「현재 도면층」 목록에서 잠금층을 뺀다(현재 층이 잠금이면 유지). - Cover 엔진: 표지에 잠금 아닌 「주기」 도면층을 실어 덧그릴 자리를 만든다. 표지는 엔티티가 전부 도각(잠금)이라 가드만으로는 그릴 곳이 없었다. - state.resetUndoBaseline(): 도면 적재를 되돌리기 바닥으로 세운다. 첫 Ctrl+Z가 도면을 싣기 전 빈 상태로 되돌아가 화면이 백지가 되던 결함을 닫는다. - debug-hook: 검증용 snap() 창구 추가. state.test.ts 3건 신규. Co-Authored-By: Claude Opus 5 (1M context) --- .../B07_DesignDetail_Engine_Cad_Cover.py | 8 +++- .../src/components/RibbonWidgets.tsx | 14 ++++-- .../openwebcad/src/helpers/autosave.ts | 3 +- .../openwebcad/src/helpers/debug-hook.ts | 4 +- .../src/integration/aislo-drawing-bridge.ts | 3 ++ B07_DesignDetail/openwebcad/src/state.test.ts | 48 +++++++++++++++++++ B07_DesignDetail/openwebcad/src/state.ts | 15 ++++++ 7 files changed, 87 insertions(+), 8 deletions(-) create mode 100644 B07_DesignDetail/openwebcad/src/state.test.ts diff --git a/B07_DesignDetail/B07_DesignDetail_Engine_Cad_Cover.py b/B07_DesignDetail/B07_DesignDetail_Engine_Cad_Cover.py index 28d58b7f..76fe67cb 100644 --- a/B07_DesignDetail/B07_DesignDetail_Engine_Cad_Cover.py +++ b/B07_DesignDetail/B07_DesignDetail_Engine_Cad_Cover.py @@ -30,6 +30,9 @@ from B07_DesignDetail.B07_DesignDetail_Engine_Template import ( ) COVER_TEMPLATE = "00_template_cover" +# 표지는 엔티티가 전부 도각(잠금)이라 그대로 두면 덧그릴 자리가 없다 — 잠금 아닌 +# 도면층을 하나 실어 사용자가 적을 자리를 준다(2026-09-01). +NOTE_LAYER_ID = "b08-cover-note" def build_cover_drawing(drawing_id: str, fields: dict[str, str] | None = None) -> dict[str, Any]: @@ -52,5 +55,8 @@ def build_cover_drawing(drawing_id: str, fields: dict[str, str] | None = None) - return { "format": DRAWING_FORMAT, "entities": entities, - "layers": [_layer(FRAME_LAYER_ID, "도각", locked=True)], + "layers": [ + _layer(NOTE_LAYER_ID, "주기"), + _layer(FRAME_LAYER_ID, "도각", locked=True), + ], } diff --git a/B07_DesignDetail/openwebcad/src/components/RibbonWidgets.tsx b/B07_DesignDetail/openwebcad/src/components/RibbonWidgets.tsx index fe8ece4a..5e303d01 100644 --- a/B07_DesignDetail/openwebcad/src/components/RibbonWidgets.tsx +++ b/B07_DesignDetail/openwebcad/src/components/RibbonWidgets.tsx @@ -117,11 +117,15 @@ export const LayersWidget: FC = () => {