Skip to content

출석 수정 API 구현#140

Merged
chan99k merged 9 commits intomainfrom
learning-manager-100_attendance-record-update-by-manager
Dec 10, 2025
Merged

출석 수정 API 구현#140
chan99k merged 9 commits intomainfrom
learning-manager-100_attendance-record-update-by-manager

Conversation

@chan99k
Copy link
Collaborator

@chan99k chan99k commented Dec 10, 2025

💡 Motivation and Context

이번 PR은 출석 수정 API를 구현합니다.


출석 수정 API

  • 수정 요청/승인/거절 3개 엔드포인트 추가

  • Event Sourcing 패턴으로 모든 변경 이력 기록

  • 역할 계층 기반 승인 권한 제어 (MENTOR < MANAGER < LEAD_MANAGER < REGISTRAR/ADMIN)

  • AttendanceEvent에 CorrectionRequested, StatusCorrected, CorrectionRejected 추가

  • Attendance에 requestCorrection, approveCorrection, rejectCorrection 메서드 추가

  • SystemRole에 SUPERVISOR, OPERATOR, REGISTRAR, AUDITOR 추가

  • CourseRole에 LEAD_MANAGER 추가

Java 21 업그레이드

  • Gradle toolchain 17 -> 21
  • GitHub Actions workflow Java 버전 업데이트
  • switch 패턴 매칭 적용 (AttendanceEventDocument)

🌟 More

API 엔드포인트

Method Endpoint 설명
POST /api/v1/attendance/{id}/correction-requests 수정 요청
PATCH /api/v1/attendance/{id}/correction-requests/approve 승인
PATCH /api/v1/attendance/{id}/correction-requests/reject 거절

체크리스트

  • 추가/변경에 대한 테스트
  • 코드 컨벤션

🤟🏻 PR로 완료된 이슈

closes #

- `CourseRole`에 `LEAD_MANAGER` 역할 추가
- `SystemRole`에 `SUPERVISOR`, `OPERATOR`, `REGISTRAR`, `AUDITOR` 역할 추가
- `StatusCorrected` 이벤트 클래스 추가
- `AttendanceEvent`에 `StatusCorrected`, `CorrectionRequested`, `CorrectionRejected` 이벤트 추가
- `CorrectionRequested`, `CorrectionRejected` 이벤트 클래스 추가 및 관련 메서드 구현
- 출석 상태 수정 요청 메서드 추가 (`requestCorrection`)
- 수정 요청 승인 및 상태 변경 메서드 추가 (`approveCorrection`)
- 수정 요청 거절 메서드 추가 (`rejectCorrection`)
- 대기 중인 요청 검증 로직 구현 및 관련 예외 추가
- `AttendanceProblemCode`에 새로운 에러 코드 추가
- 출석 상태 수정 요청 메서드 추가 (`request`)
- 수정 요청 승인 메서드 추가 (`approve`)
- 수정 요청 거절 메서드 추가 (`reject`)
- 필수 필드 검증 로직 구현 및 관련 예외 추가
- `AttendanceProblemCode`에 새로운 에러 코드 추가 (`DAL403`, `DAL404`)
- 출석 상태 수정 요청 API 추가 (`requestCorrection`)
- 수정 요청 승인 API 추가 (`approveCorrection`)
- 수정 요청 거절 API 추가 (`rejectCorrection`)
- 서비스 계층 구현 및 출석 기록 조회/예외 처리 로직 추가
- `AttendanceProblemCode`에 새로운 에러 코드 추가 (`DAL005`, `DAL500`)
- 입력값 검증 로직 추가 및 관련 예외 처리
- Controller에서 요청 및 응답 처리 로직 구현
- GitHub Actions 워크플로우에서 Java 기본 버전 변경 (`17` → `21`)
- Gradle Java Toolchain에서 Java 버전 설정 변경 (`17` → `21`)
- `AttendanceEventDocument` 클래스 분리 및 이벤트 처리 로직 구현
- `AttendanceSecurity` 클래스 추가 및 출석 수정 요청/승인 권한 로직 구현
- `AttendanceCorrectionRequestServiceTest` 클래스 추가 및 요청 테스트 케이스 작성
- `AttendanceCorrectionApprovalServiceTest` 클래스 추가 및 승인 테스트 케이스 작성
- `AttendanceCorrectionRejectionServiceTest` 클래스 추가 및 거절 테스트 케이스 작성
- `AttendanceTest`에 도메인 로직 테스트 케이스 추가 (수정 요청, 승인, 거절 로직 포함)
@chan99k chan99k added 💡 feat 기능 추가 혹은 개선 🐕‍🦺 backend 백엔드 로직 labels Dec 10, 2025
@github-actions
Copy link

github-actions bot commented Dec 10, 2025

테스트 커버리지 리포트

Overall Project 66.57% -2.88% 🍏
Files changed 60.26% 🍏

File Coverage
AttendanceCorrectionRequestService.java 100% 🍏
AttendanceEvent.java 100% 🍏
StatusCorrected.java 100% 🍏
AttendanceCorrectionRejectionService.java 100% 🍏
CorrectionRequested.java 100% 🍏
AttendanceCorrectionApprovalService.java 100% 🍏
AttendanceQueryRepository.java 100% 🍏
CorrectionRejected.java 100% 🍏
CourseRole.java 100% 🍏
SystemRole.java 100% 🍏
Attendance.java 98.89% -0.28% 🍏
AttendanceProblemCode.java 97.86% 🍏
AttendanceQueryAdapter.java 85.04% -12.6%
AttendanceCorrectionApproval.java 84.38% -15.63% 🍏
AttendanceCorrectionRequest.java 80.77% -19.23% 🍏
AttendanceDocument.java 77.32% 🍏
AttendanceCorrectionRejection.java 75% -25% 🍏
AttendanceEventDocument.java 35.83% -64.17%
CorrectionRequest.java 0%
AttendanceRejectionRequest.java 0%
AttendanceCorrectionController.java 0%
AttendanceSecurity.java 0%

- `findById` 메서드 실행 시 잘못된 ObjectId 처리 로직 구현
- 불필요한 공백 제거 및 코드 정리
- 출석 수정 요청 권한 확인 어노테이션 수정
@chan99k chan99k merged commit 8560a2f into main Dec 10, 2025
4 checks passed
@chan99k chan99k deleted the learning-manager-100_attendance-record-update-by-manager branch December 10, 2025 13:05
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

💡 feat 기능 추가 혹은 개선 🐕‍🦺 backend 백엔드 로직

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant