474 Commits

Author SHA1 Message Date
0d32f84ad7 [1514_2] ㅗ형 박공 마루 미생성 수정 — overlap-clamp 끊긴 inner 끝점을 힙 seed 교점까지 연장 2026-07-02 09:41:07 +09:00
ccbc61bf8d [1514_1] fix — ㄹ자 다각형 처마→케라바 변경 시 내부 힙(H-3) 미생성 수정
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>
2026-07-01 17:01:53 +09:00
d562d02413 [2173] ship 후속 수정 — const __raw 과잉 주석처리 복원
작업내용:
- equalizeSymmetricHips(_apply): const __raw 주석 복원 (라인 6736)
- equalizeParallelEaveLabels(_apply): const __raw 주석 복원 (라인 6808)
- 원인: 이전 ship Python 정리 스크립트의 const __ 정규식이 디버그 변수가 아닌 활성 헬퍼까지 주석처리

Co-Authored-By: Claude Opus 4 <noreply@anthropic.com>
2026-06-29 17:33:39 +09:00
8c30c3c2bb [2173] 케라바 처마→박공 마루 미생성 수정 — 잔여단계 순서무관 연결성 판정으로 일반화
작업내용:
- drawRoofByAttribute otherIs-replace 블록: intersect===analyze.end 일치 시 zero-length 붕괴를 farEnd(교차점에서 먼 끝점) 보존으로 수정(Fix-A)
- wall-merge-residual: baseLines.length===4 하드코딩+순서의존 point-count 게이트를 제거, 잔여라인 전체 끝점(innerLines+residualLines) 기반 순서무관 연결성(startAnchored/endAnchored) 판정으로 교체(Fix-B) — ㄱ자(6변) 등 임의 다각형 마루 네트워크 지원
- sharedCnt/dup tolerance 0.5 적용(UI drift 대응)
- KERAB-GABLE-DIAG 진단 로그 전체 주석처리(재활용 가능하도록 삭제 안 함)
2026-06-29 16:11:53 +09:00
157828e29f [최종수정 _N] 케라바 라인변경 보조 변경 — kerab-rule-checker 出幅(출폭) 겹침 밴드 검증 보강 + QPolygon 디버그 수치 라벨 + qpolygon-utils 보정
Co-Authored-By: Claude Opus 4 <noreply@anthropic.com>
2026-06-29 13:35:13 +09:00
e79ee3dc52 [골짜기] 박공→처마 변환 시 골짜기 roofLine 보존 + R8 힙·수평 roofLine 생성
- gableWallLines 필터 + cleanupDangling에서 lineName='roofLine' 제외 — 골짜기 외곽선 삭제 방지
- snapRoofLineCorner: 出幅 이동 코너에 맞춰 인접 세로 roofLine(L-1/L-3) 끝점 갱신
- 변환변 수평 roofLine(L-8) 신규 생성(중복 가드 포함)
- R8: 인접 처마 코너에서 > 완성 힙 생성
- QPolygon 라벨 체계 개편(L/H/W/R/HE/B) + classifyLineForLabel 공개화
- isHip에 isDiagonalHip 가드 — 축정렬 hip 오분류 방지
- drawRoofLine에 lineName='roofLine' 부여 — purge 제외·라벨 L 보장

Co-Authored-By: Claude Opus 4 <noreply@anthropic.com>
2026-06-25 14:04:32 +09:00
db7ea8c676 [골짜기마루] A타입 생성 시 골짜기 박스라인(B) 추가 — 마루와 별개로 出幅 겹침 경계 유지
[작업내용] :
- drawGableRoof 후처리: 평행 두 마루가 수직축으로 겹치면(골짜기)
  짧은 마루 위치에 겹침구간 박스라인(kerabValleyOverlapLine, 라벨 B) 생성
- drawValleyBoxLine 헬퍼 추가 — 마루 삭제해도 박스 경계 잔존(박스라인+마루)
- 진단 로그([GABLE-H8-*][VALLEY-BOX-FILL]) 주석화 + logger import 제거

Co-Authored-By: Claude Opus 4 <noreply@anthropic.com>
2026-06-24 14:45:50 +09:00
eb18d0e1ac [2294] fix: 누락된 kerab-rule-checker.js 추가 — dev 빌드 module not found 해결
[작업내용] :
- useEavesGableEdit.js 의 import 대상인 kerab-rule-checker.js 가 커밋되지 않아 dev 빌드가 '@/util/kerab-rule-checker' 모듈 해석에 실패하던 문제 수정
- 케라바 기하 불변식 체커(checkKerabRules) 파일을 저장소에 추가

Co-Authored-By: Claude Opus 4 <noreply@anthropic.com>
2026-06-23 18:05:18 +09:00
c3c90925cd H-8 가드 2026-06-23 16:55:16 +09:00
48532fa226 Merge branch 'dev' of https://git.hanasys.jp/qcast3/qcast-front into hotfix/dev_yscha 2026-06-23 16:01:24 +09:00
d5b2426596 [A타입] 지붕생성 노치 결합면 중복 roofLine 스킵 가드 추가 — H-8 과길이(마루 위 겹침) 수정 2026-06-23 15:54:22 +09:00
cc6c734250 보조선 사이즈 변경 후 지붕면 할당 시 할당 제대로 안되는 현상 수정 2026-06-23 14:22:46 +09:00
Jaeyoung Lee
45a3199fba fix: 용마루 비직교 형상 외곽 지붕선 소실 수정
[작업내용] :
- 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>
2026-06-22 13:07:20 +09:00
3a51f1e208 Merge branch 'dev' of https://git.hanasys.jp/qcast3/qcast-front into feature/roofline-edit2 2026-06-16 17:28:04 +09:00
1e0124d9f2 [2294_5] 케라바 사각형 결정론적 솔버 + 처마전면 지붕면 할당 수정
- solveRectangleKerab: 4변 타입만으로 힙/마루 재생성(forward·revert 단일 공식)
- nGable=0 우진각·1 Y apex·1 CASE B 케라바·2 맞배 지원, 그 외 기존 maze 폴백
- hip attributes.extended=true 부여 → integrateExtensionLines merge 스킵 → split 4면 정상 할당
- outerLine bbox 기준 sideOf 수정(出幅 offset 좌표 불일치 해소)
- apex depth clamp min(L/2, oppDist) → R3-outside 방지
- detectKerabHipMarks·extendKerabHipsTo45 함수 추출(reclick·revert 45° 통합)
- KERAB-EXTHIP-COORD-CLEAN: orphan ext-hip 좌표 기반 재제거
- useRefFiles: 변환 API FileData 누락 시 에러 메시지 swalFire 안내
- kerab-offset-surgical: skipKerabHips 옵션(케라바 hip t-ratio 재계산 방지)

Co-Authored-By: Claude Opus 4 <noreply@anthropic.com>
2026-06-15 16:01:11 +09:00
591c828bcf Merge branch 'feature/roofline-edit' of https://git.hanasys.jp/qcast3/qcast-front into feature/roofline-edit2
# Conflicts:
#	src/hooks/roofcover/useRoofShapePassivitySetting.js
2026-06-15 13:18:21 +09:00
Jaeyoung Lee
07f787670d feat: 한쪽흐름(shed) 외곽 처마선 편집 + 처마선 치수 중복 정리
[작업내용] :
- splitRoofLinesToInnerLines: degreeOf 옵션 추가 — 한쪽흐름 경사변(gable) plane/cos 실제길이 보정
- drawShedRoof: 외곽 처마선을 innerLine 으로 split(degreeOf 주입)해 편집 가능화
- removeRoofLengthText 추가: 처마선 innerLine 이 치수 전담 → roof 원본 변 치수(lengthText) 제거 (박공/split 공용)
- drawGableRoof: removeRoofLengthText 호출로 박공 roof 원본 치수 중복 제거
- commonDeleteText: 보조선(QLine) 삭제 시 parentId 매칭으로 lengthText 동반 제거 (치수 잔존 방지)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-15 13:10:10 +09:00
Jaeyoung Lee
fd83fa3aa0 fix: 박공(gable) 지붕도 처마선 외곽 전담 시 roof 원본 외곽선 숨김
[작업내용] :
- drawGableRoof 가 처마선 innerLine 생성(roof.innerLines.push) 후 roof 원본 외곽(stroke)을 transparent 로 숨김
- 박공은 split 공용 함수를 거치지 않으므로 drawGableRoof 내에서 직접 처리
- 처마선 삭제 시 roof 기본 stroke:'black' 이 노출되던 문제 해결 (변별/용마루와 동일 동작)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-12 14:57:38 +09:00
Jaeyoung Lee
53ecbcca0f fix: 처마선 split 시 roof 원본 외곽선 숨김을 공용 함수로 통합
[작업내용] :
- splitRoofLinesToInnerLines 가 처마변 innerLine화 후 roof 원본 외곽(stroke)을 transparent 로 숨기도록 통합
- 변별/용마루 양 경로 공통 적용 — 처마선 삭제 시 roof 기본 stroke:'black' 이 노출되던 문제 해결
- 용마루 호출부(skeletonBuilder)의 개별 roof.set 제거 (split 함수가 담당)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-12 14:45:12 +09:00
48fa507046 Merge branch 'dev' of https://git.hanasys.jp/qcast3/qcast-front into feature/redo-undo
# Conflicts:
#	src/hooks/module/useModule.js
#	src/hooks/roofcover/useEavesGableEdit.js
#	src/hooks/useCanvasEvent.js
2026-06-12 14:20:29 +09:00
Jaeyoung Lee
87545e5df1 feat: 용마루(skeleton) 지붕 외곽 처마선 편집 기능
[작업내용] :
- 추녀 연장(drawBaselineToRooflineHelpers) 후 splitRoofLinesToInnerLines 호출 → 처마변을 편집 가능한 innerLine(hip/roofLine)으로 등록
- 처마선 innerLine 이 외곽선을 전담하므로 roof 원본 외곽(stroke) 숨김 처리
- 설계 문서 정정: 대상 브랜치 roofline-edit, §4 리스크1 검증 완료, §9 측정 시점 정정
  (추녀 연장 후 종점이 처마변 위에 정합 → split 은 연장 다음에 호출)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-12 13:58:15 +09:00
