AI 학습을 위해 board_id, title, introduce, review_contents를 CSV 형태로 S3에 저장
review_contents는 최대 120개 설정
50개의 게시물을 3분 간격으로 생성
예시 데이터 파일Result_3.csv
// 아래 Query는 임시이므로 더 쉬운 로직을 채택할 확률이 높음
WITH LimitedReviews AS (
SELECT
r.*,
ROW_NUMBER() OVER (PARTITION BY r.board_id ORDER BY r.id) as row_num
FROM review as r
)
SELECT
sb.id,
sb.title,
sb.introduce,
lr.content as review_contents
FROM (
SELECT
b.id as id,
b.title as title,
s.introduce as introduce
FROM product_board as b
JOIN store as s on s.id = b.store_id
LIMIT 50
) as sb
JOIN LimitedReviews as lr
ON lr.board_id = sb.id
AND lr.row_num <= 120;
2. 추천 상품, 서비스 DB Upsert API
- 구현 내용
- AI Lambda로 S3에 CSV로 데이터 기록
- Config 파일
- 파일 이름 : RecommendedAIConfig.csv
- 설정 파라미터
- MAX_PRODUCT_COUNT : AI가 생성한 추천 상품 최대 개수
- 타입 : int
- Data 파일
- 파일 이름 : RecommendedAIData.csv
- Header
- query_item : 상품 id
- recommendation_item : 추천 상품 id
- score : 점수 ( 0 <= x < 1 )
- rank : 순위
- recommendation_theme : AI 모델 -> 현재 SIMILARITY만 존재
- model_version : AI 모델 버전 -> 현재 V1만 존재
- modified_at : 데이터 수정일
- created_at : 데이터 생성일
- 변경사항
- Data 파일에 AI가 추천할 수 없는 상품 존재 시 recommendation_theme를 Default로 설정, recommendation_item을 랜덤 상품 Id로 할당했었음
=> Default 값 삭제, 순수 추천 데이터만 할당
![image](https://github.com/user-attachments/assets/cb98edc1-8fe9-4248-8c6e-fffbcf6cb8a1)
3. 추천 상품 조회 API
- 기본적으로 recommendation_similar_board에서 데이터 조회 후 반환
- 추천 상품 중 SoldOut이 포함되었을 경우
- 인기상품 30개 중 필요한 개수만큼 랜덤 값으로 선별하여 반환
- 추천 상품이 없을 시
- 인기상품 30개 중 필요한 개수만큼 랜덤 값으로 선별하여 반환
4. AI 학습을 위한 데이터 조회 API
- 협의 후 진행
<!--필요한 기능-->
## To do
<!--추가될 내용-->
- [ ] 추천 상품 생성을 위한 AI 데이터 저장 API
- [ ] 추천 상품, 서비스 DB Upsert API
- [ ] 추천 상품 조회 API
- [ ] AI 학습을 위한 데이터 조회 API
## ETC
<!--기타사항-->
Issue: ✅ Feature
Description
추천 AI 도입으로 인한 기능 구현
SELECT sb.id, sb.title, sb.introduce, lr.content as review_contents FROM ( SELECT b.id as id, b.title as title, s.introduce as introduce FROM product_board as b JOIN store as s on s.id = b.store_id LIMIT 50 ) as sb JOIN LimitedReviews as lr ON lr.board_id = sb.id AND lr.row_num <= 120;