작업내용:
- equalizeSymmetricHips(_apply): const __raw 주석 복원 (라인 6736)
- equalizeParallelEaveLabels(_apply): const __raw 주석 복원 (라인 6808)
- 원인: 이전 ship Python 정리 스크립트의 const __ 정규식이 디버그 변수가 아닌 활성 헬퍼까지 주석처리
Co-Authored-By: Claude Opus 4 <noreply@anthropic.com>
[작업내용] :
- drawGableRoof 후처리: 평행 두 마루가 수직축으로 겹치면(골짜기)
짧은 마루 위치에 겹침구간 박스라인(kerabValleyOverlapLine, 라벨 B) 생성
- drawValleyBoxLine 헬퍼 추가 — 마루 삭제해도 박스 경계 잔존(박스라인+마루)
- 진단 로그([GABLE-H8-*][VALLEY-BOX-FILL]) 주석화 + logger import 제거
Co-Authored-By: Claude Opus 4 <noreply@anthropic.com>
[작업내용] :
- useEavesGableEdit.js 의 import 대상인 kerab-rule-checker.js 가 커밋되지 않아 dev 빌드가 '@/util/kerab-rule-checker' 모듈 해석에 실패하던 문제 수정
- 케라바 기하 불변식 체커(checkKerabRules) 파일을 저장소에 추가
Co-Authored-By: Claude Opus 4 <noreply@anthropic.com>
[작업내용] :
- 마루(RG-1) hide 대신 canvas.remove + innerLines splice 로 실제 삭제
(LABEL-MAP·디버그 라벨이 visible 무시 → hide 는 검증에서 잔존)
- H-8 박스막음: 과길게 뻗은 끝점을 boxCorner 로 내려 H-7↔H-2 사이만
닫는 짧은 세로 roofLine 으로 보정 (\|/ 수렴형상 금지)
Co-Authored-By: Claude Opus 4 <noreply@anthropic.com>
[작업내용] :
- splitRoofLinesToInnerLines 의 hasOverlapLine 가드를 축정렬 bbox 포함 → 공선+구간 덮음으로 교체
- 육각형 등 잘린 모서리의 짧은 수평/수직 처마변(bbox 한 축 두께 0)이 대각선 추녀 bbox 에
삼켜져 skip → 원본 외곽선 transparent 로 소실되던 false positive 제거
- 양 끝점이 모두 상대 선분 위(isPointOnLineNew)일 때만 overlap 인정 → 공선 아닌 추녀는 통과
- 변별/박공/한쪽흐름 경로 회귀 없음(직교 형상은 bbox 포함=공선 겹침이라 동작 불변)
- 설계 문서 §10 진단 결과·수정·회귀 분석 기록
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
[작업내용] :
- e17af8f4 가 색칠된 외벽선을 selectable:false 로 잠가, 지붕형상 저장 후 일반 상태에서 외벽선 클릭 선택이 막히던 회귀 수정
- useRoofShapeSetting(자동) / useRoofShapePassivitySetting(수동) 저장 시 외벽선 selectable:true 로 복원
- 드래그는 lockMovement(useCanvas 전역), 보조선 클릭 가로채기는 z-order(18abbeb9)로 이미 별도 차단되어 부작용 없음
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
切妻(게이블) 골짜기 변을 처마(eaves)로 전환 시:
- collinear 게이블벽(HIP) 제거 후 出幅(offset) surgical 반영
- 양 코너 45° 골짜기 힙 2개 생성, 첫 교차까지 raycast
- cleanupDangling: HIP dangler 만 제거, 마루(RIDGE)·VALLEY 절대 보존
- anchor 잃은 마루 끝점: 가로지르는 힙 있으면 절삭, 없으면 roofLine까지 확장
- 확장 마루가 힙 몸통 닿으면 힙 먼 끝 절삭(힙은 마루를 못 넘음)
- 새 힙이 기존 마루에 직격(hitKind===RIDGE)이면 반대편 Y 반사 힙 생성
Co-Authored-By: Claude Opus 4 <noreply@anthropic.com>