Skip to content

T-14 활동 카테고리 - #68

Open
ff1451 wants to merge 1 commit into
feat/t13-curriculum-clonefrom
feat/t14-activity-category
Open

T-14 활동 카테고리#68
ff1451 wants to merge 1 commit into
feat/t13-curriculum-clonefrom
feat/t14-activity-category

Conversation

@ff1451

@ff1451 ff1451 commented Aug 19, 2026

Copy link
Copy Markdown

Refs #26
Base: feat/t13-curriculum-clone (#67)

P3(활동)의 첫 티켓. 활동 탭(EVENT/GAME/KOIN 등) CRUD + 공개 목록 조회.

변경

  • ActivityCategory — 최상위 엔티티라 soft delete(ADR-006).
  • 관리자: GET/POST /v1/admin/activity-categories, PUT/DELETE /{id}, PATCH /{id}/publish, PATCH /order — T-07(트랙 페이지)과 동일한 규약을 그대로 따랐다.
  • 공개: GET /v1/activity-categories — 같은 리소스라 관리·공개를 별도 티켓으로 쪼개지 않고 T-14에 함께 넣었다. SecurityConfig/v1/activity-categories/** permitAll 추가.

의도적으로 아직 안 만든 것

AC-3.8("활동이 남아 있으면 삭제 거부")은 이번 PR에 없다. Activity 엔티티가 아직 없어서(T-15) 검증할 대상 자체가 없다 — soft delete라 DB의 FK 제약도 이걸 막아주지 않는다(물리 행이 남아 있어 FK 위반이 안 난다). T-15에서 Activity가 생기면 deleteCategory에 이 체크를 추가한다.

테스트

AdminActivityCategoryIntegrationTest(신규):

  • 생성 후 공개 목록에 노출, 개행 포함 headline이 그대로 반환됨(에디터의 /\n 변환은 프론트 몫, 서버는 문자열을 그대로 저장·반환)
  • slug 중복 409
  • 숨김 카테고리는 공개 목록에서 제외
  • 순서 변경이 공개 목록에 즉시 반영

./gradlew test를 3회 연속 돌려 전체 통과(78개, 실패 0) 확인.

활동 탭(EVENT/GAME/KOIN 등) CRUD + 순서 + 공개/숨김. 공개 목록 조회 API도
함께 넣었다 — 같은 리소스를 관리·공개 두 티켓으로 쪼갤 이유가 없다.

- ActivityCategory — 최상위 엔티티라 soft delete(ADR-006)
- GET/POST /v1/admin/activity-categories, PUT/DELETE /{id}, PATCH
  /{id}/publish, PATCH /order — 트랙 페이지(T-07)와 동일한 규약
- GET /v1/activity-categories — 공개, published만, display_order 순.
  SecurityConfig에 permitAll 추가
- "활동이 남아 있으면 삭제 거부"(AC-3.8)는 아직 구현하지 않았다 — Activity
  엔티티가 없어 검증할 대상이 없다. T-15에서 Activity가 생기면 그때
  deleteCategory에 추가한다

테스트: AdminActivityCategoryIntegrationTest(신규) —
- 생성 후 공개 목록 노출, 개행 포함 headline 그대로 반환
- slug 중복 409
- 숨김 카테고리는 공개 목록에서 제외
- 순서 변경이 공개 목록에 즉시 반영

./gradlew test 3회 연속 전체 통과(78개, 실패 0).

Refs #26
@coderabbitai

coderabbitai Bot commented Aug 19, 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: 91bef42e-6fcb-40a3-a310-a3adc36aca64

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.

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