작업내용 :
- validateModuleSizeForRack 내 centerPoints area 산출을
캔버스 측정치(Math.round(width×height))에서
모듈 스펙(longAxis×shortAxis, moduleInfo 경유)으로 변경
- 같은 모듈이라도 캔버스 반올림으로 width 가 73/74 로 갈려
area 가 161 만큼 벌어져 랙 크기순서 위반 오판 → PCS 진입 즉시 에러 유발
- 스펙 치수는 동일 제품이면 항상 동일하므로 diff=0 → 오판 제거
- gap 계산(인접 판정)용 width/height 는 캔버스 측정치 유지 (기하 정확도 보존)
작업내용 :
- isTooCloseToOtherModules(배치·이동 게이트)가 flowDirection 에 무관하게
항상 moduleIntvlVer=세로간격, moduleIntvlHor=가로간격으로 고정해
東/西 흐름 설치면에서 스냅이 横(3mm)으로 붙인 정상 배치를
縦(7mm) 기준으로 오판 거부하던 버그 수정
- 스냅 배치 로직(:824-831)과 동일하게 direction east/west 일 때
gapVer=moduleIntvlHor, gapHor=moduleIntvlVer 로 스왑 적용
- useModuleBasicSetting.js(手動배치), useModule.js(이동) 동기 수정
proceedAnalysis 잔여 병합 same-direction else 분기의 45° hip 판정 버그 수정.
points 는 점 객체 2개 배열인데 points[0]-points[2](없는 인덱스, 객체 뺄셈→NaN)를
points[0].x/y - points[1].x/y 로 교정 → 대각 hip 정상 생성 확인.
Co-Authored-By: Claude Opus 4 <noreply@anthropic.com>
작업내용:
- isTooCloseToOtherModules 헬퍼 이식 (useModule.js [2296-2] 이동 수정과 동일 로직, getBoundingRect strokeWidth 팽창 주의 준수)
- 수동배치 게이트: 외주이격(setupSurface)+겹침 통과 후 縦/横 모듈 간 이격 미달 시 배치 거부 (module.place.out)
- 진단 로그([MODULE-PLACE-DIAG 2026-07-01]) 주석처리
Co-Authored-By: Claude Opus 4 <noreply@anthropic.com>
작업내용:
- 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>