Skip to content

Conversation

@kgy1008
Copy link
Member

@kgy1008 kgy1008 commented Sep 25, 2025

📣 Jira Ticket

EDMT-450

Summary by CodeRabbit

  • New Features
    • 학생 기록 타입에 대한 문자열→타입 자동 변환을 지원하여 요청 처리 일관성을 개선.
  • Refactor
    • 공개 메트릭 엔드포인트 범위를 축소하여 보안을 강화(일부 actuator/metrics 비공개화).
  • Documentation
    • 내부 개발 가이드 문서(Claude 통합 안내) 제거.
  • Style
    • 프로덕션 Docker Compose 파일의 불필요한 공백 정리.
  • Chores
    • JMX Prometheus 에이전트 JAR을 Git에서 무시하지 않도록 변경(추적 가능).

@kgy1008 kgy1008 self-assigned this Sep 25, 2025
@coderabbitai
Copy link

coderabbitai bot commented Sep 25, 2025

Walkthrough

본 PR은 문서 파일 삭제, .gitignore 규칙 수정, Docker Compose 공백 정리, 보안 화이트리스트에서 일부 메트릭 엔드포인트 제거, 컨트롤러에 서비스 필드 추가, 그리고 String→StudentRecordType 변환기 컴포넌트 신규 추가를 포함합니다.

Changes

Cohort / File(s) Change Summary
Docs removal
./.claude/CLAUDE.md
프로젝트/개발 가이드 문서 전체 삭제.
Git ignore update
.gitignore
jmx_prometheus_javaagent*.jar 무시 규칙 제거.
Docker compose formatting
docker-compose.prod.yml
networks 블록 이후 불필요한 공백 라인 제거.
Security whitelist update
edukit-api/src/main/java/com/edukit/auth/security/config/SecurityWhitelist.java
"/actuator/metrics", "/metrics" 화이트리스트에서 제거. "/actuator/prometheus" 유지.
Controller wiring
edukit-api/src/main/java/com/edukit/studentrecord/controller/StudentRecordAIController.java
StudentRecordService import 및 private final StudentRecordService studentRecordService 필드 추가. 로직 변경 없음.
Type converter addition
edukit-core/src/main/java/com/edukit/core/common/converter/StudentRecordTypeConverter.java
Spring Converter<String, StudentRecordType> 컴포넌트 신규 추가. StudentRecordType.from(source)로 위임.

Sequence Diagram(s)

sequenceDiagram
    autonumber
    participant C as Client
    participant Ctl as StudentRecordAIController
    participant Conv as StudentRecordTypeConverter
    participant Svc as StudentRecordService

    C->>Ctl: 요청 (recordType=string)
    Note over Ctl,Conv: Spring 변환 단계
    Ctl->>Conv: convert(string)
    Conv-->>Ctl: StudentRecordType
    Ctl->>Svc: 처리 호출(StudentRecordType, ... )
    Svc-->>Ctl: 결과
    Ctl-->>C: 응답
Loading

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

Possibly related PRs

Suggested reviewers

  • TaegeunYou

Poem

새싹 같은 코드, 톡— 변환기 한 잔
메트릭 문 좁히고, 프롬etheus만 산책
컨트롤러엔 새 친구, 서비스와 도란도란
.jar 발자국 추적 OK, 깃이 반짝
깡총! 오늘도 릴리즈 정원에 별이 핀다 🐇✨

Pre-merge checks and finishing touches

❌ Failed checks (2 warnings, 1 inconclusive)
Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. You can run @coderabbitai generate docstrings to improve docstring coverage.
Description Check ⚠️ Warning PR 설명에 템플릿에 명시된 ‘작업 내용’과 ‘리뷰 요청 & 논의하고 싶은 내용’ 섹션이 누락되어 있어 필수 정보를 충족하지 못하고 있습니다. 템플릿에 따라 ‘작업 내용’과 ‘리뷰 요청 & 논의하고 싶은 내용’ 섹션을 구체적으로 작성하고, 필요 시 스크린샷을 추가하여 PR 설명을 보완해주세요.
Title Check ❓ Inconclusive 제목 “EDMT-450 패키지 구조 개선”은 실제 변경 사항 중 문서 삭제, .gitignore 수정, 보안 화이트리스트 조정, 새로운 컨버터 및 서비스 주입 추가 등 핵심 변경을 반영하지 못하며 너무 일반적이고 모호합니다. 제목을 변경하여 이번 PR의 주요 변경 사항(예: CLAUDE.md 삭제, 보안 엔드포인트 제한, StudentRecordTypeConverter 추가 등)을 간결하게 요약해 주세요.
✨ Finishing touches
  • 📝 Generate Docstrings
🧪 Generate unit tests
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch feat/EDMT-450

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link

@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: 0

🧹 Nitpick comments (2)
edukit-api/src/main/java/com/edukit/studentrecord/controller/StudentRecordAIController.java (1)

28-29: 불필요한 의존성 주입 정리 제안

StudentRecordService를 주입만 하고 사용하지 않아 현재로서는 의미 없는 의존성이 늘어난 상태입니다. 실제 사용 계획이 없다면 주입을 제거하거나, 곧바로 활용할 로직을 함께 반영해 주세요.

-    private final StudentRecordAIFacade studentRecordAIFacade;
-    private final StudentRecordService studentRecordService;
+    private final StudentRecordAIFacade studentRecordAIFacade;
edukit-core/src/main/java/com/edukit/core/common/converter/StudentRecordTypeConverter.java (1)

11-14: null/blank 입력 대응 추가 제안

Spring Converter 계약상 source가 null로 들어올 수 있으니, 바로 StudentRecordType.from에 위임하면 NPE가 발생할 수 있습니다. 선행 null/blank 체크 후 그대로 null을 반환하도록 하면 안전합니다.

     @Override
     public StudentRecordType convert(final String source) {
+        if (source == null || source.isBlank()) {
+            return null;
+        }
         return StudentRecordType.from(source);
     }
📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between d6456aa and e7dcbac.

📒 Files selected for processing (6)
  • .claude/CLAUDE.md (0 hunks)
  • .gitignore (0 hunks)
  • docker-compose.prod.yml (0 hunks)
  • edukit-api/src/main/java/com/edukit/auth/security/config/SecurityWhitelist.java (1 hunks)
  • edukit-api/src/main/java/com/edukit/studentrecord/controller/StudentRecordAIController.java (2 hunks)
  • edukit-core/src/main/java/com/edukit/core/common/converter/StudentRecordTypeConverter.java (1 hunks)
💤 Files with no reviewable changes (3)
  • .gitignore
  • docker-compose.prod.yml
  • .claude/CLAUDE.md
🧰 Additional context used
🧬 Code graph analysis (1)
edukit-core/src/main/java/com/edukit/core/common/converter/StudentRecordTypeConverter.java (1)
edukit-core/src/main/java/com/edukit/core/studentrecord/metric/StudentRecordMetricsCounter.java (1)
  • Component (9-54)
🔇 Additional comments (1)
edukit-api/src/main/java/com/edukit/auth/security/config/SecurityWhitelist.java (1)

17-19: 모니터링 접근성 영향 검토

/actuator/metrics/metrics가 인증 없이 열려 있지 않으면, 해당 엔드포인트를 조회하던 모니터링/헬스체크 잡이 401을 받게 됩니다. 운영 인프라 쪽에서 이 두 엔드포인트를 활용하고 있지 않은지 한 번 더 확인 부탁드립니다.

@kgy1008 kgy1008 merged commit 0015708 into develop Sep 25, 2025
2 checks passed
@kgy1008 kgy1008 deleted the feat/EDMT-450 branch September 25, 2025 06:36
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants