• DB에 담길 데이터
    • 유저id, 30일 예측치, 90일 예측치, 예측 생성일

      • 예측 생성일이 UTC라면 프론트에서 변환하는게 더 편할지도
    • 추가 데이터

      • 특정 운동을 며칠 더 했을 때의 예측치
    • 예측 데이터 업데이트 기준

      • 일주일
    • 테이블 구분

      mongodb-introduction-architecture.jpeg

      • 모든 사람의 예측 정보를 한 컬렉션에 모아두기?
  • DB 인덱싱
  • 스프링과의 통신
    • 인증 문제로 인해 프론트 → 스프링 → FastAPI 구조로 통신
    • MongoDB는 FastAPI가 관리? → 체중 예측만 FastAPI가 관리
  • 크루 추천 모델
    • 업데이트 주기
      • 스프링배치/스케줄러 사용해서 매일 새벽 04:30에 모델 생성 후 FastAPI에 넘겨주기
      • 만들어진 데이터를 가지고, FastAPI에서 분석 및 크루 추천
        • 유저랑 크루 간 유사도 큐레이션이긴해요 (sort, top 9)
    • 스프링이 크루 - 크루원의 5가지 추천 기준의 평균값 계산 후 MongoDB에 저장
  • MongoDB 필요 Collection(Table)
    • 체형 예측 정보 저장 컬렉션

      • Spring → FastAPI 전달 데이터

      • predict-basic Document: 운동 기록 기반 체형 예측 (기본)
      • predict-extra Document: 추가 운동 시 체형 예측
    • 크루 5가지 분야 평균 점수 저장 컬렉션

      image.png

      • Spring → FastAPI 전달 데이터
        • 크루 전체 정보
          • 크루 평균 나이
          • 크루 평균 체형
          • 크루 평균 식습관 점수
          • 크루 평균 기본 점수
          • 크루 평균 활동 점수
          • 크루 ID
        • 유저 전체 정보

      • crew_recommend Document
        • 유저 ID, 추천 크루 배열 (9개)

          {
            user_id: 1,
            crew_recommend: [
              {
                crew_id: 3,
                유사도: 0.2 ~ 1
              },
              {
                crew_id: 6,
                유사도: 0.2 ~ 1
              },
              {
                crew_id: 2,
                유사도: 0.2 ~ 1
              }
              ...
            ]
          }