Jaeyoung Lee
1bf5f45b63 refactor: 처마변 split 로직 splitRoofLinesToInnerLines 공용 함수 추출
[작업내용] :
- drawRoofByAttribute 의 인라인 split 블록을 splitRoofLinesToInnerLines 공용 함수로 추출 (변별/용마루 경로 공용)
- 분할점 거리순 정렬 버그 수정 (a[1] → a.distance — 분할점 2개 이상에서 정렬이 no-op 이던 문제)
- 분할점 끝점 판정을 almostEqual(1e-10) → 끝점과의 유클리드 거리 1px 이내 제외로 변경
  (SK 추녀 연장의 부동소수 오차 흡수, 0 길이 조각 생성 방지)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-12 13:58:08 +09:00
1cb039a741 [2294_2] 케라바→처마 전환(타입 라인변경) 힙 단일 직선 45° 연장으로 통일
Co-Authored-By: Claude Opus 4 <noreply@anthropic.com>
2026-06-12 09:27:55 +09:00
1db206fe34 [2294_1] 케라바 出幅(출폭) 토글 라인 재계산 핸들러 분리 + 규칙 검증 추가
골짜기(케라바 패턴)·일반 라인을 독립 핸들러로 분리해 상호 간섭(whack-a-mole) 차단.
일반 라인은 절대 재계산(apex 불변, roofLine-hit 끝점만 재교차) + apex junction degree≥1 임계.
KERAB-RULE-CHECK(R1~R4) forward/revert 검증, RIDGE-DIAG 자연 마루 길이 불변 감시 추가.
REVERT/VALLEY-EXT 끝점 공유 가드로 게이블 hip 확장·길이 0 붕괴 방지.

Co-Authored-By: Claude Opus 4 <noreply@anthropic.com>
2026-06-10 18:05:36 +09:00
f6b0cf714e Merge branch 'dev' of https://git.hanasys.jp/qcast3/qcast-front into feature/redo-undo
# Conflicts:
#	src/hooks/surface/usePlacementShapeDrawing.js
#	src/hooks/surface/useSurfaceShapeBatch.js
2026-06-09 09:58:24 +09:00
6e144d7d04 Merge branch 'dev' of https://git.hanasys.jp/qcast3/qcast-front into feature/redo-undo
# Conflicts:
#	src/components/fabric/QPolygon.js
#	src/hooks/roofcover/useEavesGableEdit.js
#	src/hooks/roofcover/useRoofAllocationSetting.js
2026-06-05 14:39:23 +09:00
b9fb769e74 [출폭] 처마 출폭변경 시 hip 내부라인 끝점 불변 룰 적용 — CORNER-SHORTCUT/SHRINK-TRIM skipInnerLines + 45° ray-cast 확장
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-06-05 13:43:02 +09:00
ddf7cb9f13 [1423] 설계가져오기 T01 전용 + 2차점 강제 select 반영 — No data/네트워크 에러 분리 + vExt cascade 평행이동 2026-06-05 11:00:29 +09:00
8192b0b07f [0000] 케라바 라인이동 후 반대쪽 실행 버그 수정 — baseLine 기하학적 매칭 + KERAB-SKIP 가드
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-04 17:48:44 +09:00
a8d59873b7 [1961] 평행 처마 쌍 라벨 통일 — OVER_EPS 1mm 클램프 보정 equalizeParallelEaveLabels
Co-Authored-By: Claude Opus 4 <noreply@anthropic.com>
2026-06-04 17:01:11 +09:00
c2d8aeb572 [2089] useSwal alert html 지원 + 저구배 경고 줄바꿈 수정
- useSwal alert 분기에 html 옵션 지원 추가 (html 있으면 html, 없으면 text)
- roof-pitch-warning: text → html + \n을 <br>로 치환하여 줄바꿈 렌더링
- ja.json: 構造物 → 架台 용어 수정 + \n 추가
- ko.json: 문구 다듬기 + \n 추가
2026-06-04 09:46:47 +09:00
8ef0810058 [2294] 케라바 출폭 surgical — vExt cascade + corner snap + ExtRidge 연결 2026-06-02 16:58:54 +09:00
a452ea8f94 Merge branch 'dev' of https://git.hanasys.jp/qcast3/qcast-front into feature/redo-undo
# Conflicts:
#	src/hooks/roofcover/useEavesGableEdit.js
2026-06-01 17:19:53 +09:00
141afa7a36 [2294] 케라바 출폭 surgical — skLine 절삭/복원 + 패턴 segment 매핑 2026-06-01 13:53:05 +09:00
c121937525 Merge branch 'dev' of https://git.hanasys.jp/qcast3/qcast-front into feature/redo-undo
# Conflicts:
#	src/hooks/roofcover/useEavesGableEdit.js
#	src/hooks/roofcover/useRoofAllocationSetting.js
2026-05-29 17:49:02 +09:00
e32d2dc3a5 [2173] 케라바 vExt — stop·V apex trim·overlap 머지·offset bbox 2026-05-29 16:02:51 +09:00
7fe1cca02a Merge branch 'dev' of https://git.hanasys.jp/qcast3/qcast-front into feature/redo-undo
# Conflicts:
#	package.json
#	src/hooks/roofcover/useEavesGableEdit.js
#	src/hooks/useCanvasEvent.js
#	src/styles/_contents.scss
2026-05-28 17:04:16 +09:00
e1dbbf74de Merge branch 'dev' of https://git.hanasys.jp/qcast3/qcast-front into feature/redo-undo
# Conflicts:
#	src/components/fabric/QPolygon.js
#	src/hooks/module/useModule.js
#	src/hooks/roofcover/useEavesGableEdit.js
#	src/hooks/roofcover/useRoofAllocationSetting.js
#	src/hooks/usePlan.js
2026-05-27 10:52:46 +09:00
f5f8eb9460 [2173] 처마/케라바 토글 KERAB-SIMPLE 알고리즘 + offset-surgical helper(flag off) 2026-05-27 10:03:56 +09:00
eaae0f4a84 [1961] hip 라벨 정합성 — SK↔할당 일치 + 0.5 step 표시 통일 2026-05-18 12:41:55 +09:00
116953ee2f 소스정리 2026-05-15 12:28:32 +09:00
347536e87a 2차 로그정리 2026-05-14 17:21:46 +09:00
042cdc4b83 1차 로그주석처리 2026-05-14 17:04:43 +09:00
7e9ec4e3f2 로그 수정 2026-05-14 14:55:05 +09:00
281d9bb583 로그 수정 2026-05-14 14:38:27 +09:00
aac4f1fb50 [VALLEY-SKIP] isValleyVertex 노치 top_in 잘못된 eaveHelpLine 4개 차단 — zero-length neighbor + collinear continuation 2단 가드 2026-05-13 16:43:13 +09:00
77bca24e7c [SK-EXTENDED-PERSIST] hip __extended 플래그 save/load 보존 — attributes.extended 동기 + console→logger 2026-05-13 14:27:06 +09:00
4f120e6e11 [1956-RACK-TILT] 빨강 점선(가대선/モジュール配置領域) 가로/세로 축 스냅
closing edge 의 FP drift 누적(15mm/576mm ≈ 1.5°) 으로 가로/세로 라인이
기울어 보이는 문제. snapNearAxisEdges(angleTolDeg=2) 각도 기반 스냅을
4종 폴리곤(trestle/dormerTrestle/trestlePolygon/moduleSetupSurface) 에 적용.

- QPolygon.initialize name 가드: load/new 대부분 케이스 커버
- handleOuterlinesTest 끝 snap: trestlePolygon 은 makePolygon 후 .set 이라 별도

#1956 (vertical tilt, 2026-04-08) 의 horizontal 형제 케이스.
2026-05-13 10:35:16 +09:00
2074c4aa93 Merge branch 'dev' of https://git.hanasys.jp/qcast3/qcast-front into feature/redo-undo
# Conflicts:
#	src/components/floor-plan/modal/auxiliary/AuxiliaryEdit.jsx
2026-05-07 09:53:11 +09:00
dd5fea7f21 cluade 2026-05-06 18:06:48 +09:00