구성

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 테스트
'Project > [AI] Deep Learning Model' 카테고리의 다른 글
| [추천 모델] 05. FAISS 인덱스, FastAPI 서버 구축 (0) | 2025.10.23 |
|---|---|
| [추천 모델] 04. 모델 구현 및 평가 (3): 모델 구현 마무리 (0) | 2025.10.17 |
| [추천 모델] 03. 모델 구현 및 평가 (2): Exp 2, 3 / Trouble Shooting (0) | 2025.10.16 |
| [추천 모델] 02. 모델 구현 및 평가 (1): Baseline Model (0) | 2025.10.16 |
| [추천 모델] 01. 데이터 전처리 (0) | 2025.10.14 |