Compare commits

..

2 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
3 changed files with 2 additions and 83 deletions

View File

@ -28,9 +28,7 @@ import { logger } from '@/util/logger'
import { QcastContext } from '@/app/QcastProvider' import { QcastContext } from '@/app/QcastProvider'
// [LOW-PITCH-WARN 2026-05-06] + alert // [LOW-PITCH-WARN 2026-05-06] + alert
import { useSwal } from '@/hooks/useSwal' import { useSwal } from '@/hooks/useSwal'
import { notifyLowPitchRestrictionForRoofs, isLowPitchRestricted, LOW_PITCH_RESTRICTED_ROOF_IDS } from '@/util/roof-pitch-warning' import { notifyLowPitchRestrictionForRoofs } from '@/util/roof-pitch-warning'
// [LOW-PITCH-DIAG 2026-05-06 TEMP] import +
import { debugCapture } from '@/util/debugCapture'
const INPUT_MODE = { const INPUT_MODE = {
SIZE_ROOF: '1', SIZE_ROOF: '1',
@ -399,15 +397,6 @@ export default function PlacementShapeSetting({ id, pos = { x: 50, y: 180 }, pla
index: 0, index: 0,
} }
// [LOW-PITCH-DIAG 2026-05-06 TEMP]
debugCapture.log('LOW-PITCH-DIAG handleSaveBtn', {
roofMatlCd: roofInfo.roofMatlCd,
pitch: roofInfo.pitch,
angle: roofInfo.angle,
idMatched: LOW_PITCH_RESTRICTED_ROOF_IDS.has(roofInfo.roofMatlCd),
restricted: isLowPitchRestricted(roofInfo),
})
// [LOW-PITCH-WARN 2026-05-06] 6 + (2 < 2.5 OR 11.31 < 14.04) alert. OK // [LOW-PITCH-WARN 2026-05-06] 6 + (2 < 2.5 OR 11.31 < 14.04) alert. OK
await notifyLowPitchRestrictionForRoofs([roofInfo], swalFire, getMessage) await notifyLowPitchRestrictionForRoofs([roofInfo], swalFire, getMessage)

View File

@ -33,9 +33,7 @@ import { useText } from '@/hooks/useText'
import { QLine } from '@/components/fabric/QLine' import { QLine } from '@/components/fabric/QLine'
import { calcLineActualSize2 } from '@/util/qpolygon-utils' import { calcLineActualSize2 } from '@/util/qpolygon-utils'
// [LOW-PITCH-WARN 2026-05-06] 저구배 + 특정 기와 사용 시 시공 매뉴얼 안내 alert // [LOW-PITCH-WARN 2026-05-06] 저구배 + 특정 기와 사용 시 시공 매뉴얼 안내 alert
import { notifyLowPitchRestrictionForRoofs, isLowPitchRestricted, LOW_PITCH_RESTRICTED_ROOF_IDS } from '@/util/roof-pitch-warning' import { notifyLowPitchRestrictionForRoofs } from '@/util/roof-pitch-warning'
// [LOW-PITCH-DIAG 2026-05-06 TEMP] 진단용 — 검증 후 import + 호출 함께 제거
import { debugCapture } from '@/util/debugCapture'
import { logger } from '@/util/logger' import { logger } from '@/util/logger'
export function useRoofAllocationSetting(id) { export function useRoofAllocationSetting(id) {
@ -312,18 +310,6 @@ export function useRoofAllocationSetting(id) {
* 선택한 지붕재로 할당 * 선택한 지붕재로 할당
*/ */
const handleSave = async () => { const handleSave = async () => {
// [LOW-PITCH-DIAG 2026-05-06 TEMP] 진단용 — 검증 후 제거
debugCapture.log('LOW-PITCH-DIAG handleSave', {
count: currentRoofList?.length,
list: currentRoofList?.map((r) => ({
roofMatlCd: r.roofMatlCd,
pitch: r.pitch,
angle: r.angle,
idMatched: LOW_PITCH_RESTRICTED_ROOF_IDS.has(r.roofMatlCd),
restricted: isLowPitchRestricted(r),
})),
})
// [LOW-PITCH-WARN 2026-05-06] 등록된 모든 지붕재에 대해 6종+저구배 검사 후 안내 alert. OK 누르면 저장 진행 // [LOW-PITCH-WARN 2026-05-06] 등록된 모든 지붕재에 대해 6종+저구배 검사 후 안내 alert. OK 누르면 저장 진행
await notifyLowPitchRestrictionForRoofs(currentRoofList, swalFire, getMessage) await notifyLowPitchRestrictionForRoofs(currentRoofList, swalFire, getMessage)
@ -366,18 +352,6 @@ export function useRoofAllocationSetting(id) {
* 지붕재 오른쪽 마우스 클릭 단일로 지붕재 변경 필요한 경우 * 지붕재 오른쪽 마우스 클릭 단일로 지붕재 변경 필요한 경우
*/ */
const handleSaveContext = async () => { const handleSaveContext = async () => {
// [LOW-PITCH-DIAG 2026-05-06 TEMP] 진단용 — 검증 후 제거
debugCapture.log('LOW-PITCH-DIAG handleSaveContext', {
count: currentRoofList?.length,
list: currentRoofList?.map((r) => ({
roofMatlCd: r.roofMatlCd,
pitch: r.pitch,
angle: r.angle,
idMatched: LOW_PITCH_RESTRICTED_ROOF_IDS.has(r.roofMatlCd),
restricted: isLowPitchRestricted(r),
})),
})
// [LOW-PITCH-WARN 2026-05-06] 등록된 모든 지붕재에 대해 6종+저구배 검사 후 안내 alert. OK 누르면 저장 진행 // [LOW-PITCH-WARN 2026-05-06] 등록된 모든 지붕재에 대해 6종+저구배 검사 후 안내 alert. OK 누르면 저장 진행
await notifyLowPitchRestrictionForRoofs(currentRoofList, swalFire, getMessage) await notifyLowPitchRestrictionForRoofs(currentRoofList, swalFire, getMessage)

View File

@ -1,44 +0,0 @@
// util/debugCapture.js
// 디버그 모드에서 상태/오브젝트를 파일로 저장하고 Claude가 읽을 수 있게 함
// 사용법:
// import { debugCapture } from '@/util/debugCapture'
// debugCapture.state('rackInfos', rackInfos) // 오브젝트 스냅샷 저장
// debugCapture.error('fetchFailed', error, context) // 에러 저장
// debugCapture.log('step label', someData) // 로그 저장
const isLoggingEnabled = process.env.NEXT_PUBLIC_ENABLE_LOGGING === 'true'
async function send(type, label, data) {
if (!isLoggingEnabled || typeof window === 'undefined') return
try {
await fetch('/api/debug', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ type, label, data, timestamp: new Date().toISOString() }),
})
} catch {}
}
export const debugCapture = {
// 오브젝트/상태 스냅샷 - debug/debug-snapshot.json 에 저장
state: (label, obj) => send('snapshot', label, obj),
// 에러 캡처 - debug/debug-errors.json 에 저장
error: (label, error, context = null) =>
send('error', label, {
message: error?.message ?? String(error),
stack: error?.stack ?? null,
context,
}),
// 일반 로그 - debug/debug.log 에 저장
log: (label, data) => send('log', label, data),
// 디버그 파일 전체 초기화
clear: async () => {
if (!isLoggingEnabled || typeof window === 'undefined') return
try {
await fetch('/api/debug', { method: 'DELETE' })
} catch {}
},
}