Skip to content

Refactor/#270 evaluation runtime decouple - #276

Merged
shinae1023 merged 3 commits into
devfrom
refactor/#270-evaluation-runtime-decouple
Aug 12, 2026
Merged

Refactor/#270 evaluation runtime decouple#276
shinae1023 merged 3 commits into
devfrom
refactor/#270-evaluation-runtime-decouple

Conversation

@shinae1023

@shinae1023 shinae1023 commented Aug 12, 2026

Copy link
Copy Markdown
Member

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

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

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

📸 작업 화면 스크린샷

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

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

🚨 관련 이슈 번호 [ ]

Summary by CodeRabbit

  • 새 기능

    • 평가 분석 결과에 원본·정제된 후보 답변, 검토 결과, 처리 통계 및 호출 지연 시간이 기록됩니다.
    • 평가 답변의 누락 키워드, 근거, 충돌 여부를 보다 일관되게 검증하고 텍스트를 정제합니다.
    • 평가 분석 생성 과정이 표준화되어 다양한 분석 결과를 안정적으로 처리할 수 있습니다.
  • 개선

    • 분석 결과 후처리와 후보 답변 검증의 일관성이 향상되었습니다.
    • 누락 키워드 재처리 및 자격요건 키워드 판별이 통합된 기준으로 수행됩니다.

@shinae1023 shinae1023 self-assigned this Aug 12, 2026
@coderabbitai

coderabbitai Bot commented Aug 12, 2026

Copy link
Copy Markdown

Review Change Stack

Warning

Review limit reached

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

Next review available in: 25 minutes

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

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: 2e93e7bb-7ce1-43ee-9a0b-57c50486f12c

📥 Commits

Reviewing files that changed from the base of the PR and between beb77c3 and 3fc81ac.

📒 Files selected for processing (4)
  • src/main/java/com/jobdri/jobdri_api/domain/analysis/infrastructure/ai/OpenAiAnalysisAdapter.java
  • src/main/java/com/jobdri/jobdri_api/domain/analysis/service/ai/AnalysisAiClient.java
  • src/main/java/com/jobdri/jobdri_api/domain/evaluation/analysis/adapter/AnalysisAiEvaluationAnalysisGenerator.java
  • src/test/java/com/jobdri/jobdri_api/domain/evaluation/analysis/EvaluationAnalysisBatchServiceTest.java
📝 Walkthrough

Walkthrough

평가 분석 생성을 EvaluationAnalysisGenerator로 분리했습니다. 생성 결과에 후보·검토 데이터와 지연 시간을 포함했습니다. 검증과 정규화는 EvaluationSanitizationService로 통합했습니다. 관련 배치 테스트를 새 계약에 맞게 수정했습니다.

Changes

평가 분석 리팩터링

