Skip to content

Conversation

@dkdltm221
Copy link
Contributor

@dkdltm221 dkdltm221 commented Jan 26, 2026

Summary

졸업 대상자 페이징 조회 API 호출 시 지도교수 필드가 함께 전달되도록 수정했습니다.

Tasks

  • GraduationUserSummaryResponse 스키마에 필드 추가
  • GraduationUserSummaryPageResponse example 문자열 수정

@dkdltm221 dkdltm221 self-assigned this Jan 26, 2026
@dkdltm221 dkdltm221 added the ✨feature create new feature label Jan 26, 2026
@coderabbitai
Copy link
Contributor

coderabbitai bot commented Jan 26, 2026

개요

GraduationUserSummaryResponse에 advisor 필드를 추가하고, 이를 GraduationUserSummaryPageResponse의 JSON 예제 페이로드에 반영하는 변경사항입니다.

변경사항

코호트 / 파일 변경 요약
응답 모델 확장
aics-admin/src/main/java/kgu/developers/admin/graduationUser/presentation/response/GraduationUserSummaryResponse.java
String 타입의 advisor 필드와 Swagger 스키마 어노테이션 추가. factory 메서드를 통해 graduationUser.getAdvisorProfessor()에서 advisor 값을 설정
예제 페이로드 업데이트
aics-admin/src/main/java/kgu/developers/admin/graduationUser/presentation/response/GraduationUserSummaryPageResponse.java
JSON 예제 스니펫에 "advisor" 필드 추가 (예: "advisor": "김교수", "advisor": "이순신")

예상 코드 리뷰 노력

🎯 2 (Simple) | ⏱️ ~8 분

관련 이슈

추천 리뷰어

  • LeeHanEum
🚥 Pre-merge checks | ✅ 2 | ❌ 1
❌ Failed checks (1 warning)
Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (2 passed)
Check name Status Explanation
Title check ✅ Passed PR 제목은 변경 사항의 주요 내용을 명확하게 요약하고 있습니다. 졸업 대상자 조회 API에 지도교수 필드를 추가하는 기능 변경을 정확하게 설명합니다.
Description check ✅ Passed PR 설명이 변경 사항과 관련이 있으며, 지도교수 필드 추가라는 구체적인 내용을 포함하고 있습니다.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing touches
  • 📝 Generate docstrings

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 and usage tips.

@github-actions
Copy link

Test Coverage Report

Overall Project 80.75% 🍏

There is no coverage information present for the Files changed

@codecov
Copy link

codecov bot commented Jan 26, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.

Impacted file tree graph

@@            Coverage Diff             @@
##             develop     #323   +/-   ##
==========================================
  Coverage      87.25%   87.25%           
  Complexity        67       67           
==========================================
  Files             24       24           
  Lines            259      259           
  Branches          14       14           
==========================================
  Hits             226      226           
  Misses            21       21           
  Partials          12       12           

Continue to review full report in Codecov by Sentry.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 3e966da...7036ff8. Read the comment docs.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 1

🤖 Fix all issues with AI agents
In
`@aics-admin/src/main/java/kgu/developers/admin/graduationUser/presentation/response/GraduationUserSummaryResponse.java`:
- Around line 30-31: The response field advisor in GraduationUserSummaryResponse
is marked required but populated from a nullable advisorProfessor, causing a
schema contract violation; fix by making the mapping null-safe (preferred):
ensure the DTO sets advisor = advisorProfessor != null ? advisorProfessor : "정보
없음" (or another sensible default) when constructing
GraduationUserSummaryResponse (or via its builder/constructor), alternatively
add `@NotNull/NOT` NULL to the domain field advisorProfessor or change the
`@Schema`(requiredMode) to NOT_REQUIRED — pick one of these and apply consistently
so advisor never violates the declared required contract.
🧹 Nitpick comments (1)
aics-admin/src/main/java/kgu/developers/admin/graduationUser/presentation/response/GraduationUserSummaryPageResponse.java (1)

20-20: JSON 예시 문자열의 포맷팅 일관성

