Conversation
📝 WalkthroughWalkthrough키워드 분석 결과를 조회하는 Changes최신 키워드 분석 조회 API
Possibly related PRs
🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
Comment |
Backend CI Report
|
Codecov Report✅ All modified and coverable lines are covered by tests. 📢 Thoughts on this report? Let us know! |
There was a problem hiding this comment.
🧹 Nitpick comments (1)
src/main/java/com/daon/rewrite/keywordanalysis/dto/LatestKeywordAnalysisResponse.java (1)
15-25: 🗄️ Data Integrity & Integration | 🔵 Trivial | ⚡ Quick win내부 enum 이름을 API 응답 문자열로 직접 노출
result.keywordAnalysis().getStatus().name()을 그대로 응답status로 사용하고 있습니다. 현재는KeywordAnalysisStatus가PROCESSING/COMPLETED/FAILED만 가지고 있어 문제없지만, 이 방식은 내부 엔티티 enum과 외부 API 계약을 암묵적으로 결합시킵니다. 추후 enum 값이 리네임되거나 새로운 상태가 추가되면 API 응답 문자열이 의도치 않게 변경/누출될 수 있습니다.NOT_STARTED_STATUS처럼 명시적으로 매핑하는 편이 계약 안정성 측면에서 더 안전합니다.♻️ 명시적 상태 매핑 예시
public static LatestKeywordAnalysisResponse from(LatestKeywordAnalysisResult result) { if (result.keywordAnalysis() == null) { return new LatestKeywordAnalysisResponse(NOT_STARTED_STATUS, List.of()); } return new LatestKeywordAnalysisResponse( - result.keywordAnalysis().getStatus().name(), + toStatus(result.keywordAnalysis().getStatus()), result.keywords().stream() .map(KeywordResponse::from) .toList() ); } + + private static String toStatus(KeywordAnalysisStatus status) { + return switch (status) { + case PROCESSING -> "PROCESSING"; + case COMPLETED -> "COMPLETED"; + case FAILED -> "FAILED"; + }; + }🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@src/main/java/com/daon/rewrite/keywordanalysis/dto/LatestKeywordAnalysisResponse.java` around lines 15 - 25, The LatestKeywordAnalysisResponse.from mapping is leaking the internal KeywordAnalysisStatus enum name directly into the API response. Update the status conversion in LatestKeywordAnalysisResponse.from so it uses an explicit mapping from result.keywordAnalysis().getStatus() to the outward-facing status string, similar to NOT_STARTED_STATUS, instead of calling name() on the enum. Keep the keyword list mapping unchanged.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Nitpick comments:
In
`@src/main/java/com/daon/rewrite/keywordanalysis/dto/LatestKeywordAnalysisResponse.java`:
- Around line 15-25: The LatestKeywordAnalysisResponse.from mapping is leaking
the internal KeywordAnalysisStatus enum name directly into the API response.
Update the status conversion in LatestKeywordAnalysisResponse.from so it uses an
explicit mapping from result.keywordAnalysis().getStatus() to the outward-facing
status string, similar to NOT_STARTED_STATUS, instead of calling name() on the
enum. Keep the keyword list mapping unchanged.
ℹ️ Review info
⚙️ Run configuration
Configuration used: Repository UI
Review profile: CHILL
Plan: Pro
Run ID: 244beae6-86f7-4ad0-8fbf-9fad091d93aa
📒 Files selected for processing (14)
docs/api/README.mddocs/api/keyword-analysis.mddocs/status.mdsrc/main/java/com/daon/rewrite/keywordanalysis/controller/KeywordAnalysisController.javasrc/main/java/com/daon/rewrite/keywordanalysis/dto/LatestKeywordAnalysisResponse.javasrc/main/java/com/daon/rewrite/keywordanalysis/entity/KeywordAnalysis.javasrc/main/java/com/daon/rewrite/keywordanalysis/entity/KeywordAnalysisKeyword.javasrc/main/java/com/daon/rewrite/keywordanalysis/repository/KeywordAnalysisKeywordRepository.javasrc/main/java/com/daon/rewrite/keywordanalysis/service/KeywordAnalysisService.javasrc/main/java/com/daon/rewrite/keywordanalysis/service/LatestKeywordAnalysisResult.javasrc/test/java/com/daon/rewrite/keywordanalysis/controller/KeywordAnalysisControllerTest.javasrc/test/java/com/daon/rewrite/keywordanalysis/repository/KeywordAnalysisKeywordRepositoryTest.javasrc/test/java/com/daon/rewrite/keywordanalysis/repository/KeywordAnalysisRepositoryTest.javasrc/test/java/com/daon/rewrite/keywordanalysis/service/KeywordAnalysisServiceTest.java
작업 내용
GET /cover-letters/{coverLetterId}/keyword-analysis/latestAPI를 추가했습니다.status와keywords만 반환하도록 정리했습니다.status: NOT_STARTED,keywords: []status: PROCESSING,keywords: []status: COMPLETED,keywords: [...]status: FAILED,keywords: []KeywordAnalysisKeywordentity/repository를 추가해 완료된 키워드 결과를keyword_order기준으로 조회할 수 있게 했습니다.KeywordAnalysis가 아니라 기존LlmJob책임으로 유지하고, API-021 응답과keyword_analyses에는 error 필드를 두지 않도록 정리했습니다.docs/status.md를 구현 상태와 맞췄습니다.관련 이슈
문서 반영
docs/api/README.mddocs/api/keyword-analysis.mddocs/status.md확인 결과
./gradlew test./gradlew checkgit diff --check,./gradlew test --tests '*KeywordAnalysisControllerTest',./gradlew test --tests '*KeywordAnalysis*'Summary by CodeRabbit
New Features
Bug Fixes