Layer / File(s) Summary
분석 생성 계약과 AI Adapter
src/main/java/com/jobdri/jobdri_api/domain/evaluation/analysis/model/*, port/EvaluationAnalysisGenerator.java, adapter/AnalysisAiEvaluationAnalysisGenerator.java
EvaluationAnalysisCommandEvaluationGeneratedResult를 추가했습니다. AI 호출과 기준 조회를 Generator Adapter로 이동했습니다.
평가 Sanitization 서비스 통합
sanitization/EvaluationSanitizationService.java, MissingKeywordSanitizerReplayService.java, NlgEvaluationBatchService.java
평가용 검증, 정규화, 누락 키워드 후보 정제를 EvaluationSanitizationService로 위임하도록 변경했습니다.
배치 분석 결과 연계
EvaluationAnalysisBatchService.java
배치 서비스가 Generator를 호출하고, 생성 결과의 응답·후보·검토 통계·지연 시간을 기록하도록 변경했습니다.
Generator 기반 배치 테스트
src/test/java/com/jobdri/jobdri_api/domain/evaluation/analysis/EvaluationAnalysisBatchServiceTest.java
기존 AI Client mock을 Generator mock으로 교체했습니다. EvaluationGeneratedResult 기반 검증을 적용했습니다.

Estimated code review effort: 4 (Complex) | ~45 minutes

Possibly related issues

  • JobDri-Developer/BackEnd 이슈 270 — Sanitization facade, AI generator port/adapter, replay 의존성 변경을 직접 다룹니다.

Possibly related PRs

Sequence Diagram(s)

sequenceDiagram
  participant EvaluationAnalysisBatchService
  participant AnalysisAiEvaluationAnalysisGenerator
  participant JobCategoryCriteriaProvider
  participant AnalysisAiClient
  EvaluationAnalysisBatchService->>AnalysisAiEvaluationAnalysisGenerator: 분석 명령 전달
  AnalysisAiEvaluationAnalysisGenerator->>JobCategoryCriteriaProvider: 중분류 기준 조회
  AnalysisAiEvaluationAnalysisGenerator->>AnalysisAiClient: 평가 분석 요청
  AnalysisAiClient-->>AnalysisAiEvaluationAnalysisGenerator: 응답 및 후보 검토 결과 반환
  AnalysisAiEvaluationAnalysisGenerator-->>EvaluationAnalysisBatchService: 생성 결과 반환
Loading
🚥 Pre-merge checks | ✅ 3 | ❌ 2

❌ Failed checks (2 warnings)

Check name Status Explanation Resolution
Description check ⚠️ Warning 설명에 변경 내용, 테스트 결과, 스크린샷, 관련 이슈 번호가 작성되지 않았고 모든 체크 항목이 미선택 상태입니다. 평가 런타임 결합 해제와 평가 전용 sanitization facade 및 AI port 추가 내용을 작성하고, 테스트 결과와 관련 이슈 번호를 기입하세요.
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 💡 1
📝 Generate docstrings 💡
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch refactor/#270-evaluation-runtime-decouple

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

🤖 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
`@src/main/java/com/jobdri/jobdri_api/domain/evaluation/analysis/adapter/AnalysisAiEvaluationAnalysisGenerator.java`:
- Around line 39-44: AnalysisAiEvaluationAnalysisGenerator의 사례 처리 흐름에 사례 단위
deadline을 추가하세요. TWO_PASS와 HYBRID_EXACT의 다중 AI 호출 및 OpenAiConfig의 재시도를 포함해 전체 사례
대기 시간이 모드별 예산을 넘지 않도록 각 호출에 남은 시간을 전달·적용하고, deadline 초과 시 해당 사례를 중단하되 후속 사례 처리와
CSV 출력은 계속되게 하세요.

In
`@src/test/java/com/jobdri/jobdri_api/domain/evaluation/analysis/EvaluationAnalysisBatchServiceTest.java`:
- Around line 99-100: EvaluationAnalysisBatchServiceTest의 generator.generate 검증이
호출 횟수와 인자 존재 여부만 확인하므로, EvaluationAnalysisCommand 인자를 capture하도록 변경하고 CSV 입력의
caseId, 중분류, 소분류, 질문, 답변 및 순서를 모두 검증하세요.
🪄 Autofix

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: 34b9c36d-2850-49da-a02c-04ad456d4ffb

📥 Commits

Reviewing files that changed from the base of the PR and between 11f64a7 and beb77c3.

📒 Files selected for processing (9)
  • src/main/java/com/jobdri/jobdri_api/domain/evaluation/analysis/EvaluationAnalysisBatchService.java
  • src/main/java/com/jobdri/jobdri_api/domain/evaluation/analysis/MissingKeywordSanitizerReplayService.java
  • src/main/java/com/jobdri/jobdri_api/domain/evaluation/analysis/NlgEvaluationBatchService.java
  • src/main/java/com/jobdri/jobdri_api/domain/evaluation/analysis/adapter/AnalysisAiEvaluationAnalysisGenerator.java
  • src/main/java/com/jobdri/jobdri_api/domain/evaluation/analysis/model/EvaluationAnalysisCommand.java
  • src/main/java/com/jobdri/jobdri_api/domain/evaluation/analysis/model/EvaluationGeneratedResult.java
  • src/main/java/com/jobdri/jobdri_api/domain/evaluation/analysis/port/EvaluationAnalysisGenerator.java
  • src/main/java/com/jobdri/jobdri_api/domain/evaluation/analysis/sanitization/EvaluationSanitizationService.java
  • src/test/java/com/jobdri/jobdri_api/domain/evaluation/analysis/EvaluationAnalysisBatchServiceTest.java

@shinae1023
shinae1023 merged commit aca3ec0 into dev Aug 12, 2026
3 checks passed
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.

1 participant