4439 Commits

Author SHA1 Message Date
sangwook yoo
0c1c66f65c chore(debug): 미사용 debugCapture 유틸 제거
LOW-PITCH-DIAG 진단 제거로 debugCapture 사용처가 0 이 되었고, 대상
/api/debug 라우트도 구현된 적이 없어 한 번도 동작하지 않던 죽은 코드다.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-02 18:30:07 +09:00
sangwook yoo
707148ed0f chore(low-pitch): LOW-PITCH-DIAG 임시 진단 로그 제거
/api/debug 라우트가 구현된 적이 없어 debugCapture.log 호출이 매번 404 를
유발하던 콘솔 노이즈를 제거한다. 해당 진단은 주석에 "검증 후 제거"로 표시된
임시 코드였다(앱 동작에는 무영향).

- PlacementShapeSetting.jsx, useRoofAllocationSetting.js 에서 debugCapture
  import 과 LOW-PITCH-DIAG 호출 3건 제거
- 진단 전용으로만 쓰이던 isLowPitchRestricted·LOW_PITCH_RESTRICTED_ROOF_IDS
  import 도 함께 제거(notifyLowPitchRestrictionForRoofs 실기능 import 는 유지)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-02 18:27:06 +09:00
sangwook yoo
654b8d6e08 fix(gemini): 라우트 정리(deleteFile)를 응답에서 분리
finally 에서 await fileManager.deleteFile(...) 가 catch 의 return 을 게이팅해,
정리용 네트워크 호출이 행되면 500 응답조차 클라이언트로 송신되지 않던 문제를 해소한다.

- deleteFile 을 await 하지 않고 fire-and-forget + .catch 로 분리해 응답을 정리 완료에 묶지 않음
- 상주 Node 서버(PM2 next start)이므로 응답 후에도 detached 삭제가 정상 완료되며,
  미삭제 시에도 Gemini 측에서 자동 만료
- 클라이언트 120s 타임아웃과 짝을 이뤄 한쪽이 행되어도 스피너에 갇히지 않음

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-02 17:52:20 +09:00
sangwook yoo
49b2d0940f fix(pdf-import): 클라이언트 분석 타임아웃·스피너 해제 보장
PDF 분석 요청 실패/행(hang) 시 전역 스피너가 영구히 멈춰 화면 복귀가
불가능하던 문제를 해소한다.

- 네트워크 구간을 try/finally 로 감싸 성공·실패·타임아웃 어떤 경로든
  스피너(pdfAnalyzing·isGlobalLoading)를 반드시 해제하도록 보장
- AbortController + 120s 타임아웃으로 무한 행 차단
- alert 은 스피너 해제 후 표시(스피너 z-index 가 alert 보다 높아 가려지는 것 방지)
- pdf.import.error.timeout 메시지 키 추가(ko/ja)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-02 17:52:10 +09:00
sangwook yoo
761c42a637 feat(pdf-import): 분석 신뢰도 게이팅 + 저신뢰 확인 메시지(ko/ja)
- analyzePdfAndApply에서 confidence < 0.6이면 반영 전 useSwal confirm으로 사용자 확인
- pdf.import.confirm.low.confidence 메시지 키 ko/ja 추가

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-01 09:12:15 +09:00
sangwook yoo
0418dd84ee feat(pdf-import): 외곽선 기하 후처리(축정렬 스냅·단순화·자기교차 복구) 추가
- normalizeGeometry 단계 신설: snapNearAxisEdges(축정렬 스냅) → turf.simplify(과다 정점 단순화) → cleanSelfIntersectingPolygon(자기교차 복구)
- applyOuterline의 중복점 제거 직후·fitAndCenter 전에 삽입(스냅→단순화 순서로 축정렬 보존)
- 기존 검증 순수함수 재사용, 신규 의존성 없음

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-01 09:12:14 +09:00
sangwook yoo
afda525be9 feat(gemini): 屋根伏図 지붕투영면 외곽선 추출 프롬프트 강화 + media_resolution HIGH
- BASE_PROMPT를 지붕 투영면(屋根伏図 footprint) 기준으로 재작성: 屋根伏図 우선(처마/케라바 포함), 立面図/配置図/求積図/断面図 배제, 도머/개구부 제외
- 寸法線 mm 1순위 축척 규칙, 910/1820mm 모듈 단서, L자/직각 형상 보존 규칙 추가
- generationConfig에 mediaResolution: MEDIA_RESOLUTION_HIGH 추가(미지원 SDK 시 무시), usageMetadata 로깅
- FLOOR_PLAN_SCHEMA 및 응답에 selectedDrawingType 추가

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-01 09:12:13 +09:00
sangwook yoo
0187b234fb Revert: PDF 도면 파일 업로드 라디오 옵션 재표시
배치면 초기설정 팝업에서 '도면 파일 업로드' 옵션 주석 처리를 해제하여 다시 노출.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-27 18:17:02 +09:00
sangwook yoo
f8641079e6 Disable PDF input mode option 2026-05-27 17:54:49 +09:00
sangwook yoo
6a99b6de4a Merge remote-tracking branch 'origin/dev' into feature/pv-btob 2026-05-27 16:56:33 +09:00
a4b7f519bb [2173] valleyExt TRIM — hip-presence 원래hip-only + cascade hide 2026-05-27 16:18:33 +09:00
e9f5ceab69 [2173] 골짜기확장라인 TRIM 재활성 + Y junction 보존 + 끝점일치 보존 2026-05-27 15:20:55 +09:00
sangwook yoo
79aafbd613 Merge remote-tracking branch 'origin/dev' into claude/lucid-shaw-91e51f 2026-05-27 14:41:26 +09:00
5ba5623d46 [2173] 골짜기확장라인 self-extension 모델 + TRIM/FIXPOINT-cuts off — 확장만 2026-05-27 13:58:26 +09:00
8d7ffdc957 [2173] KERAB-OFFSET-SURGICAL flag ON — 케라바 토글 出幅 surgical 반영 활성화 2026-05-27 10:09:52 +09:00
f5f8eb9460 [2173] 처마/케라바 토글 KERAB-SIMPLE 알고리즘 + offset-surgical helper(flag off) 2026-05-27 10:03:56 +09:00
sangwook yoo
f8467879a8 Merge remote-tracking branch 'origin/dev' into claude/lucid-shaw-91e51f 2026-05-20 09:41:37 +09:00
sangwook yoo
849f7a1dc9 feat(pdf-gemini): 배치면 초기설정에 PDF 도면 업로드 옵션 추가 — Gemini 외곽선 분석
- 「배치면 초기설정」 모달 寸法入力方法 라디오에 '도면 파일 업로드' 옵션 추가
- 선택 시 PDF 파일 업로드 + 읽기 페이지 설정(전체/입면도·평면도 지정) UI 노출
- 保存 클릭 시 /api/gemini/floor-plan 호출 → 외곽선을 캔버스에 반영한 후 기존 저장 흐름 진행
- Gemini File API 업로드 + finally 파일 폐기, 정점/면적 검증, 페이지 힌트 프롬프트 주입
- usePdfImport 훅: mm→canvas 좌표 변환, CCW 정규화, 기존 외곽선 덮어쓰기 confirm 후 QLine/QPolygon 생성
- @google/generative-ai 의존성 추가, GEMINI_MODEL env 4개 환경에 동기화
- 다국어(ja/ko) 메시지 추가, .playwright-mcp/ gitignore

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-20 09:39:41 +09:00
dc857b28fa [2173] junction-extended 패턴 outer hip 제거 + strokeWidth SK와 통일
[작업내용] :
- 대전제 반영: 케라바 ridge 가 생기는 분기에서 c1·c2 에 붙은 outer hip 2개 제거
  · inner hip(junction 너머) 보존
  · __removedHipsSnapshot 첨부 → revert 시 hip 2개 자동 복원
- revert 분기에서 hip 스냅샷 + ridge 스냅샷 둘 다 순회 복원하도록 대칭 보강
- 케라바 패턴 생성 라인 strokeWidth 2 → 4 (SK 라인과 동일, 6개소)
2026-05-20 08:46:43 +09:00
eb12b24138 [2173] 처마→케라바 junction-extended 패턴 + RG-1 자동 제거
[작업내용] :
- findHipPairViaJunction: H-7/H-1 의 junction 너머 inner hip(H-4/H-2) 무한확장 교점을 apex 채택
- applyKerabJunctionExtendedPattern (순수 추가):
  · ext hip 2개(junction→apex) + 중앙 ridge(mid→apex) 추가
  · ridgeEndpointsOnBothExtensions 로 RG-1 식별 → 스냅샷 첨부 후 제거 (RG-2 보존)
