DateP

2025 02 20

Solo.dev 2025. 2. 20. 00:52

현재 상황 정리

  1. 플랜별(Free/Basic/Premium) 서버 로직 구분
    • 각각 최대 3개/5개/10개의 장소를 내려줄 수 있도록 설정된 Cloud Functions 엔드포인트(searchPlacesFree, searchPlacesBasic, searchPlacesPremium)가 구현되었습니다.
    • Google Places API에서는 최대 20개까지 받아오고, 이후 플랜에 따라 slice(0, 3|5|10) 적용.
  2. GPT 분석 로직 적용
    • Basic/Premium 플랜에서는 GPT를 사용(useAI: true)하여 “GPT가 선택한 장소 목록”을 뽑고, 그 목록을 최종 결과로 내려주도록 만들어졌습니다.
    • 현재 코드 상에서는 “GPT가 고른 3개만 최종으로 응답”하는 형태가 되어 있습니다.
  3. 원하는 동작
    • **“장소 데이터는 모두(예: 10개) 클라이언트에게 보내되, GPT는 그 중 3개만 골라 텍스트(데이트 코스)만 작성”**하길 원함.
    • 즉, 출력되는 데이터:
      • (a) 10개 전체 장소 목록
      • (b) GPT가 고른 3개 장소에 대한 데이트 코스 소개 텍스트
    • 현재 로직은 GPT가 선택한 장소만 필터링해서 최종적으로 보내주므로, 결과 목록이 3개로 제한되는 문제가 있음.
  4. 내일 해야 할 작업
    • GPT가 고른 3개실제로 클라이언트로 내려줄 10개를 구분.
    • GPT 분석 후 필터링하지 말고, “전체 장소 목록”을 응답하되, “GPT가 선택한 3개”에 대한 정보를 텍스트(dateCourse)로만 제공하도록 수정하면 됨.
    • 예: 

    • // 1) 전체 목록(10개) 생성
      let selectedPlaces = placesData.slice(0, planConfig.maxResults);

      // 2) GPT 분석
      const gptResponse = await getGPTAnalysis(selectedPlaces);
        // => GPT가 그중 3개만 고름

      // 3) 최종 응답: places는 10개 전부 내려주고,
      //    dateCourse에는 GPT가 만든 "3개 장소 코스" 텍스트
      res.json({
        places: selectedPlaces,  
        dateCourse: gptResponse.dateCourse,
        gptPicked: gptResponse.selectedPlaces,
      });
    • 이렇게 하면 실제 전송되는 장소 목록은 10개이고, GPT가 골라준 3개는 텍스트(또는 별도 필드)에만 반영되어 원하는 동작이 가능합니다.