프롬프팅을 기반으로 음악을 추천하는 간단한 웹 애플리케이션을 구현해보려고 한다. 프레임워크 : Spring boot, FastAPI, ReactModel : gpt turbo-3메인 db를 MySQL을 사용하려 했었다. 왜였더라?MySQL과 비교하여 Postgres는
## 개요 [프로젝트에 사용할 기술 스택](https://velog.io/@ctndl/Springboot-Postgres)을 다음과 같이 결정했다. - **백엔드**: Spring Boot (주요 로직 처리), FastAPI (AI 모델 서빙용) - **프론트엔드**:
개요 사용자가 일기를 작성하면 SpringBoot에서 Chat 봇의 응답을 리턴해줄 FastAPI의 API를 호출해야한다. As-Is 처음엔 WebClient을 사용했다. RestTemplate이 Deprecated 된다는 소문도 있어서 WebClient를 사용해야겠
개요 As-Is setHttpOnly 옵션을 끄면 프론트에서 쿠키에 접근 가능 LoginFilter setHttpOnly를 키면 프론트에서 접근 불가 To-Be 쿠키를 까서 주지말고 아예 통째로 던지도록 변경.
개요 Spring Boot에서는 /signup, /login 등 인증 정보 없이 접근 가능한 경로를 WhiteListUri로 설정했다. Spring Security의 인증이 로직이 적용되도록 React 클라이언트에서 사용자 인증 상태를 확인하는 로직을 구현하려고 한다
특정 사용자의 데이터를 가져오기 위해서는 memberId 같은 PK값이 필요하다. 우리 프로젝트에서는 Spring Security를 사용했기 때문에, 컨트롤러단에 사용자 정보를 노출하지 않으면서 인증된 사용자 정보를 가져오기 위해 Principal 객체를 사용하려고 했
구현하고자 하는 기능 설명 사용자가 일기를 작성하면 챗봇은 일기에 대한 응답을 준다.챗봇의 응답은 프롬프팅에 기반하여 노래 추천이나 작사를 한다.이 포스팅에서는 임의로 노래 추천 Response만 가지고 왔다.해당 기능에서 SpringBoot의 역할은 React와 Fa

개요 서버에서 BaseResponse로 넘기는 에러 메세지를 프론트에 띄우기 위해 전역 예외 처리 설정을 하려고 한다. 이는 프론트엔드에게 일관된 형태의 에러 및 상태값을 넘겨줄 수 있을 뿐만 아니라 에러를 중앙 제어하기도 편리하다. 나는 실패 시 다음과 같은 응답을

로그인 시 BaseResponse 클래스의 isSuccess 필드가 JSON 응답에서 의도와 다르게 나타나는 문제가 발생했다. 이를 해결하기 위해 Jackson 라이브러리의 동작 방식을 이해할 필요가 있었다.isSuccess가 success라는 키로 한번 더 리턴이 되
4개의 동일한 필드를 가진 두 Dto의 중복 코드를 효율적으로 관리하려고 한다.현재는 상속을 통해 공통 필드를 포함하는 ChatResponseDto라는 부모 클래스를 생성하고, 이를 ChatRecommendResponseDto와 ChatLyricsResponseDto가
트러블 슈팅: Chat과 Song의 연관 관계 문제 해결원래 Chat과 Song은 일대다(N:1) 관계로, Chat 엔티티에서 Song 엔티티를 단방향 매핑하고 있었다.@JoinColumn 어노테이션을 통해 Chat 엔티티가 song_id를 외래 키로 참조하도록 설정했

Rest Client를 이용하여 FastAPI의 api를 호출하던 중 긴 문자열 요청으로 인해 java.net.SocketTimeoutException: Read timed out 예외가 발생했다. 이 문제는 고정된 타임아웃 값과 재시도 메커니즘 부재로 인해 요청이 실

개요 프롬프트 기반으로 노래 추천 혹은 가사를 생성해주는 애플리케이션을 기획한 바 있다. 기획부터 시작하여 로컬에서 리팩토링을 포함한 개발이 완성되기까지 약 한 달 정도의 시간이 소요됐다. 올해 초 개인 프로젝트로 진행했던 노래 추천 애플리케이션을 리팩토링하는 작업이었