eco-dessert-platform / backend

Apache License 2.0
0 stars 0 forks source link

✅ 상세페이지 AI 추천 시스템 요구사항 #313

Open yunyechan9893 opened 5 days ago

yunyechan9893 commented 5 days ago

Issue: ✅ Feature

Description

추천 AI 도입으로 인한 기능 구현

  1. 추천 상품 생성을 위한 AI 데이터 저장 API
    • 구현 내용
      • 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

<!--기타사항-->