기존 코드는 쉼표 뒤에 공백을 포함하는 패턴(, ")을 사용하고 있으나, 새로 추가된 라인은 공백 없이(,") 작성되어 있습니다. 기능에는 영향이 없지만, 일관성을 위해 수정을 권장합니다.

♻️ 포맷팅 일관성을 위한 수정 제안
-                        + "\"advisor\": \"김교수\","
+                        + "\"advisor\": \"김교수\", "

Line 31도 동일하게 수정:

-                        + "\"advisor\": \"이순신\","
+                        + "\"advisor\": \"이순신\", "

Comment on lines 30 to 31
@Schema(description = "지도교수", example = "김교수", requiredMode = REQUIRED)
String advisor,
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟠 Major

🧩 Analysis chain

🏁 Script executed:

find . -type f -name "GraduationUserSummaryResponse.java" | head -5

Repository: kgu-developers/aics-server

Length of output: 189


🏁 Script executed:

find . -type f -name "GraduationUser.java" | grep -E "(entity|domain)" | head -5

Repository: kgu-developers/aics-server

Length of output: 161


🏁 Script executed:

rg -n "class GraduationUserSummaryResponse" -A 80 --type=java

Repository: kgu-developers/aics-server

Length of output: 52


🏁 Script executed:

cat -n ./aics-admin/src/main/java/kgu/developers/admin/graduationUser/presentation/response/GraduationUserSummaryResponse.java

Repository: kgu-developers/aics-server

Length of output: 3100


🏁 Script executed:

cat -n ./aics-domain/src/main/java/kgu/developers/domain/graduationUser/domain/GraduationUser.java

Repository: kgu-developers/aics-server

Length of output: 2605


advisor REQUIRED인데 null 가능성으로 인한 스키마 계약 위반

advisorProfessor는 null 제약이 없는 순수 String 필드인데, 스키마는 requiredMode = REQUIRED로 선언되어 있습니다. 따라서 advisorProfessor가 null이면 API 응답이 REQUIRED 계약을 위반합니다.

다음 중 하나로 정리해주세요:

  1. DB/도메인 레벨에서 advisorProfessor에 @NotNull 또는 NOT NULL 제약 추가
  2. null-safe 기본값 처리 (라인 63의 graduationType처럼)
  3. requiredMode를 완화 (NOT_REQUIRED 또는 제거)
✅ null-safe 기본값 예시 (권장)
-            .advisor(graduationUser.getAdvisorProfessor())
+            .advisor(graduationUser.getAdvisorProfessor() != null
+                ? graduationUser.getAdvisorProfessor()
+                : "미정")
🤖 Prompt for AI Agents
In
`@aics-admin/src/main/java/kgu/developers/admin/graduationUser/presentation/response/GraduationUserSummaryResponse.java`
around lines 30 - 31, The response field advisor in
GraduationUserSummaryResponse is marked required but populated from a nullable
advisorProfessor, causing a schema contract violation; fix by making the mapping
null-safe (preferred): ensure the DTO sets advisor = advisorProfessor != null ?
advisorProfessor : "정보 없음" (or another sensible default) when constructing
GraduationUserSummaryResponse (or via its builder/constructor), alternatively
add `@NotNull/NOT` NULL to the domain field advisorProfessor or change the
`@Schema`(requiredMode) to NOT_REQUIRED — pick one of these and apply consistently
so advisor never violates the declared required contract.

@dkdltm221 dkdltm221 linked an issue Jan 27, 2026 that may be closed by this pull request
2 tasks
Copy link
Contributor

@2heunxun 2heunxun left a comment

Choose a reason for hiding this comment

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

LGTM ~ 고생하셨습니다.

@dkdltm221 dkdltm221 merged commit e212bb9 into develop Jan 27, 2026
5 checks passed
@dkdltm221 dkdltm221 deleted the feature/KD-67 branch January 27, 2026 06:38
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

✨feature create new feature

Projects

None yet

Development

Successfully merging this pull request may close these issues.

졸업 대상자 조회 API 지도교수 추가

3 participants