Skip to content

develop → main 배포 - #383

Merged
yoon6yo merged 8 commits into
mainfrom
develop
Aug 19, 2026
Merged

yoon6yo merged 8 commits into
mainfrom
develop

Conversation

@yoon6yo

@yoon6yo yoon6yo commented Aug 19, 2026

Copy link
Copy Markdown
Contributor

Summary

Test plan

  • ./gradlew test 전체 스위트 로컬 통과 (이 레포는 PR 대상 CI가 없어 로컬 실행이 유일한 검증 수단)

yoon6yo added 5 commits July 18, 2026 18:37
* feat: 관리자 신청/변경 요청 거절 시 사용자 이메일 발송 추가

- 신청 거절(rejectRequest): 서버명·거절 사유 포함 이메일 발송
- 변경 요청 거절(rejectModification): 변경 유형·거절 사유 포함 이메일 발송
- AlarmService에 sendRequestRejectedEmail, sendModificationRejectedEmail 추가
- messages.properties에 거절 안내 메일 템플릿 추가 (항목 9, 10)

* test: 거절 이메일 발송 테스트 추가

AlarmServiceTest
- sendRequestRejectedEmail: 이메일 수신자·제목 검증, noti 채널 로그 적재 검증, 메일 실패 시 에러 Slack 발송 검증
- sendModificationRejectedEmail: 동일 패턴 + 변경 유형 제목 포함 여부 검증

AdminRequestCommandServiceTest
- rejectRequest: 성공 시 sendRequestRejectedEmail 호출 검증, 사유 전달 검증, 실패 시 미발송 검증
- rejectModification: 성공 시 sendModificationRejectedEmail 호출 검증, 사유 전달 검증, 실패 시 미발송 검증
- [서버 정보] 섹션에 SSH·Jupyter 외 추가 포트 항목({7}) 표시 (없을 시 '없음')
- [초기 설정] 이후 [사용자 매뉴얼] 섹션 삽입 (Google Slides 링크)
- AlarmService.sendContainerCreatedEmail(): PodExternalPort 조회 후
  ssh/jupyter를 제외한 추가 포트를 계산하여 메일 본문에 포함
- AlarmServiceTest: SendContainerCreatedEmail 테스트 5건 추가
…email

feat: 컨테이너 배정 이메일에 추가 포트 및 사용자 매뉴얼 섹션 추가
이력 보존을 위해 Soft Delete 1년 경과 후 DB row를 완전히 삭제하던
로직을 제거한다. 경고 이메일 발송과 Soft Delete 처리는 그대로 유지되며,
비활성화된 계정은 삭제되지 않고 영구히 보존된다.
- 포트 요약 포맷 로직을 PodPortUtils로 공통화, 삭제 메일 N+1 쿼리 개선
- AdminUserService.deleteUser()가 withdraw()를 호출하지 않아 관리자 삭제 시 deletedAt이 기록되지 않던 버그 수정
- 유저 비활성 경고 메일에 Redis 기반 당일 중복 발송 방지 추가
- ChangeType.PORT 변경 요청 승인 시 항상 UNSUPPORTED_CHANGE_TYPE 예외가 나던 버그 수정
- approveRequest/approveModification에 행 잠금을 추가해 동시 승인 시 중복 provisioning 되는 race condition 제거
- 변경 요청 승인(EXPIRES_AT 외 전체 타입) 및 관리자 계정 삭제 시 누락됐던 안내 메일 추가
- GROUP 타입 변경 요청 승인이 항상 ClassCastException으로 실패하던 기존 버그 발견 및 수정

Closes #381
@coderabbitai

coderabbitai Bot commented Aug 19, 2026 •

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. 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: Repository UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 3951e13d-fe1c-446f-8266-aa11fcbe4e4d

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.

main(#374)에서만 존재하던 FARM pfSense 공인 포트 오프셋 변환 로직을 develop에 반영해 두 브랜치를 동기화. develop→main PR(#383)의 충돌 해소 목적.
…ebase-sync

# Conflicts:
#	src/main/java/DGU_AI_LAB/admin_be/domain/alarm/service/AlarmService.java
develop↔main의 merge-base를 최신으로 갱신하기 위한 1회성 진짜 머지. 스쿼시로는 merge-base가 갱신되지 않아 develop→main PR(#383)이 계속 거짓 충돌로 떴던 문제 해결.
@yoon6yo
yoon6yo merged commit 546cac5 into main Aug 19, 2026
1 check passed
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