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

fix: timetableLecture 오류 수정 #1096

Merged
merged 14 commits into from
Nov 28, 2024
Merged

Conversation

Soundbar91
Copy link
Contributor

@Soundbar91 Soundbar91 commented Nov 27, 2024

🔥 연관 이슈

🚀 작업 내용

  • 기존 데이터에 , , ,와 같은 데이터가 있으면 인덱스가 터지는 버그를 고쳤습니다.
    • ,구분자로 데이터를 자르고 공백을 지운 상태로 시간과 매핑을 하는데, 인덱스가 강의 장소 배열보다 넘치게 되는 경우가 발생해서 처리를 했습니다.
  • 리펙토링 과정에서 frame 권한 여부 확인을 frame id와 user id와 매칭하고 있어서 수정했습니다.

💬 리뷰 중점사항

@Soundbar91 Soundbar91 added 버그 정상적으로 동작하지 않는 문제상황입니다. Team User 유저 팀에서 작업할 이슈입니다 labels Nov 27, 2024
@Soundbar91 Soundbar91 self-assigned this Nov 27, 2024
Copy link

github-actions bot commented Nov 27, 2024

Unit Test Results

339 tests   338 ✔️  1m 29s ⏱️
  41 suites      1 💤
  41 files        0

Results for commit 92230fb.

♻️ This comment has been updated with latest results.

Copy link
Contributor

@seongjae6751 seongjae6751 left a comment

Choose a reason for hiding this comment

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

고생하셨습니다!

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.

오늘 고생이 많으시네용.. :p

Copy link
Contributor

@kwoo28 kwoo28 left a comment

Choose a reason for hiding this comment

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

수고 많으셨습니다! 어려운 사항을 다루느라 항상 고생이 많으신것같습니다..

@@ -83,7 +82,25 @@ public record ClassInfo(
public static List<ClassInfo> of(String classTime, String classPlace) {
// 정규 강의인 경우 강의 장소가 없기 때문에 바로 반환
if (classPlace == null) {
return List.of(new ClassInfo(parseClassTimes(classTime), null));
String[] split = classTime.substring(1, classTime.length() - 1).trim().split(",\\s*");
Copy link
Contributor

Choose a reason for hiding this comment

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

R

classTime이 null값이면 NPE발생할것같아요!

Copy link
Contributor Author

Choose a reason for hiding this comment

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

정규 강의인 경우 getClassTime 메소드를 사용해서 null 체크를 하고 있습니다 !

Copy link
Contributor

@kwoo28 kwoo28 Nov 27, 2024

Choose a reason for hiding this comment

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

커스텀인 경우에는 발생하지않나요?? 이번에 stage에서 생긴 Cannot invoke "java.util.Collection.toArray()" because "c" is null 오류가 이 부분같다고 생각이 드는데.. 지금 로컬에서 테스트해봤는데, 커스텀 생성에 class_time값을 null을 주면 똑같은 오류 발생하고있습니다!

Copy link
Contributor Author

Choose a reason for hiding this comment

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

커스텀인 경우 class_time이 null이 되면 안되는 것을 dto에서 어노테이션을 통해 검증을 해야하는데, 정규 강의의 경우 class_time를 null로 추기 때문에 발생하는 문제라고 생각합니다.

Copy link
Contributor

Choose a reason for hiding this comment

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

음.. 그러면 pr에 수정된 코드는 해결된건가요?? 일단 승인하겠습니다!

@@ -83,7 +82,25 @@ public record ClassInfo(
public static List<ClassInfo> of(String classTime, String classPlace) {
// 정규 강의인 경우 강의 장소가 없기 때문에 바로 반환
Copy link
Contributor

Choose a reason for hiding this comment

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

R

이번 PR내용은 아니긴한데.. 정규강의도 강의 장소 추가가 가능합니다!
관련 슬랙 스레드 링크 : https://bcsdlab.slack.com/archives/C06NEM6EY3W/p1728732635463599

Copy link
Contributor Author

Choose a reason for hiding this comment

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

이 부분은 주석 설명이 잘못된 것 같습니다.
장소가 없는 경우에 시간과 매칭을 할 수 없기 때문에 관련해서 작성한 부분입니다.

@@ -83,7 +82,25 @@ public record ClassInfo(
public static List<ClassInfo> of(String classTime, String classPlace) {
// 정규 강의인 경우 강의 장소가 없기 때문에 바로 반환
if (classPlace == 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

혹시 classPlace를 굳이 null로 조건문을 달아서 따로 로직 처리하는 이유가 있나요?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

강의 시간은 무조건 현재 존재하지만, 장소는 존재하지 않는 경우가 존재합니다.
초기 정규 강의는 classPlace가 null이기 때문에 체크를 하지 않으면 에러가 반환이 되서 조건문을 달았습니다.

@@ -83,7 +82,25 @@ public record ClassInfo(
public static List<ClassInfo> of(String classTime, String classPlace) {
Copy link
Contributor

@kwoo28 kwoo28 Nov 27, 2024

Choose a reason for hiding this comment

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

A

전체적인 of()메서드의 로직부분에 대한 제안해봅니다.

classTime 반복문 내에서 classPlace관련 로직을 다루는것보다, 각각 시간과 장소에 대한 로직을 분리해서 for문으로 돌리는게 좋지않을까요??

제가 생각한방식은 처음에 class_time관련된 부분은 -1구분자로 나눠서 2차원 배열로 만든 후에, class_time과 class_place중에 max_size를 알아낸 후에, 그 max_size크기 만큼 각각 class_time과 class_place에서 for문 돌리면서 쌍을 맞추는 방식은 어떨까요? (이 부분 무시하셔도 될것같습니다..)

일단 지금은 에러 수정사항이니 이 부분은 리팩토링으로 두면 어떨까 생각합니다!

Copy link
Contributor Author

Choose a reason for hiding this comment

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

넵 리펙토링으로 남기겠습니다.

@Soundbar91 Soundbar91 changed the title fix: timetableLecture 인덱스 에러 수정 fix: timetableLecture 오류 수정 Nov 27, 2024
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 +126 to +127
lecture_id가 있는 경우 class_infos, professor은 null, grades는 '0'으로 입력해야합니다.\n
lecture_id가 없는 경우 class_infos, professor, grades을 선택적으로 입력합니다.
Copy link
Contributor

Choose a reason for hiding this comment

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

A

설명이 자세해져서 좋은 거 같아요!

@@ -70,7 +72,7 @@ private TimetableLectureResponse getTimetableLectureResponse(Integer userId, Tim
public void deleteTimetableLectures(List<Integer> request, Integer userId) {
request.stream()
.map(timetableLectureRepositoryV2::getById)
.peek(lecture -> validateUserAuthorization(lecture.getTimetableFrame().getId(), userId))
.peek(lecture -> validateUserAuthorization(lecture.getTimetableFrame().getUser().getId(), userId))
Copy link
Contributor

Choose a reason for hiding this comment

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

A

이 부분을 제대로 안 읽은 리뷰어의 잘못..👀

@Soundbar91 Soundbar91 merged commit a3c3ae4 into develop Nov 28, 2024
4 checks passed
@Soundbar91 Soundbar91 deleted the fix/1095-timetable-lecture branch November 28, 2024 07:18
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Team User 유저 팀에서 작업할 이슈입니다 버그 정상적으로 동작하지 않는 문제상황입니다.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

timetableLecture 오류 수정
4 participants