# task-1355.1 완료 보고서: InsuWiki 빌드 캐시 정리 + 서버 재시작 + Underline 검증

## SCQA

**S**: InsuWiki 서버 로그에 `GET /_next/dev/static/chunks/nextapp_src_a4a8d3b6._.js 404` 에러가 발생하여 EditorToolbar 컴포넌트를 포함한 JS 번들이 로드되지 않고 있었다.

**C**: 오래된 .next 빌드 캐시가 무효화된 번들 해시를 참조하여, 에디터 툴바의 B/I/S/U 버튼이 클라이언트에 표시되지 않는 문제가 발생했다.

**Q**: .next 캐시를 삭제하고 서버를 재시작하면 번들 404 에러가 해소되고 EditorToolbar가 정상 로드되는가?

**A**: .next 캐시 삭제 + 서버 재시작으로 번들 404 에러가 완전 해소되었다. 서버 재시작 후 /docs/1 요청이 모두 200 응답, JS 번들도 200 정상 로드 확인. EditorToolbar.tsx 소스 코드에 B/I/S/U 4개 버튼 정상 존재 확인 (라인 242-269).

## 작업 내역

### 1. 기존 서버 중지
- `pkill -f "next dev"` 실행하여 기존 프로세스(PID 3903220) 종료
- 프로세스 완전 종료 확인

### 2. .next 캐시 삭제
- `rm -rf /home/jay/projects/insuwiki/nextapp/.next` 실행
- 삭제 후 디렉토리 부재 확인

### 3. 서버 재시작
- `NEXT_PUBLIC_USE_EMULATOR=false npm run dev` 실행
- Next.js 16.1.6 (Turbopack) 666ms 만에 정상 기동
- 로그 출력: `✓ Ready in 666ms`

### 4. 검증 결과

#### 4-1. 서버 로그 검증
- 404 에러: **0건** (원래 증상 완전 해소)
- /docs/1 요청: 모든 요청 **200 응답**
- 컴파일 에러: **0건**

#### 4-2. 번들 로드 검증
- `curl -s -o /dev/null -w "%{http_code}" http://localhost:3000/` → **200**
- `curl -s -o /dev/null -w "%{http_code}" http://localhost:3000/docs/1` → **200**
- `curl -s -o /dev/null -w "%{http_code}" "http://localhost:3000/_next/static/chunks/nextapp_src_ad54e169._.js"` → **200**

#### 4-3. Playwright UI 검증 (대체 방식)
- /docs/1 페이지가 로그인 필요(Firebase Auth) → 에디터 툴바 직접 확인 불가
- **대체 검증**: 서버 로그 에러 0건 + 번들 200 응답 + 소스 코드 확인
- Playwright HTTP 응답 모니터링: **404 에러 0건** 확인
- 콘솔 에러: Firebase permission-denied 3건 (비인증 상태의 예상 동작, 번들 로딩과 무관)

#### 4-4. EditorToolbar 소스 코드 확인
- `EditorToolbar.tsx:242-269` — B(Bold), I(Italic), S(Strikethrough), **U(Underline)** 4개 버튼 모두 존재
- `toggleUnderline()` 호출, `isActive('underline')` 상태 추적, `title="Underline (밑줄, Ctrl+U)"` 정상 설정

## 발견 이슈 및 해결

### 자체 해결 (1건)
1. **JS 번들 404 에러 (핵심 이슈)** — .next 캐시 삭제 + 서버 재시작으로 해결
   - 원인: 오래된 Turbopack 캐시가 무효화된 번들 해시를 참조
   - 해결: `rm -rf .next` 후 `npm run dev`로 캐시 재생성

### 범위 외 (3건)
1. **Firebase Admin credentials 경고** — 범위 외 사유: dev 환경 설정 문제, Mock 모드로 동작 중
2. **Turbopack root 경고 (dual lockfile)** — 범위 외 사유: 프로젝트 구조 설정 이슈, 기능 동작에 영향 없음
3. **/docs/1 로그인 필수** — 범위 외 사유: Firebase Auth 보호, 정상 보안 동작

## 산출물

- 수정/생성 파일: 없음 (코드 변경 없이 운영 작업만 수행)
- 서버 로그: `/tmp/insuwiki-dev.log`
- Playwright 스크린샷: `/tmp/insuwiki-docs-page.png`

## 셀프 QC 체크리스트

- [x] 1. 다른 파일 영향: 없음 (코드 변경 없음, 캐시 삭제만 수행)
- [x] 2. 엣지 케이스: 캐시 재생성 실패 시 → 서버 로그에서 컴파일 에러로 감지 가능 (발생하지 않음)
- [x] 3. 작업 지시 일치: 캐시 삭제 ✓, 서버 재시작 ✓, 번들 로드 확인 ✓, UI 검증(대체) ✓
- [x] 4. 에러 처리/보안: 해당 없음 (코드 변경 없음)
- [x] 5. 테스트 커버리지: 해당 없음 (코드 변경 없음, Lv.1 운영 작업)
- [x] 6. 발견 이슈 해결: 핵심 이슈(번들 404) 해결 완료, 범위 외 3건 사유 명시
- [x] 7. 아키텍처 원칙: 해당 없음 (코드 변경 없음)
- [x] 8. 인터페이스 변경: 해당 없음

## 모델 사용 기록

- 팀원 위임 없음 (Lv.1 운영 작업으로 팀장 직접 수행)
- 사유: 코드 변경 없는 캐시 정리 + 서버 재시작 + 검증 작업으로, 팀원 서브에이전트 위임 불필요

## 머지 판단
- **머지 필요**: No
- **브랜치**: N/A (코드 변경 없음)
- **워크트리 경로**: N/A (Lv.1 작업, worktree 미사용)
- **머지 의견**: 코드 변경 없는 운영 작업. 캐시 삭제 + 서버 재시작만 수행.
