Skip to content

✨ Feat: 사용자 제재 API 개발 완료#178

Open
nahjjun wants to merge 45 commits intodevelopfrom
feature/userAdmin
Open

✨ Feat: 사용자 제재 API 개발 완료#178
nahjjun wants to merge 45 commits intodevelopfrom
feature/userAdmin

Conversation

@nahjjun
Copy link
Copy Markdown
Member

@nahjjun nahjjun commented Apr 11, 2026

#️⃣연관된 이슈

📝작업 내용

1. 특정 사용자에게 제재를 적용하는 API 개발.

  • 특정 사용자가 편지 or 오늘의 질문 도메인에 대해 제재를 받게 되면, 아래와 같은 작업들을 할 수 없게 됩니다.
    1. 편지 도메인 제재 시
    • GET /plaza/letters/inbox/next : 도착한 편지 1건 조회
    • GET /plaza/letters/inbox/{letterId} : 답장 대기 편지 상세 조회
    • POST /plaza/letters : 편지 작성
    • POST /plaza/letters/{letterId}/reply : 편지 답장 작성
      2. 오늘의 질문 도메인 제재 시
    • POST /questions/answers : 답변 작성
    • PUT /questions/answers : 답변 수정
    • DELETE /questions/answers/{answerId} : 답변 삭제
  • 특정 사용자에게 제재가 가해진 상태로 동일한 도메인의 제재가 가해지지 못합니다. 다른 도메인의 제재는 가해질 수 있습니다.
  • 특정 사용자에게 제재가 가해지더라도, User 엔티티의 UserStatus는 변화하지 않습니다.
    (향후 편지, 오늘의 질문 도메인이 아니라 "계정 완전 정지" 기능을 추가할 때 UserStatus가 SUSPENDED로 바뀌도록 하는 것으로 생각 중입니다.)
  • DailySchedulare에 매일 자정마다 특정 사용자의 제재 기간이 지났는지 확인한 후, 기간이 지났다면 제재 상태를 EXPIRED로 변화시키는 Bulk 연산 스케줄러를 등록했습니다.

2. 특정 사용자에게 가해진 제재를 조회하는 API 개발

  • 특정 사용자에게 가해진 제재를 ACTIVE | CANCELED | EXPIRED로 필터링해서 조회할 수 있습니다. (지정안했을 때 전체 조회도 가능합니다)

3. 특정 사용자의 제재 취소 API 개발

  • ACTIVE 상태엔 제재만 해제할 수 있습니다.
  • 해당 제재가 이미 취소된 상태이거나 제재가 이미 만료된 경우, 예외를 발생시킵니다.

💬리뷰 요구사항

  • 비즈니스적으로 로직의 흐름이 정확한지 코드 검수가 필요할 것 같습니다.
  • 비즈니스적 흐름이 적절한지도 판단이 필요합니다.
  • 스케줄러가 Bulk연산으로 DB에 있는 "제재 기간이 지난 제재 인스턴스"의 상태를 EXPIRED로 바꿀 때, 관리자가 해당 제재 인스턴스의 상태를 CANCELED로 동시에 바꾸는 상황에서 동시성 이슈가 일어나지는 않는지 검토가 필요할 것 같습니다.

nahjjun and others added 30 commits April 6, 2026 09:30
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- required=true인 파라미터 누락 감지 핸들러
- 파라미너 타입 불일치 핸들러
- 지원하지 않는 HTTP 메서드 핸들러
- 지원하지 않는 Content-Type 핸들러
- 존재하지 않는 URL 핸들러
- 신고 타입 핕러 -> REPORTER로 조회해도 REPORTED 속성으로 조회되는 버그
- LetterReportAdminService, PlazaLetterService Conflict 해결
nahjjun and others added 15 commits April 10, 2026 14:36
- AdminRestrictionControllerDocs, AdminRestrictionController 생성
  - POST /admin/users/{userId}/restrictions (7일 제재 적용)
  - @AuthenticationPrincipal로 관리자 ID 추출
- RestrictionCreateReqDto / RestrictionCreateResDto 추가
- RestrictionDomainType(LETTER|QUESTION_ANSWER), RestrictionStatus(ACTIVE|CANCELED) enum 추가
- AdminRestrictionService 인터페이스 + stub 구현체 추가 (Entity/Repository 구현 전 임시)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Restriction 도메인 - 관리자 사용자 제재 적용 API 구조 추가
- AdminRestrictionControllerDocs, AdminRestrictionController
- RestrictionCreateReqDto / RestrictionCreateResDto
- RestrictionDomainType, RestrictionStatus enum
- AdminRestrictionService 인터페이스 + stub 구현체
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@nahjjun nahjjun self-assigned this Apr 11, 2026
@nahjjun nahjjun added the Feature New feature or request label Apr 11, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Feature New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant