Skip to content

T-38 게임 스크린샷 + 등급정보 + 참여 멤버 - #110

Open
ff1451 wants to merge 3 commits into
feat/t37-game-admin-crudfrom
feat/t38-game-screenshot-rating-member
Open

T-38 게임 스크린샷 + 등급정보 + 참여 멤버#110
ff1451 wants to merge 3 commits into
feat/t37-game-admin-crudfrom
feat/t38-game-screenshot-rating-member

Conversation

@ff1451

@ff1451 ff1451 commented Aug 30, 2026

Copy link
Copy Markdown
Contributor

요약

T-37 PR(#108) 위에 스택한다 — T-37이 아직 머지되지 않아 base를 feat/t37-game-admin-crud로 잡았다. 트랙 페이지의 T-08/T-09/T-18 분리와 같은 경계.

변경 사항

  • PUT /v1/admin/games/{id}/screenshots — 전체 교체, 배열 순서가 display_order
  • PUT/DELETE /v1/admin/games/{id}/rating — upsert/삭제. contentDescriptors는 7개 boolean 컬럼에 매핑되는 고정 배열(INV-21), 정의되지 않은 키는 400
  • POST/DELETE /v1/admin/games/{id}/members, PATCH .../order — 명부 직접 참조(ADR-012 패턴 재사용), 이름·사진 쓰기 경로 없음(INV-19). 멘토와 달리 게임 참여 멤버는 별도 숨김 토글이 없다(와이어프레임 1b)
  • GET /v1/admin/games/{id}가 이제 스크린샷·등급정보·참여멤버까지 포함한 전체 편집 화면 집계를 반환(AdminGameDetailResponse 확장 — AdminTrackPageDetailResponse와 동일한 확장 방식)

테스트

AdminGameScreenshotRatingMemberIntegrationTest(신규 6개) —

  • AC-9.6 스크린샷 전체 교체 시 display_order 순서 부여
  • AC-9.7 contentDescriptors 생략 시 7개 항목 모두 false
  • INV-21 정의되지 않은 내용정보 키는 400
  • AC-9.8 등급정보 삭제 시 공개 응답 ratingnull
  • AC-9.9 명부에 없는 memberId 배정은 404
  • 참여 멤버 배정·순서 변경·해제가 공개 응답에 반영, 중복 배정은 409

수동 검증

./gradlew test 전체 통과(160개, 실패 0). 신규 마이그레이션 없음(T-36에서 이미 검증).

남은 항목

  • T-39(빌드 메타 등록), T-40(멘토 슬롯+Q&A+모집 링크)은 후속 PR
  • T-41(빌드 업로드 파이프라인)은 ADR-023 방향만 정해졌고 홈페이지 쪽 설계 합의 전까지 착수하지 않음

Refs #109

T-37(기본정보 CRUD) 위에 스크린샷 전체 교체, 등급정보 upsert, 참여 멤버
배정을 얹는다. 트랙 페이지의 T-08/T-09/T-18 분리와 같은 경계 — 참여 멤버는
배정/순서 흐름이 따로 있어 AdminGameMemberService로 분리했다(AdminTrackPageMemberService와 동일).

- PUT /v1/admin/games/{id}/screenshots — 전체 교체, 배열 순서가 display_order
- PUT/DELETE /v1/admin/games/{id}/rating — upsert/삭제. contentDescriptors는
  7개 boolean 컬럼에 매핑되는 고정 배열(INV-21), 정의되지 않은 키는 400
- POST/DELETE /v1/admin/games/{id}/members, PATCH .../order — 명부 직접 참조
  (ADR-012 패턴 재사용), 이름·사진 쓰기 경로 없음(INV-19). 멘토와 달리 게임
  참여 멤버는 별도 숨김 토글이 없다(와이어프레임 1b)
- GET /v1/admin/games/{id}가 이제 스크린샷·등급정보·참여멤버까지 포함한 전체
  편집 화면 집계를 반환한다(AdminGameDetailResponse 확장)

테스트: AdminGameScreenshotRatingMemberIntegrationTest(신규 6개) —
- AC-9.6 스크린샷 전체 교체 시 display_order 순서 부여
- AC-9.7 contentDescriptors 생략 시 7개 항목 모두 false
- INV-21 정의되지 않은 내용정보 키는 400
- AC-9.8 등급정보 삭제 시 공개 응답 rating이 null
- AC-9.9 명부에 없는 memberId 배정은 404
- 참여 멤버 배정·순서 변경·해제가 공개 응답에 반영, 중복 배정은 409

./gradlew test 전체 통과(160개, 실패 0). 신규 마이그레이션 없음(T-36에서 이미 검증).

Refs #109
@coderabbitai

coderabbitai Bot commented Aug 30, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: d01ba90d-5500-4566-a234-2a627a4449d0

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

ff1451 added 2 commits August 30, 2026 15:19
인터널 프론트에서 게임 썸네일·스크린샷(GAME)과 상세설명 삽입 이미지
(GAME_CONTENT)를 업로드하려면 presigned URL 발급 시 purpose enum에 값이
있어야 한다. image_asset.purpose는 varchar(30)이라 마이그레이션은 필요 없다.
game.thumbnailUrl 컬럼·응답 필드는 T-36부터 있었지만 그 값을 쓰는 API가
전혀 없었다 — 인터널 프론트(T-43) 작업 중 발견. 활동 사진의 INV-12(첫 장 =
썸네일)와 같은 규약으로, 별도 업로드 엔드포인트를 만들지 않고 스크린샷 전체
교체가 항상 첫 번째 스크린샷으로 맞추게 했다.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant