cluade
This commit is contained in:
parent
4ebe4cb455
commit
dd5fea7f21
@ -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
1
.gitignore
vendored
@ -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
|
||||||
|
|||||||
11
CLAUDE.md
11
CLAUDE.md
@ -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 으로 관리됩니다.
|
||||||
|
|||||||
@ -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 가 아니라 **회로번호** 가 맞음.
|
||||||
|
|||||||
@ -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
44
src/util/debugCapture.js
Normal 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 {}
|
||||||
|
},
|
||||||
|
}
|
||||||
Loading…
x
Reference in New Issue
Block a user