- applyKerabRevertPattern: __removedRidgesSnapshot(배열) 반복 복원으로 forward 와 대칭
- useRoofAllocationSetting: 분할 직전/후 패턴 라인 진단 로그(KERAB-PATTERN-DIAG)
2026-05-19 17:12:48 +09:00
35ba41a104 탭에 path제거 2026-05-19 12:32:48 +09:00
e74604d3f9 [2240] 손상 plan 좌표 가드/복원 — 로드 가드+저장 차단+복원 자동호출 2026-05-18 16:19:37 +09:00
f32f9187d1 [DB] 컬럼 길이 가드 — addressee 합산 50자 + receiveUser 20자 클립 2026-05-18 15:00:20 +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
905b51b865 [1423] 2차 user 판매점 select 항상 enable + 設計依頼 매핑 실패 시 본인 초기화 2026-05-15 12:19:15 +09:00
bfd9d446a3 [1423] 2차 user 판매점 select 항상 enable + 設計依頼 매핑 실패 시 본인 초기화 2026-05-15 11:09:28 +09:00
e915a386cc [1423] 設計依頼 import 매핑 정책 롤백 — StuffDetail.jsx 7e9ec4e3 복원
운영 배포 후 문제 보고로 PLANREQ-MATCH 2026-05-12 재정의 직전 안정 버전으로 되돌림.
2026-05-15 10:03:23 +09:00
f6652acbd7 2차 로그정리 2026-05-14 17:26:11 +09:00
347536e87a 2차 로그정리 2026-05-14 17:21:46 +09:00
042cdc4b83 1차 로그주석처리 2026-05-14 17:04:43 +09:00
91321745d4 [1423] 設計依頼 import 매핑 정책 재정의 — 미매칭 시 로그인 초기값 reset 2026-05-14 16:29:38 +09:00
7e9ec4e3f2 로그 수정 2026-05-14 14:55:05 +09:00
d60bf27778 로그 수정 2026-05-14 14:49:41 +09:00
281d9bb583 로그 수정 2026-05-14 14:38:27 +09:00
ccca89fef6 [2218] 초기 비밀번호 설정 메시지 수정 2026-05-14 14:32:07 +09:00
9a10186c17 [2218] 초기 비밀번호 설정 메시지 수정 2026-05-14 13:21:54 +09:00
490ab6c49f [1961] split 길이 계산 Math.round(hypot)*10 → calcLinePlaneSize 통일 — 좌우대칭 hip 라벨 1mm 갈림 차단 2026-05-14 10:36:11 +09:00
aac4f1fb50 [VALLEY-SKIP] isValleyVertex 노치 top_in 잘못된 eaveHelpLine 4개 차단 — zero-length neighbor + collinear continuation 2단 가드 2026-05-13 16:43:13 +09:00
25d2fbe419 [2210] 초기 비밀번호 설정 메시지 수정 2026-05-13 16:39:30 +09:00
77bca24e7c [SK-EXTENDED-PERSIST] hip __extended 플래그 save/load 보존 — attributes.extended 동기 + console→logger 2026-05-13 14:27:06 +09:00
cd95b68d96 Merge branch 'dev' of https://git.hanasys.jp/qcast3/qcast-front into hotfix/dev_yscha 2026-05-13 12:16:23 +09:00
a332737654 [RACK-TILT] removeShortEdges 직각 노치 변형 차단 — tiny edge 머지 시 axis-aligned 가드 2026-05-13 12:14:42 +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
76a53c64d9 [1961] strict y1===y2 drift 2곳 수정 — tolerance 0.5 통일 2026-05-12 17:25:17 +09:00
2aef32e03c [2204] 0-면적 개구/그림자/도머 차단 — SizeSetting 입력 가드 + 손상 plan 로드 skip 2026-05-08 17:48:37 +09:00
a5e794b3ec [2204] 손상 plan InvalidStateError 3단 방어 (entry/cache/save guard) 2026-05-08 17:39:58 +09:00
8192f0929a [オブジェクト選択不可] ObjectSetting 모달 닫힘 시 roof selectable 원복 cleanup 추가 2026-05-08 17:35:55 +09:00
6a34fe53c6 [견적서] 1차 판매점명 행 노출 조건 보정 — storeLvl === '1' 일 때만 표시 2026-05-07 14:35:44 +09:00
ae2ba0add5 [755] 객체 선택 시 Del/Backspace 즉시 삭제 2026-05-07 11:14:09 +09:00