[AI]1단계_모델_API_설계_유저행동기반_성향분석 - 100-hours-a-week/12-marong-Wiki GitHub Wiki

1. API 엔드포인트 목록 작성

분류 HTTP Method Endpoint 설명
초기 유저 등록 POST /mbti/initialize 회원가입 직후 사용자 정보 전체 저장
기존 유저 분석 요청 GET /mbti/context 기존 유저의 MBTI, 취미, 피드 통합 정보 조회
분석 결과 저장 POST /mbti/update MBTI 및 취미 업데이트 결과 저장

2. API 입/출력 형식 명세서 작성

2-1. POST /mbti/initialize

사용자 정보 전체를 받아 AI DB에 저장

Request Body


{
  "user_id": "user123",
    "mbti_scores": {"e":40, "s": 60, "t": 45, "j": 70},
    "hobby": "운동",
    "posts": [ {"content": "마니또랑 산책하며 기분이 좋아졌어요."} ]
}
필드명 타입 필수여부 설명
user_id string 필수 사용자 고유 ID
mbti_scores object 필수 MBTI 점수 (0~100, 5단위, value는 정수형)
hobby string 선택 사용자 취미
posts object 필수 사용자가 올리는 피드의 실제 내용

Response

200

{
  "user_id": "user123",
    "mbti_scores": {"e":40, "s": 60, "t": 45, "j": 70},
    "hobby": "운동",
}

400

{
    "message" : "invalid_request",
    "data" : null
}

500

{
    "message" : "internal_server_error",
    "data" : null
}

2-2. GET /mbti/context

AI DB + BE API 조합으로 유저 성향 & 피드 통합 데이터 반환

Response

200

{
  "user_id": "user123",
    "mbti_scores": {"e":40, "s": 60, "t": 45, "j": 70},
    "hobby": "운동",
    "posts": [ {"content": "마니또랑 산책하며 기분이 좋아졌어요."} ]
}

400

{
    "message" : "invalid_request",
    "data" : null
}

500

{
    "message" : "internal_server_error",
    "data" : null
}

2-3. POST /mbti/update

Request Body

분석 결과를 AI DB에 저장


{
  "user_id": "user123",
    "mbti_scores": {"e":40, "s": 60, "t": 45, "j": 70},
    "hobby": "운동",
}
필드명 타입 필수여부 설명
user_id string 필수 사용자 고유 ID
mbti_scores object 필수 MBTI 점수 (0~100, 5단위, value는 정수형)
hobby string 선택 사용자 취미

Response

200

{
  "user_id": "user123",
    "mbti_scores": {"e":40, "s": 60, "t": 45, "j": 70},
    "hobby": "운동",
}

400

{
    "message" : "invalid_request",
    "data" : null
}

500

{
    "message" : "internal_server_error",
    "data" : null
}

3. 서비스 전체 구조 내 역할·연동 관계 설명 작성

'유저행동기반 성향분석'의 서비스 전체 구조 내 역할

"사용자의 피드를 기반으로 MBTI 점수를 정밀하게 업데이트해주는 LLM 기반 성향 분석 모듈"

  • 유저가 작성한 피드 기반으로 성향을 업데이트
  • MBTI 기반 추천 기능(매칭, 장소추천, 선물추천 등)의 정확도를 향상시키는 역할

'유저행동기반 성향분석'의 연동관계

연동대상 연동방식 설명
BE 서버 REST API(FastAPI) 사용자 피드, 유저ID, 현재 MBTI, 취미 정보 전달
AI DB (Chroma Vector DB) 내부 저장 분석된 MBTI 점수 및 사용자 데이터를 저장 및 갱신
추천/매칭 시스템 DB 연동 업데이트된 성향 정보가 다른 기능의 기본 정보로 사용됨

4. API 호출 예시 및 예시 응답 정리

초기 유저 등록

Request

POST /ai/user/initialize
Content-Type: application/json
{
  "message": "success",
  "data": {
    "user_id": 123,
    "ei_score": 50,
    "sn_score": 50,
    "tf_score": 50,
    "jp_score": 50,
    "hobby": ["운동"],
    "posts": [
      { "content": "나는 친구들이랑 노는게 제일 재밌어" }
    ]
  }
}

Response

{
  "message": "User data updated successfully"
}

기존 유저 성향 조회

Request

GET /ai/user/context/123
{
  "message": "success",
  "data": {
    "user_id": 123,
    "ei_score": 50,
    "sn_score": 50,
    "tf_score": 50,
    "jp_score": 50,
    "hobby": ["운동"],
    "posts": [
      { "content": "나는 친구들이랑 노는게 제일 재밌어" }
    ]
  }
}

분석 결과 저장

Request

POST /ai/user/update
Content-Type: application/json
{
  "user_id": 123,
  "ei_score": 40,
  "sn_score": 60,
  "tf_score": 65,
  "jp_score": 45,
  "hobby": ["영화 감상", "마라톤"]
}

Response

{
  "message": "User data updated successfully"
}

실제결과 test를 위해 전부 MBTI 4가지 전부 50으로 설정 후 진행 { "content": "나는 친구들이랑 노는게 제일 재밌어" } 'e 상승, s/t/j 유지' 를 예측