[Feat] 분석 결과 핵심 강점 및 약점 필드 추가#139
Conversation
|
Warning Review limit reached
Next review available in: 44 minutes Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available. How can I continue?After more reviews become available, a review can be triggered using the To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews. How do review limits work?CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability. For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window. Please refer docs for additional details. Review details⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: ASSERTIVE Plan: Pro Plus Run ID: 📒 Files selected for processing (3)
📝 WalkthroughWalkthrough분석 LLM 응답과 API 응답에 강점·약점 하이라이트가 추가되었습니다. 하이라이트는 검증·정제 후 JSON으로 저장되고 조회 시 복원됩니다. 관련 데이터베이스 컬럼, 테스트, 프롬프트 규칙 및 Docker PostgreSQL 이미지가 변경되었습니다. Changes분석 하이라이트 파이프라인
PostgreSQL 이미지 변경
Estimated code review effort: 4 (Complex) | ~45 minutes Sequence Diagram(s)sequenceDiagram
participant AnalysisAiClient
participant AnalysisService
participant Analysis
participant AnalysisResponse
AnalysisAiClient->>AnalysisService: 하이라이트 포함 분석 결과 반환
AnalysisService->>AnalysisService: 하이라이트 검증 및 정제
AnalysisService->>Analysis: 하이라이트 JSON 저장
AnalysisService->>Analysis: 저장된 하이라이트 조회
AnalysisService->>AnalysisResponse: 하이라이트 포함 응답 생성
Possibly related PRs
Suggested reviewers: 🚥 Pre-merge checks | ✅ 3 | ❌ 2❌ Failed checks (2 warnings)
✅ Passed checks (3 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
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. Comment |
There was a problem hiding this comment.
Actionable comments posted: 2
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (1)
src/test/java/com/jobdri/jobdri_api/domain/analysis/service/AnalysisServiceTest.java (1)
763-808: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win하이라이트 경계 조건 테스트 보강 필요
missingKeywords는 저장 JSON이 깨졌을 때의 fallback(getAnalysisReturnsEmptyMissingKeywordsWhenPersistedJsonIsMalformed, 810-837라인)을 검증하지만, 동일하게 새로 추가된readHighlights(AnalysisService.java501-518)의 malformed JSON fallback은keyStrengths/keyWeaknesses에 대해 검증되지 않았습니다. 또한 다음 경계 조건도 현재 테스트에서 다루지 않습니다:
- LLM 응답의
keyStrengths/keyWeaknesses가null일 때buildHighlights의 null 분기가 정상 동작하는지 (missingKeywords의 null 케이스만 검증됨, 270-290라인)MAX_HIGHLIGHTS(=3) cap이 실제로 4개 이상의 고유하고 유효한 항목이 주어졌을 때 3개로 잘리는지 (현재는 중복 제거로 2→1만 확인)해피패스와 일부 필터링 케이스는 잘 다뤄지고 있으나, 새로 추가된 역직렬화 실패/널/cap 경계는 회귀 위험이 있는 지점이라 테스트 추가를 권장합니다.
As per path instructions,
src/test/**/*.java는 "테스트가 ... 실패 복구 ... 시나리오를 충분히 검증하는지 중점적으로 확인" 및 "해피패스만 있는 경우 경계 조건과 회귀 위험을 지적"하도록 요구합니다.🤖 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/test/java/com/jobdri/jobdri_api/domain/analysis/service/AnalysisServiceTest.java` around lines 763 - 808, AnalysisServiceTest에 readHighlights의 malformed JSON fallback을 keyStrengths와 keyWeaknesses 각각 검증하는 테스트를 추가하세요. LLM 응답의 keyStrengths 또는 keyWeaknesses가 null일 때 buildHighlights가 빈 결과를 반환하는 경우도 검증하세요. 또한 중복 없는 유효한 하이라이트 4개 이상을 입력해 MAX_HIGHLIGHTS 값인 3개로 제한되는지 확인하고, 기존 happy path 및 필터링 검증은 유지하세요.Source: Path instructions
🤖 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.
Inline comments:
In `@docker-compose.yml`:
- Line 83: Update the PostgreSQL service image reference in docker-compose.yml
from the mutable pgvector/pgvector:pg16 tag to the verified sha256 digest for
the intended image, preserving the pg16 image version and existing service
configuration.
In
`@src/main/java/com/jobdri/jobdri_api/domain/analysis/service/AnalysisService.java`:
- Around line 409-441: buildHighlights와 sanitizeStoredHighlights의 유효성 검사, 트림, 길이
제한, 정규화 기반 중복 제거, MAX_HIGHLIGHTS 제한 로직을 공통 제네릭 헬퍼로 통합하세요.
AnalysisLlmResponse.HighlightItem과 AnalysisHighlightResponse에서 title·quote를 추출하는
Function 기반 인자를 사용하고, 두 메서드는 각각 해당 추출기와 입력을 전달하도록 변경해 두 경로의 동작이 동일하게 유지되게 하세요.
---
Outside diff comments:
In
`@src/test/java/com/jobdri/jobdri_api/domain/analysis/service/AnalysisServiceTest.java`:
- Around line 763-808: AnalysisServiceTest에 readHighlights의 malformed JSON
fallback을 keyStrengths와 keyWeaknesses 각각 검증하는 테스트를 추가하세요. LLM 응답의 keyStrengths
또는 keyWeaknesses가 null일 때 buildHighlights가 빈 결과를 반환하는 경우도 검증하세요. 또한 중복 없는 유효한
하이라이트 4개 이상을 입력해 MAX_HIGHLIGHTS 값인 3개로 제한되는지 확인하고, 기존 happy path 및 필터링 검증은
유지하세요.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: ASSERTIVE
Plan: Pro Plus
Run ID: 47e4e49e-a772-48aa-8262-b5798af05682
📒 Files selected for processing (10)
docker-compose.ymlsrc/main/java/com/jobdri/jobdri_api/domain/analysis/dto/llm/AnalysisLlmResponse.javasrc/main/java/com/jobdri/jobdri_api/domain/analysis/dto/response/AnalysisHighlightResponse.javasrc/main/java/com/jobdri/jobdri_api/domain/analysis/dto/response/AnalysisResponse.javasrc/main/java/com/jobdri/jobdri_api/domain/analysis/entity/Analysis.javasrc/main/java/com/jobdri/jobdri_api/domain/analysis/service/AnalysisAiClient.javasrc/main/java/com/jobdri/jobdri_api/domain/analysis/service/AnalysisResultConstants.javasrc/main/java/com/jobdri/jobdri_api/domain/analysis/service/AnalysisService.javasrc/main/resources/schema.sqlsrc/test/java/com/jobdri/jobdri_api/domain/analysis/service/AnalysisServiceTest.java
✨ 어떤 이유로 PR를 하셨나요?
📋 세부 내용 - 왜 해당 PR이 필요한지 작업 내용을 자세하게 설명해주세요
📸 작업 화면 스크린샷
🚨 관련 이슈 번호 [ ]
Summary by CodeRabbit
새로운 기능
개선 사항