From 74e7ea1a3292fc65d90603515108ba9004750dc3 Mon Sep 17 00:00:00 2001 From: art Date: Tue, 30 Jun 2026 15:52:54 +0900 Subject: [PATCH] =?UTF-8?q?docs(redesign):=20=ED=81=B4=EB=A1=9C=EB=93=9C?= =?UTF-8?q?=20=EB=94=94=EC=9E=90=EC=9D=B8=20=EC=82=B0=EC=B6=9C=EB=AC=BC=20?= =?UTF-8?q?=EB=B0=98=EC=98=81=20=EA=B2=80=ED=86=A0=20+=20=EC=83=88=20?= =?UTF-8?q?=EC=84=B8=EC=85=98=EC=9A=A9=20=ED=95=B8=EB=93=9C=EC=98=A4?= =?UTF-8?q?=ED=94=84=20=ED=94=84=EB=A1=AC=ED=94=84=ED=8A=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 외부 디자인 툴 산출물(리디자인 zip: 7 JSP + bibimbap.css + 3 jspf + error.jsp)을 전수 검토하고 우리 실제 코드와 design↔reality 매핑을 확정. 코드 변경 없음(검토 세션). 핵심: 산출물은 라우트(/games 복수 vs 실제 /game 단수), 폼 제출(classic POST vs JSON API+AJAX), CSRF(전무 vs CsrfTokens/_csrf/window.BibimbapCsrf), contextPath (${ctx} vs ${pageContext.request.contextPath}), include(common/ 가정 vs 평면), 에러(web.xml/error.jsp vs errer 뷰), css 디렉토리(없음) 가 모두 불일치 → 파일 통째 교체 금지, 공유 bibimbap.css 신설 + 비주얼 레이어 이식으로 결론. 산출물: artifacts/handoff-prompt.md (새 세션 작업 프롬프트 + 매핑표 + 하드 제약 + 순서). Co-Authored-By: Claude Opus 4.8 (1M context) Claude-Session: https://claude.ai/code/session_0162BaZnrbiYgWc9JJMZ9Czb --- .../artifacts/handoff-prompt.md | 83 +++++++++++++++++++ .atp/work-session/20260630-153323/report.md | 53 ++++++++++++ 2 files changed, 136 insertions(+) create mode 100644 .atp/work-session/20260630-153323/artifacts/handoff-prompt.md create mode 100644 .atp/work-session/20260630-153323/report.md diff --git a/.atp/work-session/20260630-153323/artifacts/handoff-prompt.md b/.atp/work-session/20260630-153323/artifacts/handoff-prompt.md new file mode 100644 index 0000000..95450d8 --- /dev/null +++ b/.atp/work-session/20260630-153323/artifacts/handoff-prompt.md @@ -0,0 +1,83 @@ +# 작업용 프롬프트 — 클로드 디자인 리디자인 산출물 반영 (새 세션용) + +> 이 문서는 검토 세션(sid 20260630-153323)의 산출물이다. **새 세션에 아래 "프롬프트" 블록을 그대로 붙여넣어** 실제 구현을 진행한다. 코드 변경은 새 세션에서 한다. + +--- + +## 0. 한 줄 요약 + +외부 클로드 디자인 툴이 만든 리디자인 산출물(`Bibimbap 커뮤니티 웹사이트 리디자인.zip` — 7 JSP + `bibimbap.css` + 3 jspf + error.jsp)을 우리 프로젝트에 반영한다. **단, 파일 통째 교체가 아니라 "공유 `bibimbap.css` 신설 + 디자인의 클래스/구조 개선을 기존 JSP에 입히는 비주얼 레이어 방식"** 으로 한다. 산출물의 라우트·CSRF·include·모델명은 전부 우리 실제와 다르므로 그대로 쓰면 깨진다. + +## 1. 산출물 위치 +- zip: `/Users/wemadeplay/Downloads/Bibimbap 커뮤니티 웹사이트 리디자인.zip` +- 압축 해제본(검토 세션이 풀어둠): `/redesign/jsp/...` (새 세션에선 zip을 다시 풀어 참조) +- 구성: `jsp/css/bibimbap.css`(15KB, 핵심), `jsp/01-home.jsp` `02-login` `03-signup` `06-game-detail` `07-terms` `08-profile` `10-recruit-form`, `jsp/error/error.jsp`, `jsp/fragments/{posts-empty,recruit-empty,review-comment-form}.jspf`. (preview.html은 zip에 없음) + +## 2. 디자인 산출물이 우리 현실과 다른 점 (그대로 쓰면 안 되는 이유) + +| 항목 | 디자인 가정 | 우리 실제 (근거) | +|---|---|---| +| context path | `${ctx}` | `${pageContext.request.contextPath}` (`header.jsp:197`) — `${ctx}` 미정의 | +| header include | `/WEB-INF/views/common/header.jsp` + header가 ``를 연다고 가정 | `/WEB-INF/views/header.jsp` (common/ 없음). header.jsp는 doctype/head 없이 **nav 마크업 + 자체 style만**(`header.jsp:1-20`). 각 페이지가 자체 `` 보유 | +| 폼 제출 | classic `
` | 로그인·회원가입·로그아웃·리뷰·모집은 **JSON API + JS AJAX 제출**. login.jsp는 `window.BibimbapCsrf`로 제출(`login.jsp:286`) | +| CSRF | 토큰 전무 | `CsrfTokens.getOrCreate(session)` → 폼은 hidden ``(`login.jsp:211,224`), AJAX는 `window.BibimbapCsrf.headers()` 헤더(`theme-init.jsp:19-27`). **상태변경 전부 필수** | +| 게임 라우트 | `/games`, `/games/{id}` (복수) | `/game/{id}` (**단수**, `GameController.java:136`). 게임목록 전용 `/games` 라우트 없음 — 홈 `/`가 목록(`WebMvcController:70`) | +| 리뷰/댓글 | 폼 POST `/games/{id}/reviews` | JSON API `/game/{id}/reviews` (GET/POST/PUT/DELETE, `GameReviewController:73~`) — JS로 소비 | +| 모집 작성 | POST `/recruit` | `/recruit/new` POST(JSON, location 반환, `RecruitController:49`). 기존 recruit-form.jsp도 AJAX | +| 프로필/비번찾기 | `/profile`, `/password/reset` | `/profile` 존재(`/{pageName}`→profile.jsp). **`/password/reset` 라우트 없음** → 디자인의 "비밀번호 찾기" 링크는 기능 미존재 | +| 에러 페이지 | `error/error.jsp` + web.xml `` | **web.xml 없음**(Spring Boot WAR). `/error`→뷰 **`errer`**(오타 파일명 그대로, `WebMvcController:47-55`), 모델 `${statusCode}` | +| CSS | 외부 `bibimbap.css` link 가정 | css/js 디렉토리 **미존재**. 현재 스타일은 각 페이지/header.jsp 인라인 `