diff --git a/.atp/work-session/20260629-171042/report.md b/.atp/work-session/20260629-171042/report.md index dbffd7f..7264441 100644 --- a/.atp/work-session/20260629-171042/report.md +++ b/.atp/work-session/20260629-171042/report.md @@ -7,7 +7,8 @@ verified_by_me: code_change: '없음 (docs-only) — verification/graph-refresh 비해당' doc_change: 'docs/development/local-dev-setup.md 에 "코드·JSP 변경 후 재빌드·재시작" 함정 섹션 추가' needs_user_verification: - - '앱 재배포 완료(orchestrator 수행, 신 PID 99638 라이브). 사용자 최종 스모크: 테스트계정 로그인 → 더미 게임 상세 좋아요 → 새로고침·탐색 목록에서 카운트 유지 확인. 미로그인 클릭은 이제 401(정상).' + - '[완료 2026-06-29] 실환경 스모크 PASS — 사용자가 로그인 후 더미 게임 좋아요 클릭 → 탐색 목록 카운트 반영 확인. (docker compose dev override 환경)' + - '(잔여) game_likes UNIQUE 마이그레이션 운영 적용 — 중복 점검 후, DB 스키마 변경이라 사용자 확인 게이트.' retrospective: lesson: 'handoff-committed-code-needs-rebuild-restart-step (memory 기록 + 가이드 docs-sync)' signal_source: negative diff --git a/docs/changes/2026-06-29-game-like-server-persistence.md b/docs/changes/2026-06-29-game-like-server-persistence.md index 901b9a5..2944a1d 100644 --- a/docs/changes/2026-06-29-game-like-server-persistence.md +++ b/docs/changes/2026-06-29-game-like-server-persistence.md @@ -1,6 +1,6 @@ # 2026-06-29 게임 "좋아요" 서버 영속화 -세션: `20260629-151216` · 검증: L1 PASS (L2 dev DB skip) +세션: `20260629-151216` (구현) · `20260629-171042` (배포·실환경 검증) · 검증: L1 PASS + 실환경 스모크 PASS (2026-06-29, docker compose dev) · L2 dev DB skip ## 한 줄 요약 @@ -55,13 +55,14 @@ ## 검증 - L1 PASS: `test-compile` + `GameLikeControllerTest` 7/7 + `*ControllerTest` 회귀 219/219 GREEN (eclipse-temurin:21-jdk 컨테이너). +- **실환경 스모크 PASS (2026-06-29, 세션 `20260629-171042`)**: docker compose dev(로컬 override) 에 배포 후 로그인 사용자가 상세에서 좋아요 클릭 → **탐색(explore) 목록 카운트 반영 확인**(사용자 검증). 신 엔드포인트 라이브(`POST /game/{id}/like` CSRF 미동반 → 403) 확인. - L2 (dev DB contract): skip — dev DB 미기동 + harness 미구축. like 매퍼는 INSERT/DELETE/UPDATE int 반환 위주라 camelCase Map alias 케이스폴딩 리스크 낮음. -- 검증 상세: `.atp/work-session/20260629-151216/artifacts/verification-result.md` +- 검증 상세: `.atp/work-session/20260629-151216/artifacts/verification-result.md`, 배포·스모크: `.atp/work-session/20260629-171042/report.md` ## 잔여 / 미수행 (needs_user_verification) -- UNIQUE 마이그레이션(`db/migrations/20260629-game-likes-unique.sql`) 운영 적용 미수행 — 중복 점검 후 적용 게이트 대기. -- 실환경 스모크 미수행: 로그인 → 상세 좋아요 클릭 → explore 카운트 +1 + 상세 초기 `aria-pressed` 상태(AC-7) 수동 확인. +- UNIQUE 마이그레이션(`db/migrations/20260629-game-likes-unique.sql`) 운영 적용 미수행 — 중복 점검 후 적용 게이트 대기. (로컬 dev DB 볼륨은 기존 init 이라 `schema.sql` 의 UNIQUE 변경도 미반영 — 앱레벨 멱등 토글로 기본 동작엔 무관.) +- 상세 초기 `aria-pressed` 상태(AC-7) 정밀 수동 확인은 선택(좋아요 반영 핵심 동작은 스모크로 확인됨). - L2 dev DB contract: PostgreSQL dev 기동 후 mapper SQL 실DB 동작 확인. - 기존 `like_count` 컬럼값과 `game_likes` row 수 초기 불일치는 보존(±1 상대 증감, 절대 재계산은 비목표). 선택적 정합 보정 쿼리는 설계 문서 롤아웃 §3 참조. diff --git a/docs/security/security-remediation-checklist.md b/docs/security/security-remediation-checklist.md index 21e1849..bacf15e 100644 --- a/docs/security/security-remediation-checklist.md +++ b/docs/security/security-remediation-checklist.md @@ -15,7 +15,7 @@ | --- | --- | --- | --- | | B1 | P1 | login/signup CSRF 검증 추가 | MED, 완료 | | B2 | P2 | 프로토타입 dead code 제거 | LOW-MED | -| B3 | P2 | 좋아요/댓글 서버 영속화 연결 | MED, 기능 무결성. 댓글 완료(W3-2) + 좋아요 완료(20260629-151216, UNIQUE 마이그레이션 운영 적용 대기) | +| B3 | P2 | 좋아요/댓글 서버 영속화 연결 | MED, 기능 무결성. 댓글 완료(W3-2) + 좋아요 완료(20260629-151216, 실환경 스모크 PASS 20260629-171042, UNIQUE 마이그레이션 운영 적용 대기) | | B4 | P2 | 의존성/세션/운영 하드닝 | MED | ## B1. login/signup CSRF 검증 추가 (MED) @@ -99,7 +99,7 @@ 체크리스트: -> **좋아요 항목은 세션 20260629-151216 에서 충족. 단 `game_likes` UNIQUE 제약은 마이그레이션 운영 적용 대기(아래).** +> **좋아요 항목은 세션 20260629-151216 에서 충족 + 실환경 스모크 PASS(20260629-171042, docker compose dev — 로그인 좋아요 → explore 카운트 반영 사용자 확인). 단 `game_likes` UNIQUE 제약은 마이그레이션 운영 적용 대기(아래).** - [x] `POST /game/{id}/like` 또는 `/api/games/{id}/like` 엔드포인트를 설계한다. → **`POST /game/{id}/like` 토글(@Transactional). 게이트 CSRF(403)→로그인(401)→존재(404).** - [x] 좋아요 추가/취소는 CSRF 검증을 적용한다. → **`CsrfTokens.isValid(request)` 선행(403). 회귀 테스트 AC-4 PASS.**