본문 바로가기
Project/[AI] Deep Learning Model

[추천 모델] 06. 백엔드 서버 연동 및 테스트 (完)

by jyc_ 2025. 11. 1.

구성

NestJS 백엔드 프로젝트에 recommendations 폴더를 생성하였다.

Controller → Service → FastAPI 서버 순서로 API 호출이 진행된다.


Module

Controller와 Service를 묶어주는 모듈 구성이다.

HttpModule을 등록하여 RecommendationService가 외부 서버인 FastAPI서버와 HTTP 통신을 할 수 있도록 설정한다.


Controller

 

- 클라이언트가 GET 방식으로 /recommendations 경로로 API를 요청하면 해당 컨트롤러가 요청을 받는다.

- 이때, @GetUser() 데코레이터를 통해 로그인된 사용자의 ID 정보를 가져온다.

- 가져온 사용자 ID와 현재 시각을 Service계층의 getPersonalizedRecommendations 메소드로 전달하여 개인화 추천을 요청한다.


Service

 

전달받은 사용자 ID와 날짜 데이터를 기반으로 추천 로직을 수행한다.

_getCodesFromDate라는 내부 메소드를 호출하여 현재 시간을 meal_time_code와 day_of_week으로 변환한다.

 

변환된 데이터를 http://127.0.0.1:8000/recommend(FastAPI 서버)로 POST 요청을 보낸다.

FastAPI 서버로부터 추천된 가게 ID 목록을 응답으로 받는다.

 

이 응답을 다시 Controller 계층으로 반환하여 클라이언트에 최종적으로 응답한다.


예시

지금까지 구현한 모델과 API 서버의 실사용 예시이다.


개발 계획

0. 모델 선정 및 설계
 
1. 데이터 전처리
- 개발 환경 구축
- 세부 시간 feature 생성
- KoELECTRA를 이용한 선호 여부 라벨링
- 학습 데이터, 테스트 데이터 분할 및 저장
 
2. 모델 구조 설계 및 구현
- 데이터 파이프라인 구축
- User Tower, Item Tower 클래스 구현
 
3. 모델 학습 및 평가
- 모델 컴파일 및 학습
- 테스트 데이터셋을 이용한 성능 평가
 
4. 배포 준비: FAISS 인덱스 구축 및 저장
- 학습된 Item Tower를 이용해 모든 가게의 벡터 생성
- FAISS 인덱스 구축 및 저장
 
5. API 구현

- FastAPI 서버 구성

- API 엔드포인트 생성

- 동작 테스트

 

6. NestJS 연동 및 E2E 테스트

- NestJS 백엔드에서 API 호출부 구현

- End to End 테스트