Skip to content

[Feat] 분석 결과 핵심 강점 및 약점 필드 추가#139

Merged
whc9999 merged 2 commits into
devfrom
feat/add-analysis-highlights
Jul 20, 2026
Merged

[Feat] 분석 결과 핵심 강점 및 약점 필드 추가#139
whc9999 merged 2 commits into
devfrom
feat/add-analysis-highlights

Conversation

@whc9999

@whc9999 whc9999 commented Jul 20, 2026

Copy link
Copy Markdown
Collaborator

✨ 어떤 이유로 PR를 하셨나요?

  • feature 병합
  • 버그 수정(아래에 issue #를 남겨주세요)
  • 코드 개선
  • 코드 수정
  • 배포
  • 기타(아래에 자세한 내용 기입해주세요)

📋 세부 내용 - 왜 해당 PR이 필요한지 작업 내용을 자세하게 설명해주세요

📸 작업 화면 스크린샷

⚠️ PR하기 전에 확인해주세요

  • 로컬테스트를 진행하셨나요?
  • 머지할 브랜치를 확인하셨나요?
  • 관련 label을 선택하셨나요?

🚨 관련 이슈 번호 [ ]

Summary by CodeRabbit

  • 새로운 기능

    • 분석 결과에 핵심 강점과 약점 하이라이트가 추가됩니다.
    • 하이라이트의 제목과 인용문이 분석 결과에 함께 표시됩니다.
    • 하이라이트는 중복 제거 및 개수·길이 제한을 적용해 제공됩니다.
    • 기존 분석 결과에서도 저장된 하이라이트를 조회할 수 있습니다.
    • PostgreSQL 환경에서 벡터 검색 기능을 사용할 수 있도록 지원이 추가되었습니다.
  • 개선 사항

    • 하이라이트가 없는 기존 분석 결과도 안정적으로 처리됩니다.
    • 하이라이트 및 누락 키워드 결과의 저장·조회 검증이 강화되었습니다.

@whc9999 whc9999 self-assigned this Jul 20, 2026
@whc9999 whc9999 added the ✨ feat New feature or request label Jul 20, 2026
@coderabbitai

coderabbitai Bot commented Jul 20, 2026

Copy link
Copy Markdown

Review Change Stack

Warning

Review limit reached

@whc9999, you've reached your PR review limit, so we couldn't start this review.

Next review available in: 44 minutes

Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available.
You're only billed for reviews past your plan's rate limits ($0.25/file).

How can I continue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

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 configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: 82d9ec78-4e0b-4d81-9cda-02fc7ec28ac4

📥 Commits

Reviewing files that changed from the base of the PR and between c2e67c0 and 90a4264.

📒 Files selected for processing (3)
  • docker-compose.yml
  • src/main/java/com/jobdri/jobdri_api/domain/analysis/service/AnalysisService.java
  • src/test/java/com/jobdri/jobdri_api/domain/analysis/service/AnalysisServiceTest.java
📝 Walkthrough

Walkthrough

분석 LLM 응답과 API 응답에 강점·약점 하이라이트가 추가되었습니다. 하이라이트는 검증·정제 후 JSON으로 저장되고 조회 시 복원됩니다. 관련 데이터베이스 컬럼, 테스트, 프롬프트 규칙 및 Docker PostgreSQL 이미지가 변경되었습니다.

Changes

분석 하이라이트 파이프라인

Layer / File(s) Summary
하이라이트 계약 및 LLM 출력
src/main/java/com/jobdri/jobdri_api/domain/analysis/dto/..., src/main/java/com/jobdri/jobdri_api/domain/analysis/service/AnalysisAiClient.java, src/main/java/com/jobdri/jobdri_api/domain/analysis/service/AnalysisResultConstants.java
LLM 및 API 응답에 keyStrengths, keyWeaknesses를 추가하고 하이라이트 출력 규칙과 길이·개수 제한을 정의합니다.
하이라이트 저장 모델 및 스키마
src/main/java/com/jobdri/jobdri_api/domain/analysis/entity/Analysis.java, src/main/resources/schema.sql
분석 엔티티와 analyses 테이블에 하이라이트 JSON 컬럼을 추가하고 빈 배열 기본값을 적용합니다.
하이라이트 정제·조회·응답 흐름
src/main/java/com/jobdri/jobdri_api/domain/analysis/service/AnalysisService.java
LLM 하이라이트를 검증·중복 제거·제한하고 저장·복원하여 분석 API 응답에 포함합니다.
하이라이트 검증 테스트
src/test/java/com/jobdri/jobdri_api/domain/analysis/service/AnalysisServiceTest.java
하이라이트 필터링, JSON 저장, 저장 데이터 조회 및 응답 구성을 검증합니다.

PostgreSQL 이미지 변경

Layer / File(s) Summary
pgvector 컨테이너 구성
docker-compose.yml
PostgreSQL 서비스 이미지를 pgvector/pgvector:pg16으로 변경하고 기존 컨테이너 설정은 유지합니다.

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: 하이라이트 포함 응답 생성
Loading

Possibly related PRs

Suggested reviewers: shinae1023

🚥 Pre-merge checks | ✅ 3 | ❌ 2

❌ Failed checks (2 warnings)

Check name Status Explanation Resolution
Description check ⚠️ Warning 템플릿 형식은 지켰지만 세부 내용, 스크린샷, 관련 이슈 번호가 비어 있어 변경 목적과 내용을 충분히 설명하지 못합니다. 세부 내용에 변경 이유와 구현 요약을 추가하고, 필요하면 스크린샷과 관련 이슈 번호를 채워 템플릿을 완성하세요.
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 (3 passed)
Check name Status Explanation
Title check ✅ Passed 제목이 분석 결과에 핵심 강점·약점 필드를 추가한다는 주요 변경을 간결하게 잘 요약합니다.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat/add-analysis-highlights

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.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

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.java 501-518)의 malformed JSON fallback은 keyStrengths/keyWeaknesses에 대해 검증되지 않았습니다. 또한 다음 경계 조건도 현재 테스트에서 다루지 않습니다:

  • LLM 응답의 keyStrengths/keyWeaknessesnull일 때 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

📥 Commits

Reviewing files that changed from the base of the PR and between c7bf71e and c2e67c0.

📒 Files selected for processing (10)
  • docker-compose.yml
  • src/main/java/com/jobdri/jobdri_api/domain/analysis/dto/llm/AnalysisLlmResponse.java
  • src/main/java/com/jobdri/jobdri_api/domain/analysis/dto/response/AnalysisHighlightResponse.java
  • src/main/java/com/jobdri/jobdri_api/domain/analysis/dto/response/AnalysisResponse.java
  • src/main/java/com/jobdri/jobdri_api/domain/analysis/entity/Analysis.java
  • src/main/java/com/jobdri/jobdri_api/domain/analysis/service/AnalysisAiClient.java
  • src/main/java/com/jobdri/jobdri_api/domain/analysis/service/AnalysisResultConstants.java
  • src/main/java/com/jobdri/jobdri_api/domain/analysis/service/AnalysisService.java
  • src/main/resources/schema.sql
  • src/test/java/com/jobdri/jobdri_api/domain/analysis/service/AnalysisServiceTest.java

Comment thread docker-compose.yml Outdated
@whc9999
whc9999 merged commit a681ae5 into dev Jul 20, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

✨ feat New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant