Skip to content
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

Conversation

seongjae6751
Copy link
Contributor

🔥 연관 이슈

🚀 작업 내용

사용자 id를 받아서 다음과 같이 동작합니다.

동작 과정:

1. 학생 검증
Student 테이블에서 해당 학생의 정보(학과, 학번 등)를 확인합니다.
학과나 학번이 누락된 경우 예외를 발생시킵니다.

2. 시간표 데이터 조회
학생이 수강한 모든 강의를 조회하고, 각 강의가 소속된 대학 요람 데이터(Catalog)를 가져옵니다.
강의명(lectureName), 학생의 입학 연도, 학과 정보를 바탕으로 대학 요람 정보를 조회합니다.

3. 이수구분별 학점 계산
조회된 Catalog 데이터를 기반으로, 각 이수구분(courseType)별로 학점을 합산합니다.

4. 졸업 요건 비교
학생의 학과와 입학 연도를 기준으로 StandardGraduationRequirements에서 졸업 기준 정보를 가져옵니다.
각 이수구분별 졸업 기준 학점과 계산된 학점을 비교합니다.

5. 결과 저장 및 반환
각 이수구분별 계산 결과를 StudentCourseCalculation 테이블에 저장하거나 업데이트합니다.
응답 객체(GraduationCourseCalculationResponse)를 생성하여 클라이언트에 반환합니다.

💬 리뷰 중점사항

@seongjae6751 seongjae6751 self-assigned this Dec 28, 2024
@github-actions github-actions bot added the 기능 새로운 기능을 개발합니다. label Dec 28, 2024
Copy link
Contributor

@Soundbar91 Soundbar91 left a 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(
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

R

Schema 어노테이션 설정이랑 개행이 필요해보여요..!

private int updateStudentCourseCalculation(Integer userId, Student student, StandardGraduationRequirements requirement,
Map<Integer, Integer> courseTypeCreditsMap) {
if (requirement.getCourseType() == null) {
throw new IllegalStateException("CourseType이 null입니다.");
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

C

표준 예외를 사용한다면, IllegalArgumentException가 적절 해 보이는데 어떻게 생각하시나요 ??

Comment on lines 127 to 128
if (student.getStudentNumber() == null) {
DepartmentNotFoundException.withDetail("학번을 추가하세요.");
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

C

학번 예외라서 학과 예외 말고 다른 예외를 사용하는 것이 좋아 보여요 !

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

C

이 부분에서 예외처리 메소드를 하나 만들어서 묶어서 처리하는 것도 좋을 거 같아요

Comment on lines +142 to +144
List<Catalog> catalogs = catalogRepository.findByLectureNameAndYearAndDepartment(
lectureName, studentYear, student.getDepartment());
catalogList.addAll(catalogs);
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

C

과목 이름, 학년, 학과로 조회를 하면 이수구분이 하나로 특정될 것 같다는 생각이 드는데, 리스트로 받는 케이스가 있는지 궁금합니다 !

Copy link
Contributor

@duehee duehee left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

앞 관규님이 엄청 잘.. 찾아주셨네요👍 킹 관 규
고생하셨습니다~

Comment on lines 127 to 128
if (student.getStudentNumber() == null) {
DepartmentNotFoundException.withDetail("학번을 추가하세요.");
Copy link
Contributor

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())
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A

flatMap은 처음 보는데, 사용성이 좋네요👀

Comment on lines 26 to 27
import in.koreatech.koin.domain.timetableV2.repository.TimetableFrameRepositoryV2;
import lombok.RequiredArgsConstructor;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

C

한 줄 개행해주세요!!

Suggested change
import in.koreatech.koin.domain.timetableV2.repository.TimetableFrameRepositoryV2;
import lombok.RequiredArgsConstructor;
import in.koreatech.koin.domain.timetableV2.repository.TimetableFrameRepositoryV2;
import lombok.RequiredArgsConstructor;

@seongjae6751 seongjae6751 merged commit be3ec5e into feature/detect-graduation Jan 3, 2025
2 checks passed
@seongjae6751 seongjae6751 deleted the feature/860-new-graduation-course-calculation branch January 3, 2025 14:00
kwoo28 added a commit that referenced this pull request Jan 4, 2025
* 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]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
기능 새로운 기능을 개발합니다.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants