T-37 게임 관리자 CRUD - #108
Open
ff1451 wants to merge 1 commit into
Open
Conversation
게임 기본정보·설명의 관리자 CRUD. 트랙 페이지(T-07)와 같은 패턴 — 스크린샷· 등급정보·참여멤버는 이 태스크가 다루지 않는다(T-38). - POST/GET/PUT /v1/admin/games, PATCH .../slug, .../publish, .../order, DELETE(soft delete) - slug는 name에서 자동 파생, 중복이면 409(AC-9.1, AC-9.2) - description은 저장 시 ActivityContentSanitizer로 정제(ADR-008 재사용, INV-9, INV-10) - ContentChangedPublisher에 gameChanged/gameAndListChanged/gameListChanged 추가 — AdminTrackPageService가 T-07에서 자기 태그 메서드를 그 자리에서 추가했던 것과 동일한 방식. HomepageSyncService의 강제 재검증 목록에도 게임 태그를 포함시켰다. (당초 계획했던 별도 T-42 "웹훅 태그 추가" 태스크는 흡수 — docs/07 참고) - SlugGenerator를 track/util → global/util로 승격 — 트랙과 게임 둘 다 쓰는 도메인 무관 순수 함수라 DisplayOrders와 같은 자리로 옮겼다. 테스트: AdminGameIntegrationTest(신규 9개) — - 토큰 없음 401 / MEMBER 권한 403 - AC-9.1 slug 자동 생성, AC-9.2 중복 slug 409 - AC-9.4 순서 변경이 공개 목록에 즉시 반영, AC-9.5 id 집합 불일치 시 400 + 무변경 - AC-9.12 설명의 script 태그 제거, AC-9.13 외부 호스트 이미지 제거 - AC-9.11 소프트 삭제 후 공개·관리자 조회 모두 404 - INV-7 게임 행을 실제로 DELETE하면 하위 데이터가 cascade로 삭제됨을 별도 검증 (soft delete는 UPDATE라 cascade가 발동하지 않는다 — 애초 AC-9.11 문구가 이 둘을 혼동해서 docs/02-acceptance-criteria.md도 함께 정정) ./gradlew test 전체 통과. 로컬 마이그레이션은 T-36에서 이미 검증됨(신규 마이그레이션 없음). Refs #105
|
Important Review skippedAuto reviews are disabled on base/target branches other than the default branch. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Plus Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
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. Comment |
This was referenced Aug 30, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
요약
게임 기본정보·설명의 관리자 CRUD. T-36 PR(#106) 위에 스택한다 — T-36이 아직 머지되지 않았으므로 base를
feat/t36-game-schema-public-api로 잡았다. T-36이 머지되면 base가 자동으로main으로 재조정된다.변경 사항
POST/GET/PUT /v1/admin/games,PATCH .../slug,.../publish,.../order,DELETE(soft delete)description은 저장 시ActivityContentSanitizer로 정제(ADR-008 재사용 — 활동 본문과 같은 jsoup 규칙)ContentChangedPublisher에gameChanged/gameAndListChanged/gameListChanged추가 —AdminTrackPageService(T-07)가 자기 태그 메서드를 그 자리에서 추가했던 것과 동일한 방식.HomepageSyncService의 강제 재검증 목록에도 게임 태그 포함.SlugGenerator를track/util→global/util로 승격 — 트랙·게임 둘 다 쓰는 도메인 무관 순수 함수라DisplayOrders와 같은 자리로 옮겼다.계획 변경
당초
docs/07-task-breakdown.md는 웹훅 태그 추가를 별도 T-42로 분리했었는데, 구현 중 재검토했다. T-07이 이미 그 자리에서 자기 태그를 추가한 전례가 있어, 별도 태스크로 미루면 이 PR이 ADR-010(저장 시 웹훅) 없이 머지되는 중간 상태가 생긴다. T-42는 폐기하고 이 PR에 흡수했다(문서에 기록).테스트
AdminGameIntegrationTest(신규 9개) —수동 검증
./gradlew test전체 통과. 신규 마이그레이션 없음(T-36에서 이미 검증).Refs #107