상세 컨텐츠

본문 제목

250218 TIL - AI 활용 비즈니스 프로젝트 - P1_Git에서 feature_ai 브랜치 PR

Java 심화 3기 Spring boot camp

by Laika25 2025. 2. 18. 22:52

본문

PR 체크리스트

  • 커밋 컨벤션에 맞게 작성했는가? 네
  • PR 전에 현재 브랜치를 pull 받았는가? 네
  • 구현한 기술들을 문서화 하였는가? 네

PR 작업 분류

  •  신규 기능
  •  버그 수정
  •  리팩토링
  •  기타

작업 상세 내용

요약 : API Key 보안 강화, AI 상품 설명 생성 기능, AI 응답 검색/정렬/숨김 처리 기능, FoodDescriptionParsing

https://www.notion.so/teamsparta/1562effd4f3c4c838d720dc3dc41bd7c?pvs=4#19d2dc3ef51480f58addc1a09a857542

1.application-secret.properties를 이용한 민감한 정보 보호 및 .gitignore 설정
Google API Key를 application.properties에서 제거하고, application-secret.properties로 이동
.gitignore에 src/main/resources/application-secret.properties 추가

  1. AI 상품 설명 자동 생성 POST
    /api/nom/ai/foods/description

Gemini API를 활용하여 question, foodName, descriptionHint,keyword 기반으로 AI 응답 생성

public class AiRequestDto {
private String question;
private String foodName;
private String descriptionHint;
private String keyword;
private UUID storeId;
}
응답에 너무 길경우
String modifiedQuestion = requestDto.getQuestion().trim() + " 답변을 최대한 간결하게 50자 이하로";

응답을 최대 255자로 제한하여 answer 필드에 저장
if (extractedText.length() > 255) {
extractedText = extractedText.substring(0, 255);
}

원본 AI 응답(generatedDescription) JSON 데이터도 함께 저장, 파싱 사용해서 JSON 형시긍로 오는것을 텍스트로 변환
extractTextFromGeneratedDescription(String jsonResponse)

String extractedText = AiResponseParser.extractTextFromGeneratedDescription(generatedDescription);

  1. AI 응답 조회 기능 (검색, 페이지네이션, 정렬)
    List getAllAiAnswers(int page, int size, Sort sort);List searchAiAnswersByKeyword(String keyword, int page, int size, Sort sort);
  2. List getAiAnswersByStore(UUID storeId, int page, int size, Sort sort);
  3. AI 응답 숨김/복구 기능 추가
    AiResponseDto hideAiAnswer(UUID aiId, String deletedBy);
    AiResponseDto restoreAiAnswer(UUID aiId, String updatedBy);

/api/nom/ai/{aiId}/hide?deletedBy=admin

/api/nom/ai/{aiId}/restore?updatedBy=admin

  1. GeminiService를 활용한 AI 응답 생성 및 파싱 기능
    GeminiService
    AiResponseParser -> AI 응답에서 answer 필드만 추출
  2. 서비스 및 엔터티 구조 개선
    Service 분리 -> AiService 인터페이스, AiServiceImpl

🔴 이건 반드시 확인해 주세요!

로컬의 위치에서 .gitignore 파일안에 내 개인 api key를 무시하도록
src/main/resources/application-secret.properties
를 적용시켜둬서

git에는 application-secret.properties 가 안올라와 있습니다
테스트할때
application-secret.properties 추가 후
https://aistudio.google.com/prompts/new_chat
Get Api Key를 발급 받고
application-secret.properties 파일에
google.api.key={발급받은 api key}

 

ai 파트 기능 완성 후 PR 신청했고 

develop 브랜치 feature_store로 머지해서 끌고왔고 ai 브랜치는 아직 PR 신청이 안받아져서 
따로 feature_store로 머지해서 
feature_store에서 내가 한 도메인들 최종 테스트 중

관련글 더보기