Skip to content

[REFACTOR]: AI처리시간 최적화 #87

@lcs9317

Description

@lcs9317

변경 유형 (Type): REFACTOR
제목(Subject): AI처리시간 최적화

무엇을 / 왜

무엇(What):

  1. AI 성능 최적화
    application.yml의 maxOutputTokens 최적화 (384 → 128로 조정)
    SituationPrompt 프롬프트 템플릿 간소화 (불필요한 예시/가이드라인 제거)
    Context 길이 제한 적용 (previousNodes 최대 3개, 각 50자 제한)
    topK 값 조정 (5 → 3으로 후보 축소)
    스레드풀 설정 적용 (TextAiConfig에 스레드풀 구성)

  2. 사용자 정보 반영 로직 추가
    BaseScenarioPrompt에 사용자 기본정보 필드 추가 (birthday, gender, mbti, beliefs)
    BaseScenarioPrompt에 사용자 성향정보 필드 추가 (lifeSatis, relationship, workLifeBal, riskAvoid)
    DecisionScenarioPrompt에 동일한 사용자 정보 필드 추가
    Null-safe 처리 로직 구현 (성향 정보 미입력 시 "미입력" 표시)

  3. 테스트 코드 재작성
    AiServiceImplTest 전면 재작성 (기존 로직 문제로 인한 완전 교체)
    JSON 파싱 로직 개선 (SituationPrompt.extractSituation() ObjectMapper 기반으로 변경)

  4. 더미데이터 추가
    InitData에 SceneCompare 더미데이터 생성 로직 추가 (6개: TOTAL + 5개 지표)
    InitData의 user1에 성향정보 더미값 추가 (lifeSatis: 6, relationship: 7, workLifeBal: 8, riskAvoid: 5)
    왜(Why):

  5. AI 성능 최적화 이유

  6. 응답속도 개선: 기존 10초 이상 소요되던 상황 생성을 2-3초로 단축하여 사용자 경험 개선

  7. 토큰 비용 절감: maxOutputTokens 축소로 API 호출 비용 66% 감소

  8. 불필요한 출력 제거: 프롬프트 간소화로 AI가 핵심 내용만 생성하도록 유도

  9. 성능 병목 해소: 긴 context와 높은 topK 값이 응답 지연의 주 원인이었음

  10. 동시성 처리 향상: 스레드풀 적용으로 여러 AI 호출을 효율적으로 병렬 처리

  11. 사용자 정보 반영 이유
    개인화된 시나리오 생성: 사용자의 성별, 나이, MBTI, 가치관에 맞춤형 인생 시나리오 제공
    현실성 향상: 워라밸 중요도, 위험 회피 성향 등 개인 성향을 반영하여 더욱 현실적인 결과 도출
    사용자 만족도 고려: 현재 삶/관계 만족도를 바탕으로 사용자의 심리 상태에 맞는 시나리오 생성
    설계 의도 구현: 원래 기획에서 사용자 정보를 반영하기로 했으나 누락된 부분 보완

  12. 테스트 코드 재작성 이유
    로직 오류 수정: 기존 AiServiceImplTest가 꼬여서 정상 작동하지 않음
    JSON 파싱 정확도: 문자열 substring 방식의 한계로 콤마(,)가 포함된 응답 파싱 실패 → ObjectMapper로 전환

  13. 더미데이터 추가 이유
    프론트엔드 개발 지원: 비교 분석 화면 개발 시 실제 응답 데이터 확인 가능
    데이터 완성도: 기존 시나리오 더미데이터에는 비교 분석이 없어 불완전했음

어떻게(요약) — 3줄 이내

  1. AI 응답 성능 최적화: 상황 생성(SituationPrompt) 응답시간을 10초 → 2-3초로 단축 (maxOutputTokens, 프롬프트 간소화, context 제한, topK 조정, 스레드풀 적용)
  2. 사용자 개인화 강화: 시나리오 생성 시 사용자 기본정보(생년월일, 성별, MBTI, 가치관)와 성향정보(삶 만족도, 관계 만족도, 워라밸 중요도, 위험 회피 성향) 반영
  3. 테스트 안정성 및 더미데이터 확충: AiServiceImplTest 전면 재작성으로 테스트 신뢰성 확보, SceneCompare 더미데이터로 비교 분석 기능 검증 가능

영향 범위

  • API 변경
  • DB 마이그레이션
  • Breaking Change
  • 보안/권한 영향
  • 문서/가이드 업데이트 필요

체크리스트

  • 타입 라벨 부착 (FEAT/FIX/REFACTOR/COMMENT/STYLE/TEST/CHORE/INIT)
  • 로컬/CI 테스트 통과
  • 영향도 점검 완료
  • 주석/문서 반영(필요 시)

ToDo (선택)

  • 할 일 1
  • 할 일 2

스크린샷/증빙(선택)


Auto-created for PR #86

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions