cluade #821

Merged
ysCha merged 1 commits from dev into prd-deploy 2026-05-06 18:12:15 +09:00
6 changed files with 58 additions and 4 deletions
Showing only changes of commit dd5fea7f21 - Show all commits

View File

@ -4,7 +4,7 @@ description: 6종 기와(和瓦A/B, 平板瓦C/D, S瓦, セメント瓦) + 寸 2
type: project type: project
--- ---
저구배(2 ≤ pitch < 2.5 OR 11.31 angle < 14.04°) 에서 6종 기와 사용 저장 직전에 안내 alert 띄움 (OK , 중단 흐름 없음). (도입 커밋 `[TBD-CODE]`) 저구배(2 ≤ pitch < 2.5 OR 11.31 angle < 14.04°) 에서 6종 기와 사용 저장 직전에 안내 alert 띄움 (OK , 중단 흐름 없음). (도입 커밋 `a5d2964e`)
대상 6종 (`getRoofMaterialList` 응답 기준): 대상 6종 (`getRoofMaterialList` 응답 기준):
- `ROOF_ID_WA_53A`, `ROOF_ID_WA_53B` - `ROOF_ID_WA_53A`, `ROOF_ID_WA_53B`

1
.gitignore vendored
View File

@ -51,6 +51,7 @@ certificates
# [auto-untracked 2026-05-06] 머신별 자동 산출물 / 알 수 없는 파일 # [auto-untracked 2026-05-06] 머신별 자동 산출물 / 알 수 없는 파일
.claude/memory/commit_log.txt .claude/memory/commit_log.txt
.claude/settings.local.json .claude/settings.local.json
.claude/.commit-notice
last_updated.log last_updated.log
claude-501/ claude-501/
sl sl

View File

@ -2,7 +2,7 @@
## 신규 컴퓨터 셋업 ## 신규 컴퓨터 셋업
클론 후 아래 명령을 한 번 실행하면 Claude 메모리가 이 프로젝트 폴더와 연결됩니다. 클론 후 아래 명령을 한 번 실행하면 (1) Claude 메모리 연결 + (2) git 훅 활성화 가 끝납니다.
```bash ```bash
PROJ=$(pwd) PROJ=$(pwd)
@ -10,11 +10,20 @@ MEM_DIR="$HOME/.claude/projects/-Users-cha-Works-Projects-qcast3-qcast-front"
mkdir -p "$MEM_DIR" mkdir -p "$MEM_DIR"
rm -rf "$MEM_DIR/memory" rm -rf "$MEM_DIR/memory"
ln -s "$PROJ/.claude/memory" "$MEM_DIR/memory" ln -s "$PROJ/.claude/memory" "$MEM_DIR/memory"
# git hooks (post-commit: 커밋 로그 + [TBD-CODE] 자동 치환 + .commit-notice 마커)
git config core.hooksPath .githooks
``` ```
> **주의**: 위 경로(`-Users-cha-Works-Projects-qcast3-qcast-front`)는 이 프로젝트의 절대경로 인코딩입니다. > **주의**: 위 경로(`-Users-cha-Works-Projects-qcast3-qcast-front`)는 이 프로젝트의 절대경로 인코딩입니다.
> 프로젝트를 `/Users/cha/Works/Projects/qcast3/qcast-front` 에 clone 했을 때 그대로 사용하면 됩니다. > 프로젝트를 `/Users/cha/Works/Projects/qcast3/qcast-front` 에 clone 했을 때 그대로 사용하면 됩니다.
## git hooks (`.githooks/`)
`.githooks/` 는 git 으로 추적되는 훅 디렉토리입니다. `git config core.hooksPath .githooks` 가 한 번 설정되면 자동 실행됩니다.
- `post-commit` — 커밋 로그 append, `[TBD-CODE]` placeholder 를 새 short hash 로 자동 치환, `.claude/.commit-notice` 마커 작성 (Claude 의 UserPromptSubmit hook 이 다음 프롬프트에 컨텍스트로 주입)
## 메모리 구조 ## 메모리 구조
`.claude/memory/` 폴더가 Claude 의 프로젝트 메모리입니다. git 으로 관리됩니다. `.claude/memory/` 폴더가 Claude 의 프로젝트 메모리입니다. git 으로 관리됩니다.

