Skip to content

[Refactor] evaluation 패키지의 runtime analysis 의존성 단계적 분리 #270

Description

@shinae1023

어떤 기능인가요?

domain.evaluation.analysis가 runtime analysis DTO/service에 직접 의존하는 구조를 단계적으로 분리합니다.

상세 내용

현재 evaluation 패키지는 아래 runtime 분석 모듈에 직접 의존하고 있습니다.

  • AnalysisAiClient, AnalysisPromptInput, JobCategoryEvaluationCriteriaProvider
  • AnalysisLlmResponse, AnalysisCandidateResponse
  • MissingKeywordResponse, MissingKeywordSource
  • AnalysisSanitizationRules, MissingKeywordSanitizer
  • AnalysisResultConstants

이번 이슈는 이를 한 번에 갈아엎지 않고, 작은 커밋 단위로 안전하게 분리하는 것을 목표로 합니다.

  1. Refactor: evaluation 전용 내부 모델 도입
  • EvaluationMissingKeyword, EvaluationMissingKeywordSource, EvaluationQuestionAnalysis, EvaluationLlmSnapshot, EvaluationCandidateSnapshot 등 로컬 모델 추가
  • runtime DTO를 evaluation 내부 모델로 변환하는 mapper 추가
  • 기존 서비스 로직 변경은 최소화
  1. Refactor: NlgEvaluationBatchService를 evaluation 모델 기준으로 전환
  • AnalysisLlmResponse 직접 사용 제거
  • MissingKeywordSource도 evaluation 전용 enum 사용
  • runtime DTO 파싱 책임을 mapper/parser로 이동
  1. Refactor: evaluation 전용 sanitization 경계 도입
  • EvaluationSanitizationService 또는 EvaluationSanitizationPolicy 추가
  • 내부적으로는 기존 AnalysisSanitizationRules, MissingKeywordSanitizer를 위임 호출
  • evaluation 서비스에서 runtime sanitization 클래스 직접 import 제거
  1. Refactor: EvaluationAnalysisBatchService 앞에 evaluation AI port 추가
  • EvaluationAnalysisGenerator 같은 port 도입
  • 입력 EvaluationAnalysisCommand, 출력 EvaluationGeneratedResult로 표준화
  • 초기 adapter는 기존 AnalysisAiClient를 감싸는 방식으로 구현
  1. Refactor: runtime 상수 의존 제거
  • AnalysisResultConstants에 의존하던 값 중 evaluation 전용 정책을 EvaluationAnalysisPolicyConstants로 분리
  • 점수 범위, 최대 missing keyword 수, 최대 analysis 수 등 이동
  1. Refactor: MissingKeyword sanitizer replay 로직 로컬화
  • AnalysisCandidateResponse, MissingKeywordSanitizationResult 등 runtime 타입 의존 제거
  • evaluation snapshot 기반 replay 구조로 전환
  1. Refactor: evaluation 의존 방향 고정
  • domain.evaluation.analysis에서 domain.analysis.service/*, dto/* 직접 import 금지
  • 필요 시 ArchUnit 또는 패키지 규칙 테스트 추가
  • 이후 결합 회귀 방지

체크 리스트

  • evaluation 전용 내부 모델 추가
  • NlgEvaluationBatchService를 evaluation 모델 기준으로 전환
  • evaluation 전용 sanitization facade 도입
  • evaluation AI port 및 adapter 도입
  • runtime 상수 의존 제거
  • replay 로직 로컬화
  • 패키지 의존 규칙 테스트 추가

로컬 테스트 완료

구조 개편 이슈 초안 작성 단계이므로 아직 로컬 테스트는 수행하지 않았습니다.

기타

Metadata

Metadata

Assignees

No one assigned

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions