From 22835ca9e2f1793cd7c16bd97a25ba3082625a7d Mon Sep 17 00:00:00 2001 From: umsangdon Date: Mon, 28 Sep 2026 10:02:41 +0900 Subject: [PATCH] =?UTF-8?q?fix(M02):=20=EC=A7=91=EA=B3=84=ED=91=9C=20?= =?UTF-8?q?=EC=97=B4=20=EA=B3=A0=EB=A5=B8=20=EB=92=A4=20CAD=20=EB=B6=88?= =?UTF-8?q?=EB=9F=AC=EC=98=A4=EA=B8=B0=20=EC=A3=BD=EB=8A=94=20=EC=9E=90?= =?UTF-8?q?=EB=A6=AC=20=EA=B3=A0=EC=B9=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit M02_MasterTemplete_UI_Main.ts 의 표 onSelect 가 `sheet?.getDoc().열 ?? []` 로 짜여 있었음 — 옵셔널 체이닝이 `sheet?.getDoc()` 까지만 걸리고 그 뒤 `.열` 은 그대로라, [다시 열기](재열기)가 drop() 으로 sheet 를 null 로 되돌린 그 짧은 사이에 옛 표 부품에 남은 클릭 이벤트가 이 줄을 부르면 `undefined.열` 을 읽어 죽음 (사용자 보고: 여러 열 · 빠르게 바꿔 고르기 · 새로 고친 직후에 CAD 불러오기 오류). `.열` 앞에도 `?.` 를 이어 붙여 sheet 가 없으면 조용히 빈 배열로 감 — 그 뒤 StructurePanel.show() 는 이미 빈 배열 · 없는 colId 를 안전하게 처리함. ORCA 로 정상 경로(열 고르면 도면 정보 패널이 오류 없이 뜸)는 확인함 — 이 브라우저 환경이 오늘 자주 끊겨(Tab was closed while command was running, crashpad 등록 실패가 매 명령마다 뜸) 경합(레이스) 그 자체의 재현까지는 못 잡음. 원인은 코드를 끝까지 읽어 확인함(정황 증거 아님). Co-Authored-By: Claude Sonnet 5 Claude-Session: https://claude.ai/code/session_01K7JS47SacjPxZ718QsZKyr --- M02_MasterTemplete/M02_MasterTemplete_UI_Main.ts | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/M02_MasterTemplete/M02_MasterTemplete_UI_Main.ts b/M02_MasterTemplete/M02_MasterTemplete_UI_Main.ts index 53f66bbd..bd6a3251 100644 --- a/M02_MasterTemplete/M02_MasterTemplete_UI_Main.ts +++ b/M02_MasterTemplete/M02_MasterTemplete_UI_Main.ts @@ -171,8 +171,12 @@ export function createMain(isAdmin: boolean, onSaved?: () => void): MainHandle { ...(struct ? { drawingLabel: (colId: string) => struct.numbers()[colId] ?? "", + // ⚠ sheet 는 바깥(다시 열기 등으로 drop() 이 null 로 되돌리는) 값 — 표 부품이 + // 헐린 뒤에도 안 떼인 이벤트가 이 줄을 부르면 sheet?.getDoc() 가 undefined 라 + // 그 뒤 .열 을 그대로 읽으면 죽는다(2026-09-28 사용자 보고 — 열 고른 뒤 CAD + // 불러오기 오류). getDoc() 뒤에도 옵셔널 체이닝을 이어야 한다. onSelect: (s: { colId: string | null }) => - struct.show(s.colId, sheet?.getDoc().열 ?? []), + struct.show(s.colId, sheet?.getDoc()?.열 ?? []), } : {}), });