Skip to content

운영진용 동아리 이력/매핑/공식 인증 관리 API 구현#51

Merged
yabsed merged 5 commits into
developfrom
feature/admin-club-remaining-apis
May 5, 2026
Merged

운영진용 동아리 이력/매핑/공식 인증 관리 API 구현#51
yabsed merged 5 commits into
developfrom
feature/admin-club-remaining-apis

Conversation

@yabsed

@yabsed yabsed commented May 4, 2026

Copy link
Copy Markdown
Collaborator

관련 문서

작업 범위

커밋 범위: 27f6ec26297639cba889382418eedd569fa1e5c7 ~ 27ecbd5936f600f29ffcfd06c5da46806309777e

이번 PR에서는 운영진 대시보드에서 필요한 동아리 수정 이력 조회, 기존 동아리 관리자 매핑 신청 관리, 공식 인증 요청 관리 API를 구현했습니다.

구현 내용

동아리 수정 이력 조회

  • GET /api/v1/admin/clubs/histories 추가
  • club_history 기반 수정 이력 목록 조회
  • club_uuid, query, offset, limit query parameter 지원
  • 수정한 관리자 정보, 변경 필드, 수정 전/후 스냅샷 반환

매핑 신청 목록 조회

  • GET /api/v1/admin/clubs/manager-requests 추가
  • club_manager_request 목록 조회
  • status query parameter로 PENDING, APPROVED, REJECTED 필터링 지원
  • 대상 동아리명과 신청자 이름/연락처/학번 포함

매핑 신청 승인 및 반려

  • PATCH /api/v1/admin/clubs/manager-requests/{id}/status 추가
  • APPROVED, REJECTED 상태 처리 지원
  • 반려 시 reject_reason 필수 검증
  • 승인 시 신청자를 club_manager 테이블에 등록
  • 이미 처리된 신청 또는 이미 매니저가 있는 동아리에 대한 승인 시 409 Conflict 반환
  • 요청 상태 변경과 매니저 등록을 transaction으로 처리

공식 인증 요청 목록 조회

  • GET /api/v1/admin/clubs/verifications 추가
  • club_verification_request 목록 조회
  • status query parameter로 PENDING, APPROVED, REJECTED 필터링 지원
  • 대상 동아리명과 카테고리 포함

공식 인증 요청 승인 및 반려

  • PATCH /api/v1/admin/clubs/verifications/{id}/status 추가
  • APPROVED, REJECTED 상태 처리 지원
  • 반려 시 reject_reason 필수 검증
  • 승인 시 대상 동아리의 is_official_verifiedtrue로 변경하고 verified_at 기록
  • 이미 처리된 요청에 대한 재처리 시 409 Conflict 반환
  • 요청 상태 변경과 동아리 인증 상태 변경을 transaction으로 처리

공통 변경

  • 운영진 전용 endpoint들을 middleware 인증 matcher에 추가
  • admin API request/response Zod schema 추가
  • OpenAPI path, request schema, response schema, example 추가
  • 운영진 권한 검증은 기존 UserService.assertAdminRole 패턴을 사용

검증

  • pnpm lint

기존 unrelated lint warning은 남아 있으나, 이번 변경으로 인한 lint error는 없습니다.

@yabsed yabsed merged commit 8193542 into develop May 5, 2026
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