-
Notifications
You must be signed in to change notification settings - Fork 1
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
feat: 졸업학점 자신이 들은 학점 보여주는 기능 구현 #1155
feat: 졸업학점 자신이 들은 학점 보여주는 기능 구현 #1155
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
고생하셨습니다 💯
코멘트 확인 부탁드립니다 !
|
||
import java.util.List; | ||
|
||
public record GraduationCourseCalculationResponse( |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
R
Schema 어노테이션 설정이랑 개행이 필요해보여요..!
src/main/java/in/koreatech/koin/domain/graduation/dto/GraduationCourseCalculationResponse.java
Outdated
Show resolved
Hide resolved
src/main/java/in/koreatech/koin/domain/graduation/service/GraduationService.java
Outdated
Show resolved
Hide resolved
src/main/java/in/koreatech/koin/domain/graduation/service/GraduationService.java
Outdated
Show resolved
Hide resolved
src/main/java/in/koreatech/koin/domain/graduation/service/GraduationService.java
Outdated
Show resolved
Hide resolved
private int updateStudentCourseCalculation(Integer userId, Student student, StandardGraduationRequirements requirement, | ||
Map<Integer, Integer> courseTypeCreditsMap) { | ||
if (requirement.getCourseType() == null) { | ||
throw new IllegalStateException("CourseType이 null입니다."); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
C
표준 예외를 사용한다면, IllegalArgumentException가 적절 해 보이는데 어떻게 생각하시나요 ??
src/main/java/in/koreatech/koin/domain/graduation/service/GraduationService.java
Outdated
Show resolved
Hide resolved
if (student.getStudentNumber() == null) { | ||
DepartmentNotFoundException.withDetail("학번을 추가하세요."); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
C
학번 예외라서 학과 예외 말고 다른 예외를 사용하는 것이 좋아 보여요 !
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
C
이 부분에서 예외처리 메소드를 하나 만들어서 묶어서 처리하는 것도 좋을 거 같아요
List<Catalog> catalogs = catalogRepository.findByLectureNameAndYearAndDepartment( | ||
lectureName, studentYear, student.getDepartment()); | ||
catalogList.addAll(catalogs); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
C
과목 이름, 학년, 학과로 조회를 하면 이수구분이 하나로 특정될 것 같다는 생각이 드는데, 리스트로 받는 케이스가 있는지 궁금합니다 !
src/main/java/in/koreatech/koin/domain/graduation/service/GraduationService.java
Outdated
Show resolved
Hide resolved
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
앞 관규님이 엄청 잘.. 찾아주셨네요👍 킹 관 규
고생하셨습니다~
if (student.getStudentNumber() == null) { | ||
DepartmentNotFoundException.withDetail("학번을 추가하세요."); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
C
이 부분에서 예외처리 메소드를 하나 만들어서 묶어서 처리하는 것도 좋을 거 같아요
|
||
private List<Catalog> getCatalogListForStudent(Student student, String studentYear) { | ||
List<TimetableLecture> timetableLectures = timetableFrameRepositoryV2.getAllByUserId(student.getId()).stream() | ||
.flatMap(frame -> frame.getTimetableLectures().stream()) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
A
flatMap은 처음 보는데, 사용성이 좋네요👀
import in.koreatech.koin.domain.timetableV2.repository.TimetableFrameRepositoryV2; | ||
import lombok.RequiredArgsConstructor; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
C
한 줄 개행해주세요!!
import in.koreatech.koin.domain.timetableV2.repository.TimetableFrameRepositoryV2; | |
import lombok.RequiredArgsConstructor; | |
import in.koreatech.koin.domain.timetableV2.repository.TimetableFrameRepositoryV2; | |
import lombok.RequiredArgsConstructor; |
* feat: Repository추가 * feat: TimetableLecture CourseType 추가 * feat: 학번 혹은 학과 수정시 졸업요건 정보 업데이트 * feat: 졸업학점 계산 동의 api * feat: 시간표 변경 감지 * feat: 졸업학점 계산 동의 로직 수정 * feat: 학과 수정 로직 수정 * fix: 리뷰 반영 * feat: 졸업학점 자신이 들은 학점 보여주는 기능 구현 (#1155) * feat: 기능 구현 * chore: 리뷰 반영 * chore: 리뷰 반영 * chore: 리뷰 반영 * chore: 변경 여부에 따른 처리 로직 추가 * feat: 코드 충돌 해결 * fix: 테스트 에러 해결 --------- Co-authored-by: 김원경 <[email protected]> Co-authored-by: 김성재 <[email protected]>
🔥 연관 이슈
🚀 작업 내용
사용자 id를 받아서 다음과 같이 동작합니다.
동작 과정:
1. 학생 검증
Student 테이블에서 해당 학생의 정보(학과, 학번 등)를 확인합니다.
학과나 학번이 누락된 경우 예외를 발생시킵니다.
2. 시간표 데이터 조회
학생이 수강한 모든 강의를 조회하고, 각 강의가 소속된 대학 요람 데이터(Catalog)를 가져옵니다.
강의명(lectureName), 학생의 입학 연도, 학과 정보를 바탕으로 대학 요람 정보를 조회합니다.
3. 이수구분별 학점 계산
조회된 Catalog 데이터를 기반으로, 각 이수구분(courseType)별로 학점을 합산합니다.
4. 졸업 요건 비교
학생의 학과와 입학 연도를 기준으로 StandardGraduationRequirements에서 졸업 기준 정보를 가져옵니다.
각 이수구분별 졸업 기준 학점과 계산된 학점을 비교합니다.
5. 결과 저장 및 반환
각 이수구분별 계산 결과를 StudentCourseCalculation 테이블에 저장하거나 업데이트합니다.
응답 객체(GraduationCourseCalculationResponse)를 생성하여 클라이언트에 반환합니다.
💬 리뷰 중점사항