이정수
|
21892c8a03
|
fix(reviews): game_review_stats 집계 버그 2건 수정 + W3-2 L3 검증 완료
W3-2 댓글/리뷰 고도화 검증 부채(DDL 적용·L1 회귀·L3 브라우저 스모크) 해소 중
서버 집계의 실버그 2건을 발견·수정. 둘 다 L1 @MockBean 사각으로 누출됨.
BUG-1 game_review_stats 뷰 fan-out
- LEFT JOIN game_review_axes 직접 조인 → 리뷰가 axes 행수(최대 6)만큼 복제,
COUNT(*)/AVG(rating) 왜곡(다축 리뷰 1건에 review_count 11/avg 2.8, 실제 6/3.5).
- 축 평균은 서브쿼리 game 단위 선집계 후 LEFT JOIN(MAX), 리뷰 단위 집계는
game_reviews 단독 산출로 수정. docs/game-reviews-ddl.sql + db/schema.sql 동기.
BUG-2 GameReviewStatsMapper alias 케이스 폴딩
- 따옴표 없는 AS gameId/avgRating/reviewCount → Postgres 소문자 폴딩 →
buildSummary의 camelCase Map 조회 null → summary 항상 null("아직 평가 없음" 오표시).
- alias 3개 큰따옴표로 케이스 보존.
검증
- mvn test 43/43 GREEN(수정 후 무회귀).
- 수정 후 dev 실게임: 뷰 review_count 6/avg 3.5, summary={avgRating:3.5,reviewCount:6,axes}.
- L3 스모크 12항목 전수 PASS(XSS 미실행·재방문 영속·다축6행·SVG레이더·집계·
페이지네이션·키보드·C1/C2/C4·B2·A2). changes 문서 §L3 결과 + security checklist B3 갱신.
- 권고: game_review_stats L2 contract 테스트 신설(L1 mock 사각 차단) — 이월.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
2026-06-22 17:54:19 +09:00 |
이정수
|
e98c437765
|
feat: W3-2 댓글/리뷰 분리 구현
기존 game_comments(닉네임 자유입력, localStorage 전용)를 서버 영속화 +
로그인 연동으로 전환하고, 별점 5점 + 서술 평가 형태의 game_reviews 도메인 신설.
- 댓글 서버 영속화: localStorage → DB game_comments. user_id NULL FK 비파괴 추가,
content 200자 앱레벨 검증. 레거시 nickname 레코드 보존(비마이그레이션, QG-2).
- game_reviews 신설: 게임당 1회(partial UNIQUE), rating CHECK(1~5), soft-delete.
- 권한: 작성자 본인 OR ROLE_ADMIN. 비로그인 쓰기 401, CSRF 미검증 403.
- GameController.deleteGame 에 리뷰 cascade soft-delete 추가.
- GameCommentController(C1~C4) / GameReviewController(R1~R5) 신규.
- 컨트롤러 단위 테스트 추가, BibimbapApplicationTests 매퍼 @MockBean 보강.
- 보안 체크리스트 댓글 항목 충족 마킹, 좋아요 항목은 범위 밖 미결 유지.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019tHAb6XYHWDPzb82FNKugo
|
2026-06-18 14:35:24 +09:00 |