docs(dev): JSP 즉시반영 실패 사례 + 검증 방법 정정
카드 여백 수정 세션에서 JSP CSS 수정이 "저장 즉시 반영" 문서 설명과 달리 컴파일 캐시로 반영 안 되는 사례 발견. 브라우저 스크린샷만으로 검증한 1차 확인이 stale 렌더링을 보고 false pass를 냄(사용자가 재캡처 스샷 대조로 발견). docker compose restart app으로 해소. 향후 JSP 수정 검증 시 curl로 서빙 CSS/마크업을 파일과 직접 대조하는 단계를 local-dev-setup.md 함정 항목으로 추가. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Bn6vdHrUHqVzzUfC9da6fS
This commit is contained in:
parent
6e221d2ae6
commit
e3890b3c6f
|
|
@ -37,8 +37,8 @@ invocations: []
|
|||
checked_at: 2026-07-01T10:12:00+09:00
|
||||
- advisor: retrospective-advisor
|
||||
decision: skip
|
||||
rationale: '단일 세션 내 완결된 소규모 UI 미세조정, 부정/구조적 시그널 없음(사용자 명시적 방향 전환 1회: 롤백 대신 개선 요청) — 정식 회고 생략'
|
||||
checked_at: 2026-07-01T10:12:30+09:00
|
||||
rationale: '구조적 부정 시그널 발생(1차 검증 false pass)했으나 근본원인 파악 + docs-first 정정(local-dev-setup.md 함정 항목 추가)을 orchestrator가 즉시 직접 수행 완료 — 별도 회고 에이전트 호출 없이도 재현성 있는 교훈이 docs에 반영됨. 규모상 정식 회고 오버킬로 판단.'
|
||||
checked_at: 2026-07-01T10:40:00+09:00
|
||||
|
||||
# Summary
|
||||
|
||||
|
|
@ -63,9 +63,12 @@ invocations: []
|
|||
# verified_by_me
|
||||
|
||||
- L1: 해당 없음 (JSP 정적 CSS 수치, 컴파일 대상 아님) — 대신 `rg '<%@\s*taglib'` 로 taglib 오염 없음 확인
|
||||
- 런타임 스모크: `docker compose ps` 로 app 컨테이너 기동 확인 → `curl -s -o /dev/null -w '%{http_code}' http://localhost:8080/` = 200
|
||||
- 시각 확인: 브라우저 fork 로 라이트/다크 테마 스크린샷 확인 — 좋아요 줄 카드 하단 앵커링 정상, 어색한 여백 해소
|
||||
- 로그 스캔: clean (컨테이너 재기동/에러 없음, JSP 즉시 반영 방식)
|
||||
- **1차 검증 오류(false pass) 발견 및 정정**: 최초 브라우저 fork 확인은 "정상 반영"으로 보고했으나, `curl http://localhost:8080/ | grep`으로 실제 서빙 CSS를 파일과 직접 대조하니 옛 값(`padding 0.7rem 0.75rem 0.75rem`, `margin 0.45rem 0 0`)이 그대로 서빙되고 있었음 — JSP "저장 즉시 반영"이 이 환경에서 깨져 있었고 브라우저 fork는 그 stale 렌더링을 본 것. 사용자가 재캡처 스샷으로 "왜 여전히 안 줄었냐"고 질문해 발견.
|
||||
- 원인: 컴파일된 `index_jsp.class` mtime(00:30) < 소스 mtime(00:44) — Jasper 재컴파일 미발생. `docker compose restart app` 강제 재기동 후 `curl` 재대조 → 새 값(`0.65rem 0.75rem 0.7rem`, `margin auto 0 0`) 정상 서빙 확인.
|
||||
- 런타임 스모크(재기동 후): `curl -s -o /dev/null -w '%{http_code}' http://localhost:8080/` = 200, 서빙 CSS = 파일과 일치
|
||||
- 시각 확인(재기동 후 재검증): 브라우저 fork hard reload — 크리에이터~좋아요 간 여백 타이트하게 좁혀짐 확인, 어색한 빈 공간 해소
|
||||
- 로그 스캔: clean (재기동 정상, 에러 없음)
|
||||
- **문서 정정**: `docs/development/local-dev-setup.md`에 "JSP 즉시반영 실패 사례" 함정 항목 추가 — 향후 JSP 수정 시 브라우저 스크린샷만 믿지 말고 `curl` 대조 선행 권고
|
||||
|
||||
# needs_user_verification
|
||||
|
||||
|
|
@ -79,7 +82,10 @@ partial-stale (3커밋 누적) 판정이지만 이번 변경분은 JSP 인라인
|
|||
|
||||
positive:
|
||||
- "롤백말고 개선을 고려해줘 /frontend-design 스킬 참고해서" — 단순 되돌리기보다 근본 개선을 원하는 명시적 방향성 제시, 결과에 대한 반대 신호 없음
|
||||
negative: []
|
||||
negative:
|
||||
- quote: "더미가 통과하는 이유가뭐야?"
|
||||
context: "1차 검증(브라우저 fork)이 '정상 반영'으로 보고했으나 실제로는 JSP 재컴파일 미발생으로 stale 렌더링을 본 false pass였음. 사용자가 재캡처 스샷으로 여백이 그대로임을 지적하며 검증 신뢰성에 의문 제기."
|
||||
structural: true
|
||||
|
||||
# open_items
|
||||
|
||||
|
|
|
|||
|
|
@ -31,7 +31,7 @@
|
|||
docker compose logs -f app
|
||||
```
|
||||
반영(이미지 재빌드 0):
|
||||
- **JSP/정적**: 저장 즉시(Jasper 가 마운트된 webapp 재컴파일). 재시작 불필요.
|
||||
- **JSP/정적**: 원칙상 저장 즉시(Jasper 가 마운트된 webapp 재컴파일). **단, 반영 안 되는 사례 확인됨** (함정 참조 — 편집 후 `curl` 로 서빙 값이 옛 값이면 즉시반영을 신뢰 말고 `docker compose restart app` 으로 강제 확인).
|
||||
- **Java 코드**: `docker compose restart app` (spring-boot:run 재기동 ~1~2s). 또는 `docker compose exec app mvn -o -P dev -DskipTests compile` 후 restart.
|
||||
- 전제: 호스트 `~/.m2` 에 의존성 캐시 존재(offline `-o`). **새 의존성 추가 시**: override 의 `-o` 를 일시 제거해 1회 온라인 받거나, 호스트에서 `./mvnw -P dev dependency:go-offline` 후 다시 offline.
|
||||
|
||||
|
|
@ -67,6 +67,10 @@
|
|||
|
||||
> devtools 자동재시작은 도입하지 않았다 — 컨테이너 `spring-boot:run` 에는 소스 자동 재컴파일러가 없어(IDE 부재) 이득이 작고, `3.5.x-SNAPSHOT` devtools 의 offline 해소가 불안정했다. `restart`/`exec compile` 루프가 더 견고하다.
|
||||
|
||||
> **⚠ 함정**: JSP "저장 즉시 반영"이 실패한 사례 확인됨 — CSS 수치 2줄 수정 후 `curl` 로 서빙 값을 대조했더니 옛 값 그대로였다(수정 파일 mtime 은 최신인데 컴파일된 `index_jsp.class` 는 그 이전 시각). 브라우저 fork 로 "정상 반영"이라 잘못 보고한 원인도 이 stale 렌더링을 봤기 때문(false pass). `docker compose restart app` 으로 강제 재기동하니 즉시 해소됨 — 근본 원인은 미확인(Jasper 재검사 간격 또는 Docker Desktop bind-mount mtime 전파 지연 추정)이나, **재현성 있는 회피책은 확정**: JSP 수정 직후엔 "즉시 반영"을 신뢰하지 말고 `curl` 로 실제 서빙 CSS/마크업을 수정값과 대조 → 불일치 시 `docker compose restart app` 후 재대조. 브라우저 스크린샷만으로 검증하면 이 stale 상태를 놓칠 수 있다.
|
||||
>
|
||||
> 근거: 세션 20260701-093754.
|
||||
|
||||
## 업로드 저장 루트 (static 트리 밖)
|
||||
|
||||
업로드물(프로필 이미지·게임 WebGL asset)은 **웹서버 정적 서빙 트리(`src/main/resources/static/`) 밖**에 저장한다. 직접 서빙을 차단하고 컨트롤러 권한 게이트를 강제하기 위함이다(보안 하드닝, commit `9041bb7`).
|
||||
|
|
|
|||
Loading…
Reference in New Issue