View File

@ -49,7 +49,7 @@
- **태그**: `[INDFCS-SAME-ROOF 2026-05-06]` - **태그**: `[INDFCS-SAME-ROOF 2026-05-06]`
- **회귀 체크**: ① INDFCS 동일 방위/구배 누적 ② INDFCS 1차 동향 후 2차 남향 추가 차단 ③ 북면 혼합 차단(기존) ④ OUTDMULTI 다방위 차단(기존) ⑤ 자동분할 영향 없음. - **회귀 체크**: ① INDFCS 동일 방위/구배 누적 ② INDFCS 1차 동향 후 2차 남향 추가 차단 ③ 북면 혼합 차단(기존) ④ OUTDMULTI 다방위 차단(기존) ⑤ 자동분할 영향 없음.
### 1.8 [1845] 보정 — 검증 단위를 PCS → 회로번호로 좁힘 (커밋 `[TBD-CODE]`) ### 1.8 [1845] 보정 — 검증 단위를 PCS → 회로번호로 좁힘 (커밋 `4ebe4cb4`)
- **작성일**: 2026-05-06 - **작성일**: 2026-05-06
- **배경**: 1.7 수정 직후 회귀에서 **자동분할 후 수동분할 이어가는 시나리오** 차단 발견. 자동으로 회로 1=남(south-5.5) 4장이 부여된 같은 PCS 에, 수동으로 회로 2=서(west-5.5) 4장을 묶으려 하면 alert 차단됨. 회로 1 과 회로 2 는 서로 다른 직렬회로이므로 통과돼야 정상. - **배경**: 1.7 수정 직후 회귀에서 **자동분할 후 수동분할 이어가는 시나리오** 차단 발견. 자동으로 회로 1=남(south-5.5) 4장이 부여된 같은 PCS 에, 수동으로 회로 2=서(west-5.5) 4장을 묶으려 하면 alert 차단됨. 회로 1 과 회로 2 는 서로 다른 직렬회로이므로 통과돼야 정상.
- **원인**: 1.7 의 (b) 누적 패턴이 같은 PCS 의 **모든** 기존 모듈을 합집합 대상으로 잡아, 다른 회로번호까지 검증에 포함됨. HANASYS 보고 본문 "**同一の直列回路として**構成できてしまう" 에 비춰 보면 검증 단위는 PCS 가 아니라 **회로번호** 가 맞음. - **원인**: 1.7 의 (b) 누적 패턴이 같은 PCS 의 **모든** 기존 모듈을 합집합 대상으로 잡아, 다른 회로번호까지 검증에 포함됨. HANASYS 보고 본문 "**同一の直列回路として**構成できてしまう" 에 비춰 보면 검증 단위는 PCS 가 아니라 **회로번호** 가 맞음.

View File

@ -125,7 +125,7 @@ UI 옵션을 켜고 끄는 토글 스위치를 일본어 모달들에 추가한
--- ---
## 9. 저구배 + 특정 기와 시공 매뉴얼 안내 (2026-05-06, 커밋 `[TBD-CODE]`) ## 9. 저구배 + 특정 기와 시공 매뉴얼 안내 (2026-05-06, 커밋 `a5d2964e`)
### 9.1 무엇을 ### 9.1 무엇을
6종 기와 제품을 **저구배 (2 ≤ 寸 < 2.5 또는 11.31° ≤ 角度 < 14.04°)** 로 사용하려 할 때, 저장 직전에 시공 매뉴얼 확인 안내 alert 을 띄움 (OK 만 — 중단 흐름 없음). 6종 기와 제품을 **저구배 (2 ≤ 寸 < 2.5 또는 11.31° ≤ 角度 < 14.04°)** 로 사용하려 할 때, 저장 직전에 시공 매뉴얼 확인 안내 alert 을 띄움 (OK 만 — 중단 흐름 없음).

44
src/util/debugCapture.js Normal file
View File

@ -0,0 +1,44 @@
// 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 {}
},
}