Skip to content

team2room/KeyWi

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

시작사진

📌 목차

  1. 프로젝트 소개
  2. 팀 소개
  3. 주요 기능
  4. 시연 영상
  5. 주요 기술
  6. 기술 스택
  7. 기술 아키텍처
  8. 프로젝트 구조
  9. 산출물

💻 프로젝트 소개

SSAFY 12기 2학기 특화 프로젝트

⌛ 프로젝트 기간 : 2025.03.03 ~ 2025.04.12 (6주)

📆 상세 기간 : 기획 1주 + 공부 2주 + 개발 3주

🔗 노션 링크

❌ - 웹 / ⭕ - 모바일로 접속 후 홈 화면 바로가기

📲 배포 URL

⌨️ "나만의 완벽한 키보드를 찾아서, KeyWi(키위)!"

✨ 더 이상 고민하지 마세요!
나만의 커스텀 키보드를 자랑하고, 다양한 키보드 상품을 한눈에 보고, 전문 조립자와 함께 맞춤 견적을 받아보세요.
키보드의 모든 것, 한 곳에서 즐기세요!

🖥️ 이런 분들을 위한 커스텀 키보드 플랫폼이에요
멋진 커스텀 키보드를 갖고 싶지만 어디서부터 시작해야 할지 모르는 분
키보드 조립 전문가의 도움을 받아 완벽한 키보드를 만들고 싶은 분
키보드 커뮤니티에서 정보를 얻고 자신의 작품을 자랑하고 싶은 분
안전하고 신뢰할 수 있는 거래로 키보드를 구매하고 싶은 분

🥝 키위만의 특별한 기능
최근 검색어 기반 맞춤 추천 검색 (피드, 사용자, 상품 통합 검색)
전문가와 실시간 채팅으로 진행되는 1:1 맞춤 견적 서비스
안전한 거래를 보장하는 에스크로 결제 시스템
나만의 커스텀 키보드를 자랑할 수 있는 SNS 스타일 피드

👨🏻‍💻 이렇게 사용해보세요!
1️⃣ 원하는 키보드 스타일을 피드에서 보고 아이디어를 얻어보세요
2️⃣ 전문 조립자와 1:1 채팅으로 맞춤 견적을 받아보세요
3️⃣ 안전한 에스크로 시스템으로 결제하고 나만의 맞춤 키보드를 받아보세요
4️⃣ 완성된 나만의 키보드를 SNS 피드에 자랑해보세요

👥 팀 소개

이수환
@getbravelee
권규리
@rnjs010
김주찬
@PoloCeleste
박혜원
@hyeOOO
서성우
@bamtol2
이혜령
@hyerongii
백엔드 개발
(팀장)
프론트 개발 인프라 개발 백엔드 개발 백엔드 개발 프론트 개발
검색/페이 서버, 금융 api 연결, MSA 설계 견적 게시판/계좌 연결/채팅/결제 개발 및 UX/UI 디자인 인프라 구축/관리, 상품 풀스택, 크롤링, CI/CD, MSA 설계 피드 서버, 인프라 구축, MSA 설계 인증/채팅 서버, 견적 게시판 서버, MSA 설계 로그인/홈 피드/검색/마이페이지 개발 및 UX/UI 디자인

⌨️ 주요 기능

회원가입/로그인, 마이페이지
소셜 로그인 마이페이지 (피드) 마이페이지 (견적) 설정페이지
소셜 로그인 마이페이지 (피드) 마이페이지 (견적) 설정페이지
카카오 소셜 회원가입/로그인 기능을 제공합니다. 마이페이지 중 피드 탭에서 작성한 파드들을 확인가능합니다.
세로 스와이프를 통해 전후 피드로 이동할 수 있습니다.
마이페이지 중 견적 탭에서 작성한 견적 게시물들을 확인가능합니다.
게시물의 상태를 변경할 수 있으며 조립자에 대한 후기를 남길 수 있습니다.
계좌 관리, 정보 수정 등 설정을 할 수 있습니다.
홈 페이지 (피드)
피드 메인 페이지 태그된 상품 리스트 댓글 페이지 상품 찜 페이지 북마크 페이지
피드 메인 페이지 태그된 상품 리스트 댓글 페이지 상품 찜 페이지 북마크 페이지
추천 알고리즘 순으로 피드들이 나타나면서 무한 스크롤이 가능합니다.
좋아요, 북마크, 공유 등이 가능합니다.
대표 이미지에 태그된 상품들을 확인할 수 있습니다.
대표 이미지에 태그된 상품들을 리스트로 확인할 수 있습니다.
상품 별 찜을 할 수 있으며, 해당 상품 페이지로 바로 이동 가능합니다.
피드 별 댓글 작성 및 확인 가능합니다. 찜한 상품 목록을 확인할 수 있습니다. 북마크한 피드와 견적 게시글을 확인할 수 있습니다.
피드 작성 (사진 선택) 피드 작성 (상품 태그) 피드 작성 (상품 추가) 피드 작성 (글 작성)
피드 작성 (사진 선택) 피드 작성 (상품 태그) 피드 작성 (상품 추가) 피드 작성 (글 작성)
여러 사진을 선택해 추가할 수 있으며,
드래그 앤 드롭으로 순서를 변경할 수 있습니다.
메인 사진에 상품 태그를 추가할 수 있습니다.
드래그를 통해 원하는 위치에 놓을 수 있습니다.
상품태그 추가 시 나타나는 모달로,
찜한 목록/검색/직접 입력을 통해 추가할 수 있습니다.
내용을 작성할 수 있으며, 해시태그를 추가할 수 있습니다.
인기 해시태그 목록이 보이고 검색도 가능합니다.
조립/견적 요청 게시판
견적 게시판 페이지 견적 게시글 상세 페이지 견적 게시글 작성 (상품 선택) 견적 게시글 작성 (글 작성)
견적 게시판 페이지 견적 게시글 상세 페이지 견적 게시글 작성 (상품 선택) 견적 게시글 작성 (글 작성)
전체 게시글의 상태 및 채팅 수를 확인할 수 있습니다. 자신이 작성한 글이 아니라면 1:1 채팅으로 이동할 수 있습니다. 카테고리 별 원하는 상품을 추가할 수 있습니다.
찜한 목록/검색/조립자 추천 요청을 선택할 수 있습니다.
제목과 내용, 이미지를 추가 및 상품 수정을 할 수 있습니다.
상품/검색 페이지
상품 리스트 상품 상세 페이지 검색 초기 화면 검색 중 화면
상품 리스트 상품 상세 페이지 검색 초기 화면 검색 중 화면
카테고리 별 (상위/하위) 상품 목록을 확인할 수 있습니다.
상품을 찜할 수 있습니다.
상품 상세페이지에서 공유 및 판매 사이트로 이동할 수 있습니다. 검색 페이지에서는 최근, 인기 검색어를 확인할 수 있습니다.
인기 검색어는 특정 시간마다 반영됩니다.
검색어를 입력할 때는 자모음 별로 구분하여 자동완성된 단어 목록이 나타납니다.
검색 결과 화면 (피드) 검색 결과 화면 (상품) 검색 결과 화면 (계정)
검색 결과 화면 (피드) 검색 결과 화면 (상품) 검색 결과 화면 (계정)
검색어가 들어간 피드가 나타나며, 피드 선택 시 세로 스와이프를 통해 전후 피드로 이동할 수 있습니다. 검색어가 들어간 상품 리스트가 출력됩니다. 검색어가 들어간 계정 리스트가 출력됩니다.
계좌 연결
계좌 입력 계좌 인증 간편 비밀번호 설정
계좌 입력 계좌 인증 간편 비밀번호 설정
계좌 번호 입력, 은행 선택, 약관 동의 시 버튼이 활성화됩니다. 입력한 계좌로 1원 송금을 진행하여 인증코드를 확인 후 입력합니다. 인증이 완료되면 랜덤 키패드를 통해 간편 비밀번호를 설정할 수 있습니다.
마지막 숫자 입력시 재입력받고 일치하면 계좌 연결이 완료됩니다.
채팅 페이지
채팅 목록 페이지 채팅방 페이지 사진 보내기
채팅 목록 페이지 채팅방 페이지 사진 보내기
전체 채팅 목록을 확인할 수 있습니다. 상단의 게시글을 터치하면, 해당 게시글 상세 페이지로 이동합니다.
하단의 + 버튼을 터치하면, 사진 보내기 및 거래 요청을 할 수 있습니다.
사진 첨부하기를 누르면 갤러리에서 한 장 선택할 수 있습니다.
거래 요청(조립자)
거래 요청 폼 화면 금액 및 계좌 확인 화면 거래 요청 채팅 (조립자) 거래 요청 채팅 (구매자)
거래 요청 폼 화면 금액 및 계좌 확인 화면 거래 요청 채팅 (조립자) 거래 요청 채팅 (구매자)
조립할 키보드에 필요한 상품 선택 및 조립 비용을 입력할 수 있습니다.
카테고리 별 상품을 검색할 수 있으며, 기타 카테고리를 추가할 수 있습니다.
거래할 최종 금액과 계좌를 확인할 수 있습니다. 거래 요청 시 조립자 채팅 화면입니다. 거래 요청 시 구매자 채팅 화면입니다.
거래 수락(구매자)
거래 내역 최종 금액 및 계좌 확인 간편 비밀번호 입력
거래 내역 최종 금액 및 계좌 확인 간편 비밀번호 입력
거래 수락 버튼 터치 시, 조립자가 작성한 거래 내역을 확인할 수 있습니다. 안심결제를 위한 수수료가 포함된 최종 금액 및 계좌를 확인할 수 있습니다. 계좌 연결 시 설정한 간편 비밀번호와 일치한다면 계좌에서 출금됩니다.
은행 화면 (출금) 거래 수락 채팅 (구매자) 거래 수락 채팅 (조립자)
은행 화면 (출금) 거래 수락 채팅 (구매자) 거래 수락 채팅 (조립자)
거래 수락 시 구매자 은행 화면입닌다. 거래 수락 시 구매자 채팅 화면입니다. 거래 수락 시 조립자 채팅 화면입니다.
(거래 완료 요청 버튼을 터치하면, 요청 메시지가 전송됩니다.)
거래 완료(구매자)
거래 확정 모달 거래 완료 채팅 (구매자) 거래 완료 채팅 (조립자) 은행 화면 (입금)
거래 확정 모달 거래 완료 채팅 (구매자) 거래 완료 채팅 (조립자) 은행 화면 (입금)
거래 완료하기 버튼 터치 시 나타나는 모달입니다. 거래 완료 시 구매자 채팅 화면입니다. 거래 완료 시 조립자 채팅 화면입니다. 거래 완료 시 조립자 은행 화면입니다.

🎥 시연 영상

피드-홈 기능 영상 피드-작성 기능 영상 피드-태그상품 기능 영상
상품페이지 기능 영상 견적게시판-작성 기능 영상 견적게시판-채팅 기능 영상
마이페이지 기능 영상

🔍 주요 기술

MSA
  • 서비스별 독립 배포: 특정 서비스만 업데이트하더라도 다른 서비스에 영향 없음
  • 기술 스택 유연성: 각 서비스에 최적화된 기술 선택 가능
  • 장애 격리: 한 서비스의 장애가 전체 시스템으로 확산되지 않음
  • 탄력적 확장: 트래픽이 많은 피드 서비스만 선택적으로 확장 가능

  Config 서버 분리

  • 중앙 집중식 구성 관리: 모든 마이크로서비스의 설정을 한 곳에서 관리하여 일관성 유지
  • 동적 설정 변경: 서비스 재시작 없이 설정 변경 적용 가능 (Spring Cloud Config + Spring Cloud Bus)
  • 환경별 설정 분리: 개발/테스트/프로덕션 환경별 설정 용이
  • 버전 관리: Git 등과 연동하여 설정 이력 관리 가능
SNS

  Kafka를 활용한 사용자 활동 이벤트 기반 로깅 & 맞춤형 피드 추천 시스템

  • 비동기 처리: 사용자 활동 로깅이 메인 서비스의 응답 시간에 영향을 주지 않음
  • 높은 처리량: Kafka의 높은 처리량으로 대량의 사용자 활동을 빠르게 처리
  • 내구성: 데이터 유실 없이 사용자 활동 로그 보존
  • 서비스 분리: 로깅 처리 실패가 핵심 서비스에 영향을 주지 않음
  • 확장성: 데이터 처리 파이프라인 구축 용이(Kafka Connect, Kafka Streams 등 활용)
  • 개인화: 사용자별 관심사와 활동 패턴에 맞는 콘텐츠 제공
  • 데이터 기반 의사결정: 사용자 행동 데이터를 활용한 알고리즘 개선 가능
  • 사용자 경험 향상: 관련성 높은 콘텐츠로 참여도와 체류 시간 증가
  • 콜드 스타트 문제 해결: 다단계 추천 전략(팔로우->활동 기반->인기)으로 신규 사용자에게도 관련 콘텐츠 제공 가능
채팅

  STOMP 프로토콜 도입

  • 메시지 형식 정의: 메시지 구조화로 개발 복잡성 감소
  • 간편한 라우팅: @Controller와 @MessageMapping으로 메시지 처리 단순화
  • 효율적인 세션 관리: 채팅방별 연결 관리 자동화
  • 표준화된 통신: 다양한 클라이언트와 서버 간 호환성 확보
  • 발행/구독 모델: 유연한 메시지 전달 구조로 확장성 향상

  Kafka 메시지 브로커 통합

  • 높은 확장성: 브로커 추가와 파티셔닝을 통한 효율적인 병렬 처리
  • 데이터 안정성: 디스크 저장 및 복제를 통한 메시지 유실 방지
  • 대용량 처리: 대규모 실시간 메시징에 최적화된 아키텍처
  • 장애 대응: 장애 발생 시에도 메시지 보존 및 복구 가능
  • 비동기 처리: 채팅 서비스와 데이터 처리 로직의 분리로 응답성 향상

  MongoDB를 통한 채팅 데이터 저장

  • 비정형 데이터 처리: 이모티콘 등 다양한 형식의 채팅 내용 수용
  • 고성능 읽기/쓰기: 실시간 채팅에 필수적인 빠른 응답성 확보
  • 확장성: 샤딩을 통한 대용량 데이터 처리 지원
  • 유연한 스키마: 향후 기능 확장 시 스키마 변경 용이
  • 인덱싱: 효율적인 채팅 내역 검색 및 조회 가능

  SSE를 활용한 알림 기능 구현

  • 리소스 효율성: 폴링 방식 대비 서버 부하 감소
  • 실시간 전달: 즉각적인 알림으로 사용자 경험 향상
  • 구현 단순성: WebSocket 대비 간편한 구현 및 유지보수
  • 브라우저 호환성: 대부분의 모던 브라우저에서 지원
  • 단방향 최적화: 알림 특성에 맞는 서버→클라이언트 전용 통신 채널
검색

고성능 검색 기능

  • 역 인덱스 기반 고속 검색: Elasticsearch의 역 인덱스 구조를 활용하여 대량의 문서에서도 밀리초 단위의 빠른 검색 결과를 제공합니다
  • 한글 초성 검색: 사용자가 "ㅋㅂㄷ"만 입력해도 "키보드"와 같은 결과를 찾을 수 있도록 jaso_tokenizer를 활용합니다.
  • 자소 분리 분석: "키보드"를 "ㅋㅣㅂㅗㄷㅡ"로 분석하여 부분 일치 검색이 가능하게 합니다.
  • 오타 교정: "zlqhem"(키보드의 영타)로 입력해도 "키보드"를 찾을 수 있는 fuzzy 검색을 지원합니다.
  • 중간 일치 검색: ngram 필터를 사용하여 단어의 중간부터 시작하는 검색어도 자동완성에 포함시킵니다
  • 동의어 처리: 동의어 사전을 구축하여 "스위치"와 "축"을 동일한 개념으로 인식하되, 정확한 용어에 더 높은 가중치를 부여합니다.

검색 최적화 전략

  • 필드 부스팅: 제목, 태그 등 중요 필드에 더 높은 가중치를 부여하여 검색 관련성을 향상시킵니다.
  • 인덱스 별칭 활용: 인덱스 별칭(alias)을 사용하여 데이터 재인덱싱 없이 검색 최적화가 가능하게 합니다.
  • 쿼리 최적화: 필터 컨텍스트를 활용하고 적절한 쿼리 타입(term, match)을 선택하여 검색 성능을 향상시킵니다.

데이터 동기화 시스템

  • 실시간 동기화: Logstash를 사용하여 MySQL 데이터를 10초 간격으로 Elasticsearch에 색인합니다.
  • 증분 업데이트: 변경된 데이터만 선별적으로 업데이트하여 시스템 부하를 최소화합니다.
  • 배치 처리: 전체 데이터는 Spring Batch를 활용하여 일 단위로 전체 재색인합니다.

사용자 경험 향상 기능

  • 최근 검색어 관리: Redis를 활용하여 사용자별 최근 검색어를 저장하고 빠르게 조회합니다.
  • 검색어 추천: 사용자의 검색 패턴과 행동 데이터를 분석하여 개인화된 검색어를 추천합니다.
  • 인기 검색어: 3시간 간격으로 집계된 상위 10개 인기 검색어를 제공하고, 순위 변동(상승/하락/유지/신규)을 표시합니다.
  • 자동완성: 사용자 입력에 따라 실시간으로 관련 검색어를 제안하여 검색 편의성을 높입니다.

🔧 기술 스택

기술스택1 기술스택2

🗺️ 기술 아키텍처

아키텍처

📂 프로젝트 구조

Back 폴더 구조 보기
  📦BE
 ┣ 📂auth
 ┃ ┣ 📂.mvn
 ┃ ┃ ┗ 📂wrapper
 ┃ ┃ ┃ ┗ 📜maven-wrapper.properties
 ┃ ┣ 📂src
 ┃ ┃ ┣ 📂main
 ┃ ┃ ┃ ┣ 📂java
 ┃ ┃ ┃ ┃ ┗ 📂com
 ┃ ┃ ┃ ┃ ┃ ┗ 📂ssafy
 ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📂auth
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂common
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜ApiResponse.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂config
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜RedisConfig.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜RestTemplateConfig.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜S3Config.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜SecurityConfig.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂controller
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜FileUploadController.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜JwtTokenController.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜MemberController.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜SocialLoginController.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂dto
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂oauth
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜KakaoLoginDto.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂request
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜MemberProfileUpdateRequest.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜SignUpRequest.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂response
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜KakaoUserInfoResponseDto.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜LoginResponse.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜MemberResponseDto.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜NicknameCheckResponse.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜UploadResponse.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂token
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜JwtTokenRequest.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜JwtTokenResponse.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜JwtTokens.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📂userinfo
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜KakaoUserInfoResponseDto.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂entity
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜Member.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂exception
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜FileDeleteException.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜FileUploadException.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜InvalidFileException.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜TokenRefreshException.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂jwt
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂filter
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜JwtAuthenticationFilter.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜JwtTokenGenerator.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜JwtTokenProvider.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂repository
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜MemberRepository.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜RefreshTokenRedisRepository.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂service
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜JwtTokenService.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜KakaoService.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜MemberService.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜S3Service.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜AuthApplication.java
 ┃ ┃ ┃ ┗ 📂resources
 ┃ ┃ ┃ ┃ ┗ 📜bootstrap.yml
 ┃ ┃ ┗ 📂test
 ┃ ┃ ┃ ┗ 📂java
 ┃ ┃ ┃ ┃ ┗ 📂com
 ┃ ┃ ┃ ┃ ┃ ┗ 📂ssafy
 ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📂auth
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜AuthApplicationTests.java
 ┃ ┣ 📜.gitattributes
 ┃ ┣ 📜.gitignore
 ┃ ┣ 📜Dockerfile
 ┃ ┣ 📜mvnw
 ┃ ┣ 📜mvnw.cmd
 ┃ ┗ 📜pom.xml
 ┣ 📂board
 ┃ ┣ 📂src
 ┃ ┃ ┗ 📂main
 ┃ ┃ ┃ ┣ 📂java
 ┃ ┃ ┃ ┃ ┗ 📂com
 ┃ ┃ ┃ ┃ ┃ ┗ 📂ssafy
 ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📂board
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂client
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜UserServiceClient.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂common
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜ApiResponse.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂config
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜EurekaClientConfig.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜MyBatisConfig.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜S3Config.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜StaticResourceConfig.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂controller
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜EstimateBoardController.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂dto
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜BoardImageDTO.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜BoardProductDTO.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜EstimateBoardDTO.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜MemberResponseDto.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂exception
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜ApiExceptionHandler.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜BoardException.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂mapper
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜BoardImageMapper.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜BoardProductMapper.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜EstimateBoardMapper.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂model
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜BoardImage.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜BoardProduct.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜EstimateBoard.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂service
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜EstimateBoardService.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜EstimateBoardServiceImpl.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜FileUploadService.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜LocalFileUploadServiceImpl.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜S3FileUploadServiceImpl.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜BoardApplication.java
 ┃ ┃ ┃ ┗ 📂resources
 ┃ ┃ ┃ ┃ ┣ 📂mapper
 ┃ ┃ ┃ ┃ ┃ ┣ 📜BoardImageMapper.xml
 ┃ ┃ ┃ ┃ ┃ ┗ 📜EstimateBoardMapper.xml
 ┃ ┃ ┃ ┃ ┣ 📜bootstrap.yml
 ┃ ┃ ┃ ┃ ┗ 📜schema.sql
 ┃ ┣ 📜.gitignore
 ┃ ┣ 📜Dockerfile
 ┃ ┗ 📜pom.xml
 ┣ 📂chat
 ┃ ┣ 📂.mvn
 ┃ ┃ ┗ 📂wrapper
 ┃ ┃ ┃ ┗ 📜maven-wrapper.properties
 ┃ ┣ 📂src
 ┃ ┃ ┣ 📂main
 ┃ ┃ ┃ ┣ 📂java
 ┃ ┃ ┃ ┃ ┗ 📂com
 ┃ ┃ ┃ ┃ ┃ ┗ 📂ssafy
 ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📂board
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂client
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜UserServiceClient.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂config
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜S3Config.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂dto
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜BoardProductDTO.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜MemberResponseDto.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂mapper
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜BoardProductMapper.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂model
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜BoardProduct.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📂service
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜LocalFileUploadServiceImpl.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜S3FileUploadServiceImpl.java
 ┃ ┃ ┃ ┗ 📂resources
 ┃ ┃ ┃ ┃ ┣ 📂mapper
 ┃ ┃ ┃ ┃ ┃ ┗ 📜BoardProductMapper.xml
 ┃ ┃ ┃ ┃ ┗ 📜bootstrap.yml
 ┃ ┃ ┗ 📂test
 ┃ ┃ ┃ ┗ 📂java
 ┃ ┃ ┃ ┃ ┗ 📂com
 ┃ ┃ ┃ ┃ ┃ ┗ 📂ssafy
 ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📂chat
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜ChatApplicationTests.java
 ┃ ┣ 📜.gitattributes
 ┃ ┣ 📜.gitignore
 ┃ ┣ 📜Dockerfile
 ┃ ┣ 📜mvnw
 ┃ ┣ 📜mvnw.cmd
 ┃ ┗ 📜pom.xml
 ┣ 📂config
 ┃ ┣ 📂.mvn
 ┃ ┃ ┗ 📂wrapper
 ┃ ┃ ┃ ┗ 📜maven-wrapper.properties
 ┃ ┣ 📂src
 ┃ ┃ ┣ 📂main
 ┃ ┃ ┃ ┗ 📂java
 ┃ ┃ ┃ ┃ ┗ 📂com
 ┃ ┃ ┃ ┃ ┃ ┗ 📂ssafy
 ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📂config
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜ConfigApplication.java
 ┃ ┃ ┗ 📂test
 ┃ ┃ ┃ ┗ 📂java
 ┃ ┃ ┃ ┃ ┗ 📂com
 ┃ ┃ ┃ ┃ ┃ ┗ 📂ssafy
 ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📂config
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜ConfigApplicationTests.java
 ┃ ┣ 📜.gitattributes
 ┃ ┣ 📜.gitignore
 ┃ ┣ 📜Dockerfile
 ┃ ┣ 📜mvnw
 ┃ ┣ 📜mvnw.cmd
 ┃ ┗ 📜pom.xml
 ┣ 📂crawling
 ┃ ┣ 📂data
 ┃ ┃ ┣ 📜category.sql
 ┃ ┃ ┣ 📜geon_product.json
 ┃ ┃ ┣ 📜products.sql
 ┃ ┃ ┣ 📜products_descriptions.json
 ┃ ┃ ┣ 📜products_descriptions.sql
 ┃ ┃ ┗ 📜swegkey_product.json
 ┃ ┣ 📜.gitignore
 ┃ ┣ 📜analysis.md
 ┃ ┣ 📜base.py
 ┃ ┣ 📜dbctl.py
 ┃ ┣ 📜detail.py
 ┃ ┣ 📜driver.py
 ┃ ┣ 📜mj.py
 ┃ ┣ 📜product_crawler.py
 ┃ ┣ 📜product_detail.py
 ┃ ┣ 📜product_main.py
 ┃ ┣ 📜product_og.py
 ┃ ┗ 📜requirements.txt
 ┣ 📂eureka
 ┃ ┣ 📂.mvn
 ┃ ┃ ┗ 📂wrapper
 ┃ ┃ ┃ ┗ 📜maven-wrapper.properties
 ┃ ┣ 📂src
 ┃ ┃ ┣ 📂main
 ┃ ┃ ┃ ┣ 📂java
 ┃ ┃ ┃ ┃ ┗ 📂com
 ┃ ┃ ┃ ┃ ┃ ┗ 📂ssafy
 ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📂eureka
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜EurekaApplication.java
 ┃ ┃ ┃ ┗ 📂resources
 ┃ ┃ ┃ ┃ ┗ 📜bootstrap.yml
 ┃ ┃ ┗ 📂test
 ┃ ┃ ┃ ┗ 📂java
 ┃ ┃ ┃ ┃ ┗ 📂com
 ┃ ┃ ┃ ┃ ┃ ┗ 📂ssafy
 ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📂eureka
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜EurekaApplicationTests.java
 ┃ ┣ 📜.gitattributes
 ┃ ┣ 📜.gitignore
 ┃ ┣ 📜Dockerfile
 ┃ ┣ 📜mvnw
 ┃ ┣ 📜mvnw.cmd
 ┃ ┗ 📜pom.xml
 ┣ 📂feed
 ┃ ┣ 📂.mvn
 ┃ ┃ ┗ 📂wrapper
 ┃ ┃ ┃ ┗ 📜maven-wrapper.properties
 ┃ ┣ 📂src
 ┃ ┃ ┣ 📂main
 ┃ ┃ ┃ ┣ 📂java
 ┃ ┃ ┃ ┃ ┗ 📂com
 ┃ ┃ ┃ ┃ ┃ ┗ 📂ssafy
 ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📂feed
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂client
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜ProductServiceClient.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜ProductServiceClientFallbackFactory.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜UserServiceClient.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜UserServiceClientFallbackFactory.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂config
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜FeignConfig.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜JsonTypeHandler.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜KafkaConfig.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜LocalDateTimeTypeHandler.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜MyBatisConfig.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜RedisConfig.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜S3Config.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂consumer
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜BookmarkEventConsumer.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜LikeEventConsumer.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂controller
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜FeedController.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂dto
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂request
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜CommentRequest.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜FeedCreateRequest.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜FeedProductRequest.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜ProductCreateRequest.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜ProductIdRequest.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂response
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜BookmarkResponse.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜DeleteFeedResponse.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜FeedPageResponse.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜FollowResponse.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜LikeResponse.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜ProductApiResponse.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜ProductFavoriteResponse.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜UserApiResponse.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜CommentDTO.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜FeedDetailDTO.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜FeedDTO.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜FeedImageDTO.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜HashtagDTO.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜MemberResponseDto.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜ProductDescriptionDTO.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜ProductDTO.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜ProductResponseDto.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜UserDTO.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂mapper
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜CommentMapper.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜FeedHashtagMapper.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜FeedImageMapper.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜FeedMapper.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜FeedProductMapper.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜FeedReadMapper.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜FollowUserMapper.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜HashtagMapper.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜UserActivityMapper.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜UserHashtagPreferenceMapper.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂model
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜Comment.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜CommentMention.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜Feed.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜FeedBookmark.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜FeedHashtag.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜FeedImage.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜FeedLike.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜FeedProduct.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜FeedRead.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜FollowUser.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜Hashtag.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜UserActivity.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜UserHashtagPreference.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂service
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜BookmarkService.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜FeedService.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜FileStorageService.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜HashtagService.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜LikeService.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜ProductServiceAdapter.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜UserActivityService.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜UserServiceAdapter.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜FeedApplication.java
 ┃ ┃ ┃ ┗ 📂resources
 ┃ ┃ ┃ ┃ ┣ 📂mappers
 ┃ ┃ ┃ ┃ ┃ ┗ 📂feed
 ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜CommentMapper.xml
 ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜FeedHashtagMapper.xml
 ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜FeedImageMapper.xml
 ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜FeedMapper.xml
 ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜FeedProductMapper.xml
 ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜FeedReadMapper.xml
 ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜FollowUserMapper.xml
 ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜HashtagMapper.xml
 ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜UserActivityMapper.xml
 ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜UserHashtagPreferenceMapper.xml
 ┃ ┃ ┃ ┃ ┗ 📜bootstrap.yml
 ┃ ┃ ┗ 📂test
 ┃ ┃ ┃ ┗ 📂java
 ┃ ┃ ┃ ┃ ┗ 📂com
 ┃ ┃ ┃ ┃ ┃ ┗ 📂ssafy
 ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📂feed
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜FeedApplicationTests.java
 ┃ ┣ 📜.gitattributes
 ┃ ┣ 📜.gitignore
 ┃ ┣ 📜Dockerfile
 ┃ ┣ 📜mvnw
 ┃ ┣ 📜mvnw.cmd
 ┃ ┗ 📜pom.xml
 ┣ 📂financial
 ┃ ┣ 📂.mvn
 ┃ ┃ ┗ 📂wrapper
 ┃ ┃ ┃ ┗ 📜maven-wrapper.properties
 ┃ ┣ 📂src
 ┃ ┃ ┣ 📂main
 ┃ ┃ ┃ ┣ 📂java
 ┃ ┃ ┃ ┃ ┗ 📂com
 ┃ ┃ ┃ ┃ ┃ ┗ 📂ssafy
 ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📂financial
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂config
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜EscrowAccountProperties.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜FinancialApiConfig.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜RestTemplateConfig.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜SecurityConfig.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂controller
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜AccountController.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜PayController.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂dto
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂request
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂common
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜FinancialRequestHeader.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜FinancialUserInfo.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜AccountBalanceRequest.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜AccountCheckRequestDto.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜AccountTransferRequest.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜CreateAccountRequest.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜CreateUserRequest.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜DemandDepositProductRequest.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜EscrowTransactionAcceptRequest.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜EscrowTransactionCompleteRequest.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜OneWonTransferRequest.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜OneWonVerifyRequest.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜SetSimplePasswordRequest.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜SimplePasswordVerifyRequest.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜TransactionHistoryListRequest.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📂response
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂common
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜FinancialResponseHeader.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜OpenApiResponse.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜AccountBalanceResponse.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜AccountTransferResponse.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜CreateAccountResponse.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜CreateUserResponse.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜DemandDepositProductResponse.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜MyAccountCheckResponse.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜OneWonTransferInitResponse.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜OneWonTransferResponse.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜OneWonVerifyResponse.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜SimplePasswordVerifyResponse.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜TransactionHistoryListResponse.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂entity
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜AccountEntity.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜EscrowTransactionEntity.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜FinancialUserEntity.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜RegisterProductEntity.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜SimplePasswordEntity.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜UserAccountConnectionEntity.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜UsersEntity.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂handler
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜ApiException.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜GlobalExceptionHandler.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂repository
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜AccountRepository.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜EscrowTransactionRepository.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜FinancialUserRepository.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜RegisterProductRepository.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜SimplePasswordRepository.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜UserAccountConnectionRepository.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜UsersRepository.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂service
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜CommonService.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜FinancialApiService.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜PayService.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂util
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜BankCodeMapper.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜ErrorCode.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜FinancialHeaderUtil.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜ResponseUtil.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜TransactionStatus.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜FinancialApplication.java
 ┃ ┃ ┃ ┗ 📂resources
 ┃ ┃ ┃ ┃ ┗ 📜bootstrap.yml
 ┃ ┃ ┗ 📂test
 ┃ ┃ ┃ ┗ 📂java
 ┃ ┃ ┃ ┃ ┗ 📂com
 ┃ ┃ ┃ ┃ ┃ ┗ 📂ssafy
 ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📂financial
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜FinancialApplicationTests.java
 ┃ ┣ 📜.gitattributes
 ┃ ┣ 📜.gitignore
 ┃ ┣ 📜Dockerfile
 ┃ ┣ 📜mvnw
 ┃ ┣ 📜mvnw.cmd
 ┃ ┗ 📜pom.xml
 ┣ 📂gateway
 ┃ ┣ 📂.mvn
 ┃ ┃ ┗ 📂wrapper
 ┃ ┃ ┃ ┗ 📜maven-wrapper.properties
 ┃ ┣ 📂src
 ┃ ┃ ┣ 📂main
 ┃ ┃ ┃ ┣ 📂java
 ┃ ┃ ┃ ┃ ┗ 📂com
 ┃ ┃ ┃ ┃ ┃ ┗ 📂ssafy
 ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📂gateway
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂config
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜FilterConfig.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜SecurityConfig.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂filter
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜JwtAuthFilter.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜GatewayApplication.java
 ┃ ┃ ┃ ┗ 📂resources
 ┃ ┃ ┃ ┃ ┗ 📜bootstrap.yml
 ┃ ┃ ┗ 📂test
 ┃ ┃ ┃ ┗ 📂java
 ┃ ┃ ┃ ┃ ┗ 📂com
 ┃ ┃ ┃ ┃ ┃ ┗ 📂ssafy
 ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📂gateway
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜GatewayApplicationTests.java
 ┃ ┣ 📜.gitattributes
 ┃ ┣ 📜.gitignore
 ┃ ┣ 📜Dockerfile
 ┃ ┣ 📜mvnw
 ┃ ┣ 📜mvnw.cmd
 ┃ ┗ 📜pom.xml
 ┣ 📂Logstash
 ┃ ┣ 📜feeds.conf
 ┃ ┣ 📜products.conf
 ┃ ┗ 📜users.conf
 ┣ 📂mypage
 ┃ ┣ 📂.mvn
 ┃ ┃ ┗ 📂wrapper
 ┃ ┃ ┃ ┗ 📜maven-wrapper.properties
 ┃ ┣ 📂src
 ┃ ┃ ┣ 📂main
 ┃ ┃ ┃ ┣ 📂java
 ┃ ┃ ┃ ┃ ┗ 📂com
 ┃ ┃ ┃ ┃ ┃ ┗ 📂ssafy
 ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📂mypage
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂common
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜ApiResponse.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂profile
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂controller
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜ProfileController.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂dto
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜ProfileDto.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜StatusMessageUpdateDto.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂mapper
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜UserMapper.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📂service
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜ProfileService.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜ProfileServiceImpl.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂rating
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂controller
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜RatingController.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂dto
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜RatingRequestDto.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂mapper
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜RatingMapper.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📂service
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜RatingService.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜RatingServiceImpl.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜MypageApplication.java
 ┃ ┃ ┃ ┗ 📂resources
 ┃ ┃ ┃ ┃ ┣ 📂mapper
 ┃ ┃ ┃ ┃ ┃ ┣ 📜RatingMapper.xml
 ┃ ┃ ┃ ┃ ┃ ┗ 📜UserMapper.xml
 ┃ ┃ ┃ ┃ ┗ 📜bootstrap.yml
 ┃ ┃ ┗ 📂test
 ┃ ┃ ┃ ┗ 📂java
 ┃ ┃ ┃ ┃ ┗ 📂com
 ┃ ┃ ┃ ┃ ┃ ┗ 📂ssafy
 ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📂mypage
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜MypageApplicationTests.java
 ┃ ┣ 📜.gitattributes
 ┃ ┣ 📜.gitignore
 ┃ ┣ 📜Dockerfile
 ┃ ┣ 📜mvnw
 ┃ ┣ 📜mvnw.cmd
 ┃ ┗ 📜pom.xml
 ┣ 📂pay
 ┃ ┣ 📂.mvn
 ┃ ┃ ┗ 📂wrapper
 ┃ ┃ ┃ ┗ 📜maven-wrapper.properties
 ┃ ┣ 📂src
 ┃ ┃ ┣ 📂main
 ┃ ┃ ┃ ┗ 📂java
 ┃ ┃ ┃ ┃ ┗ 📂com
 ┃ ┃ ┃ ┃ ┃ ┗ 📂ssafy
 ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📂pay
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜PayApplication.java
 ┃ ┃ ┗ 📂test
 ┃ ┃ ┃ ┗ 📂java
 ┃ ┃ ┃ ┃ ┗ 📂com
 ┃ ┃ ┃ ┃ ┃ ┗ 📂ssafy
 ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📂pay
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜PayApplicationTests.java
 ┃ ┣ 📜.gitattributes
 ┃ ┣ 📜.gitignore
 ┃ ┣ 📜mvnw
 ┃ ┣ 📜mvnw.cmd
 ┃ ┗ 📜pom.xml
 ┣ 📂product
 ┃ ┣ 📂.mvn
 ┃ ┃ ┗ 📂wrapper
 ┃ ┃ ┃ ┗ 📜maven-wrapper.properties
 ┃ ┣ 📂src
 ┃ ┃ ┣ 📂main
 ┃ ┃ ┃ ┣ 📂java
 ┃ ┃ ┃ ┃ ┗ 📂com
 ┃ ┃ ┃ ┃ ┃ ┗ 📂ssafy
 ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📂product
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂common
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜ApiResponse.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂config
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜EurekaClientConfig.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜MyBatisConfig.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜SecurityConfig.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂controller
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜ProductController.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂dto
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂request
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜ProductIdRequest.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜WishRequest.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜CategoryDto.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜OpenGraphDto.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜ProductDescriptionDto.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜ProductDto.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂exception
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜ApiExceptionHandler.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂mapper
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜CategoryMapper.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜ProductDescriptionMapper.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜ProductMapper.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜ProductWishMapper.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜WishMapper.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂service
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜ProductService.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜ProductServiceImpl.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜UserServiceClient.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜WishService.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂util
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜SortUtil.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜ProductApplication.java
 ┃ ┃ ┃ ┗ 📂resources
 ┃ ┃ ┃ ┃ ┣ 📂old
 ┃ ┃ ┃ ┃ ┃ ┣ 📜products.sql
 ┃ ┃ ┃ ┃ ┃ ┗ 📜products_descriptions.sql
 ┃ ┃ ┃ ┃ ┣ 📜bootstrap.yml
 ┃ ┃ ┃ ┃ ┣ 📜category.sql
 ┃ ┃ ┃ ┃ ┣ 📜old_products.sql
 ┃ ┃ ┃ ┃ ┣ 📜products.sql
 ┃ ┃ ┃ ┃ ┣ 📜products_descriptions.sql
 ┃ ┃ ┃ ┃ ┗ 📜schema.sql
 ┃ ┃ ┗ 📂test
 ┃ ┃ ┃ ┗ 📂java
 ┃ ┃ ┃ ┃ ┗ 📂com
 ┃ ┃ ┃ ┃ ┃ ┗ 📂ssafy
 ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📂product
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜ProductApplicationTests.java
 ┃ ┣ 📜.gitattributes
 ┃ ┣ 📜.gitignore
 ┃ ┣ 📜Dockerfile
 ┃ ┣ 📜mvnw
 ┃ ┣ 📜mvnw.cmd
 ┃ ┗ 📜pom.xml
 ┣ 📂search
 ┃ ┣ 📂src
 ┃ ┃ ┗ 📂main
 ┃ ┃ ┃ ┣ 📂java
 ┃ ┃ ┃ ┃ ┗ 📂com
 ┃ ┃ ┃ ┃ ┃ ┗ 📂ssafy
 ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📂search
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂autocomplete
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂controller
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜AutocompleteController.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂document
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜SuggestKeywordDocument.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂repository
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜AutocompleteRepository.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜AutocompleteRepositoryImpl.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📂service
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜AutocompleteService.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜AutocompleteServiceImpl.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂board
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂controller
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜BoardProductSearchController.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂document
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜BoardProductDocument.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂dto
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜BoardProductSearchResponse.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂repository
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜BoardProductSearchRepository.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜BoardProductSearchRepositoryCustom.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜BoardProductSearchRepositoryImpl.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📂service
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜BoardProductSearchService.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜BoardProductSearchServiceImpl.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂config
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜ElasticsearchConfig.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜KeywordRankingJobConfig.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜RedisConfig.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜WebConfig.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂feed
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂controller
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜FeedProductSearchController.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂document
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜FeedProductDocument.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂dto
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜FeedProductSearchResponse.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂repository
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜FeedProductSearchRepository.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜FeedProductSearchRepositoryImpl.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📂service
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜FeedProductSearchService.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜FeedProductSearchServiceImpl.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂integratedSearch
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂controller
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜SearchController.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂document
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜FeedDocument.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜ProductDocument.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜SuggestDocument.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜UserDocument.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂dto
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜FeedSearchResultDto.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜ProductSearchResultDto.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜SearchRequestDto.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜UserSearchResultDto.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂repository
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜SearchRepository.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜SearchRepositoryImpl.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📂service
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜FeedSearchService.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜FeedSearchServiceImpl.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜ProductSearchService.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜ProductSearchServiceImpl.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜SearchService.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜SearchServiceImpl.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜UserSearchService.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜UserSearchServiceImpl.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂keywordRanking
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂controller
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜KeywordRankController.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂dto
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜KeywordDto.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜KeywordRankDto.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂mapper
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜KeywordRankMapper.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂processor
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜KeywordRankProcessor.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜KeywordRankReader.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜KeywordRankWriter.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂scheduler
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜BatchJobScheduler.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📂service
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜KeywordRankService.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜KeywordRankServiceImpl.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂recentSearch
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂controller
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜RecentSearchController.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📂service
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜RecentSearchService.java
 ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜SearchApplication.java
 ┃ ┃ ┃ ┗ 📂resources
 ┃ ┃ ┃ ┃ ┣ 📂mapper
 ┃ ┃ ┃ ┃ ┃ ┗ 📜KeywordRankMapper.xml
 ┃ ┃ ┃ ┃ ┣ 📜bootstrap.yml
 ┃ ┃ ┃ ┃ ┣ 📜dummy.sql
 ┃ ┃ ┃ ┃ ┣ 📜elasticsearch-settings.json
 ┃ ┃ ┃ ┃ ┣ 📜keywi_schema.sql
 ┃ ┃ ┃ ┃ ┗ 📜schema.sql
 ┃ ┣ 📜.gitattributes
 ┃ ┣ 📜.gitignore
 ┃ ┣ 📜Dockerfile
 ┃ ┣ 📜mvnw
 ┃ ┣ 📜mvnw.cmd
 ┃ ┣ 📜pom.xml
 ┃ ┗ 📜README.md
 ┗ 📜.gitignore
  
Front 폴더 구조 보기
  📦src
 ┣ 📂components
 ┃ ┣ 📂message
 ┃ ┃ ┣ 📜ErrorMessage.tsx
 ┃ ┃ ┣ 📜LoadingMessage.tsx
 ┃ ┃ ┗ 📜NoDataMessage.tsx
 ┃ ┣ 📂ui
 ┃ ┃ ┣ 📜button.tsx
 ┃ ┃ ┣ 📜carousel.tsx
 ┃ ┃ ┣ 📜dialog-noX.tsx
 ┃ ┃ ┣ 📜dialog.tsx
 ┃ ┃ ┣ 📜drawer.tsx
 ┃ ┃ ┣ 📜dropdown-menu.tsx
 ┃ ┃ ┣ 📜input-otp.tsx
 ┃ ┃ ┣ 📜skeleton.tsx
 ┃ ┃ ┣ 📜tabs.tsx
 ┃ ┃ ┗ 📜toaster.tsx
 ┃ ┣ 📜AuthRedirect.tsx
 ┃ ┣ 📜Badge.tsx
 ┃ ┣ 📜DetailHeader.tsx
 ┃ ┣ 📜FeedWriteButton.tsx
 ┃ ┣ 📜HeaderIcons.tsx
 ┃ ┣ 📜HeaderSearch.tsx
 ┃ ┣ 📜InfiniteScroll.tsx
 ┃ ┣ 📜MainButton.tsx
 ┃ ┣ 📜NavBar.tsx
 ┃ ┣ 📜NextHeader.tsx
 ┃ ┣ 📜ProtectedRoute.tsx
 ┃ ┣ 📜PulltoRefresh.tsx
 ┃ ┣ 📜StyledTabs.tsx
 ┃ ┣ 📜StyleTab.tsx
 ┃ ┣ 📜SubHeader.tsx
 ┃ ┗ 📜TwoBtnModal.tsx
 ┣ 📂features
 ┃ ┣ 📂board
 ┃ ┃ ┣ 📂components
 ┃ ┃ ┃ ┣ 📜BoardCard.tsx
 ┃ ┃ ┃ ┣ 📜BoardCardList.tsx
 ┃ ┃ ┃ ┣ 📜BoardDetailMain.tsx
 ┃ ┃ ┃ ┣ 📜BoardDetailTop.tsx
 ┃ ┃ ┃ ┣ 📜BoardProductCard.tsx
 ┃ ┃ ┃ ┣ 📜BoardWriteBtn.tsx
 ┃ ┃ ┃ ┣ 📜ProductForm.tsx
 ┃ ┃ ┃ ┣ 📜ProductModal.tsx
 ┃ ┃ ┃ ┣ 📜ProductSelector.tsx
 ┃ ┃ ┃ ┣ 📜WriteForm.tsx
 ┃ ┃ ┃ ┗ 📜WriteImage.tsx
 ┃ ┃ ┣ 📂hooks
 ┃ ┃ ┃ ┣ 📜useBoardDetail.ts
 ┃ ┃ ┃ ┣ 📜useBoardList.ts
 ┃ ┃ ┃ ┣ 📜useBoardWrite.ts
 ┃ ┃ ┃ ┣ 📜useFavoriteProducts.ts
 ┃ ┃ ┃ ┗ 📜useProductSearch.ts
 ┃ ┃ ┗ 📂services
 ┃ ┃ ┃ ┗ 📜boardService.ts
 ┃ ┣ 📂chat
 ┃ ┃ ┣ 📂components
 ┃ ┃ ┃ ┣ 📂DealAccept
 ┃ ┃ ┃ ┃ ┣ 📜AcceptCompleteScreen.tsx
 ┃ ┃ ┃ ┃ ┣ 📜CommissionInfoModal.tsx
 ┃ ┃ ┃ ┃ ┣ 📜DealListScreen.tsx
 ┃ ┃ ┃ ┃ ┣ 📜PasswordScreen.tsx
 ┃ ┃ ┃ ┃ ┗ 📜SafePaymentScreen.tsx
 ┃ ┃ ┃ ┣ 📂DealRequest
 ┃ ┃ ┃ ┃ ┣ 📜AddMethodModal.tsx
 ┃ ┃ ┃ ┃ ┣ 📜DealReqConfirmScreen.tsx
 ┃ ┃ ┃ ┃ ┣ 📜DealReqFormScreen.tsx
 ┃ ┃ ┃ ┃ ┣ 📜ProductCard.tsx
 ┃ ┃ ┃ ┃ ┣ 📜ProductDirectModal.tsx
 ┃ ┃ ┃ ┃ ┣ 📜ProductForm.tsx
 ┃ ┃ ┃ ┃ ┣ 📜ProductSearchModal.tsx
 ┃ ┃ ┃ ┃ ┗ 📜ProductSelector.tsx
 ┃ ┃ ┃ ┣ 📂MessageBox
 ┃ ┃ ┃ ┃ ┣ 📜DealMessage.tsx
 ┃ ┃ ┃ ┃ ┣ 📜MyMessage.tsx
 ┃ ┃ ┃ ┃ ┗ 📜OpponentMessage.tsx
 ┃ ┃ ┃ ┣ 📜ChatCard.tsx
 ┃ ┃ ┃ ┣ 📜ChatRoomHeader.tsx
 ┃ ┃ ┃ ┣ 📜ChatRoomPostInfo.tsx
 ┃ ┃ ┃ ┣ 📜ChatRoomSendBox.tsx
 ┃ ┃ ┃ ┗ 📜ImageInputScreen.tsx
 ┃ ┃ ┣ 📂hooks
 ┃ ┃ ┃ ┣ 📂trades
 ┃ ┃ ┃ ┃ ┣ 📜useAcceptTrade.ts
 ┃ ┃ ┃ ┃ ┗ 📜useCompleteTrade.ts
 ┃ ┃ ┃ ┣ 📜useAccount.ts
 ┃ ┃ ┃ ┣ 📜useChatHistory.ts
 ┃ ┃ ┃ ┣ 📜useChatList.ts
 ┃ ┃ ┃ ┣ 📜useChatRoomInfo.ts
 ┃ ┃ ┃ ┣ 📜useChatSub.ts
 ┃ ┃ ┃ ┣ 📜useDealReceipt.ts
 ┃ ┃ ┃ ┣ 📜useImageUpload.ts
 ┃ ┃ ┃ ┣ 📜useProductsAllDeal.ts
 ┃ ┃ ┃ ┣ 📜useProductsSearchDeal.ts
 ┃ ┃ ┃ ┗ 📜useVerifyPassword.ts
 ┃ ┃ ┗ 📂sevices
 ┃ ┃ ┃ ┣ 📜chatService.ts
 ┃ ┃ ┃ ┣ 📜dealService.ts
 ┃ ┃ ┃ ┗ 📜tradeService.ts
 ┃ ┣ 📂home
 ┃ ┃ ┣ 📂components
 ┃ ┃ ┃ ┣ 📂comment
 ┃ ┃ ┃ ┃ ┣ 📜CommentInput.tsx
 ┃ ┃ ┃ ┃ ┣ 📜CommentItem.tsx
 ┃ ┃ ┃ ┃ ┗ 📜CommentList.tsx
 ┃ ┃ ┃ ┣ 📂feed
 ┃ ┃ ┃ ┃ ┣ 📜HomeFeed.tsx
 ┃ ┃ ┃ ┃ ┣ 📜HomeFeedImg.tsx
 ┃ ┃ ┃ ┃ ┣ 📜HomeFeedInteraction.tsx
 ┃ ┃ ┃ ┃ ┣ 📜HomeFeedList.tsx
 ┃ ┃ ┃ ┃ ┣ 📜HomeFeedProfile.tsx
 ┃ ┃ ┃ ┃ ┣ 📜HomeFeedSkeleton.tsx
 ┃ ┃ ┃ ┃ ┣ 📜HomeFeedTag.tsx
 ┃ ┃ ┃ ┃ ┣ 📜HomeFeedTagBtn.tsx
 ┃ ┃ ┃ ┃ ┣ 📜HomeFeedText.tsx
 ┃ ┃ ┃ ┃ ┣ 📜HomeHeader.tsx
 ┃ ┃ ┃ ┃ ┗ 📜HomeTagListModal.tsx
 ┃ ┃ ┃ ┣ 📂navbar
 ┃ ┃ ┃ ┃ ┣ 📜BookmarkedFeedGrid.tsx
 ┃ ┃ ┃ ┃ ┗ 📜FavoriteProductList.tsx
 ┃ ┃ ┃ ┗ 📂write
 ┃ ┃ ┃ ┃ ┣ 📜HashtagSelector.tsx
 ┃ ┃ ┃ ┃ ┣ 📜SelectDndWrapper.tsx
 ┃ ┃ ┃ ┃ ┣ 📜SelectDraggableImage.tsx
 ┃ ┃ ┃ ┃ ┣ 📜SelectImage.tsx
 ┃ ┃ ┃ ┃ ┣ 📜TagPointInfo.tsx
 ┃ ┃ ┃ ┃ ┣ 📜TagProductImg.tsx
 ┃ ┃ ┃ ┃ ┣ 📜TagProductList.tsx
 ┃ ┃ ┃ ┃ ┣ 📜TagProductModal.tsx
 ┃ ┃ ┃ ┃ ┣ 📜TagWriteModal.tsx
 ┃ ┃ ┃ ┃ ┣ 📜WriteShowImg.tsx
 ┃ ┃ ┃ ┃ ┗ 📜WriteText.tsx
 ┃ ┃ ┣ 📂hooks
 ┃ ┃ ┃ ┣ 📜useBookmarkedFeedsQuery.ts
 ┃ ┃ ┃ ┣ 📜useComments.ts
 ┃ ┃ ┃ ┣ 📜useFavoriteProducts.ts
 ┃ ┃ ┃ ┣ 📜useFeedInteractions.ts
 ┃ ┃ ┃ ┣ 📜useFeedMutation.ts
 ┃ ┃ ┃ ┣ 📜useFeedProductSearch.ts
 ┃ ┃ ┃ ┣ 📜useFeedQuery.ts
 ┃ ┃ ┃ ┣ 📜useHashtags.ts
 ┃ ┃ ┃ ┣ 📜useImageDragDrop.ts
 ┃ ┃ ┃ ┣ 📜useProductFavorite.ts
 ┃ ┃ ┃ ┣ 📜useProductTag.ts
 ┃ ┃ ┃ ┗ 📜useTagDragDrop.ts
 ┃ ┃ ┣ 📂services
 ┃ ┃ ┃ ┣ 📜commentService.ts
 ┃ ┃ ┃ ┣ 📜feedInteractionService.ts
 ┃ ┃ ┃ ┣ 📜feedProductService.ts
 ┃ ┃ ┃ ┗ 📜feedService.ts
 ┃ ┃ ┗ 📂utils
 ┃ ┃ ┃ ┗ 📜FeedDataConverter.ts
 ┃ ┣ 📂login
 ┃ ┃ ┣ 📂components
 ┃ ┃ ┃ ┣ 📜CompleteBtn.tsx
 ┃ ┃ ┃ ┣ 📜CompleteContent.tsx
 ┃ ┃ ┃ ┣ 📜MainLoginBtn.tsx
 ┃ ┃ ┃ ┣ 📜MainTopSection.tsx
 ┃ ┃ ┃ ┣ 📜ProfileForm.tsx
 ┃ ┃ ┃ ┣ 📜ProfileHeaderText.tsx
 ┃ ┃ ┃ ┣ 📜ProfileImageInput.tsx
 ┃ ┃ ┃ ┣ 📜ProfileNameInput.tsx
 ┃ ┃ ┃ ┣ 📜ProfileNextBtn.tsx
 ┃ ┃ ┃ ┗ 📜ProfileStatusInput.tsx
 ┃ ┃ ┣ 📂hooks
 ┃ ┃ ┃ ┣ 📜handleViewPortResize.ts
 ┃ ┃ ┃ ┣ 📜KakaoHandler.tsx
 ┃ ┃ ┃ ┣ 📜useAuth.ts
 ┃ ┃ ┃ ┗ 📜useUserInfo.ts
 ┃ ┃ ┗ 📂services
 ┃ ┃ ┃ ┗ 📜authServices.ts
 ┃ ┣ 📂mypage
 ┃ ┃ ┣ 📂components
 ┃ ┃ ┃ ┣ 📜MypageBoard.tsx
 ┃ ┃ ┃ ┣ 📜MypageBoardCard.tsx
 ┃ ┃ ┃ ┣ 📜MypageFeed.tsx
 ┃ ┃ ┃ ┣ 📜MypageHeader.tsx
 ┃ ┃ ┃ ┣ 📜MypageProfile.tsx
 ┃ ┃ ┃ ┣ 📜ProfileEditModal.tsx
 ┃ ┃ ┃ ┗ 📜ReviewStars.tsx
 ┃ ┃ ┣ 📂hooks
 ┃ ┃ ┃ ┣ 📜useMypageBoard.ts
 ┃ ┃ ┃ ┣ 📜useMypageFeedQuery.ts
 ┃ ┃ ┃ ┣ 📜useMypageProfile.ts
 ┃ ┃ ┃ ┗ 📜useProfileEdit.ts
 ┃ ┃ ┗ 📂services
 ┃ ┃ ┃ ┣ 📜mypageBoardService.ts
 ┃ ┃ ┃ ┣ 📜mypageFeedService.ts
 ┃ ┃ ┃ ┗ 📜mypageProfileService.ts
 ┃ ┣ 📂pay
 ┃ ┃ ┣ 📂components
 ┃ ┃ ┃ ┣ 📜AuthAccount.tsx
 ┃ ┃ ┃ ┣ 📜BankModal.tsx
 ┃ ┃ ┃ ┣ 📜Complete.tsx
 ┃ ┃ ┃ ┣ 📜InputAccount.tsx
 ┃ ┃ ┃ ┣ 📜Intro.tsx
 ┃ ┃ ┃ ┣ 📜RandomKeyPad.tsx
 ┃ ┃ ┃ ┗ 📜RegistPassword.tsx
 ┃ ┃ ┣ 📂hooks
 ┃ ┃ ┃ ┣ 📜useConnectAccount.ts
 ┃ ┃ ┃ ┣ 📜useInitiateTransfer.ts
 ┃ ┃ ┃ ┗ 📜useVerifyCode.ts
 ┃ ┃ ┗ 📂services
 ┃ ┃ ┃ ┗ 📜payService.ts
 ┃ ┣ 📂product
 ┃ ┃ ┣ 📂component
 ┃ ┃ ┃ ┣ 📜LinkPreview.tsx
 ┃ ┃ ┃ ┣ 📜ProductDescription.tsx
 ┃ ┃ ┃ ┗ 📜ProductList.tsx
 ┃ ┃ ┗ 📂hooks
 ┃ ┃ ┃ ┗ 📜useFavorite.ts
 ┃ ┗ 📂search
 ┃ ┃ ┣ 📂components
 ┃ ┃ ┃ ┣ 📜SearchFeed.tsx
 ┃ ┃ ┃ ┣ 📜SearchHeader.tsx
 ┃ ┃ ┃ ┣ 📜SearchPopular.tsx
 ┃ ┃ ┃ ┣ 📜SearchProduct.tsx
 ┃ ┃ ┃ ┣ 📜SearchRecent.tsx
 ┃ ┃ ┃ ┣ 📜SearchRecommend.tsx
 ┃ ┃ ┃ ┣ 📜SearchSuggestions.tsx
 ┃ ┃ ┃ ┗ 📜SearchUser.tsx
 ┃ ┃ ┣ 📂hooks
 ┃ ┃ ┃ ┣ 📜useAutocomplete.ts
 ┃ ┃ ┃ ┣ 📜usePopular.ts
 ┃ ┃ ┃ ┣ 📜useRecent.ts
 ┃ ┃ ┃ ┗ 📜useSearchResults.ts
 ┃ ┃ ┗ 📂services
 ┃ ┃ ┃ ┗ 📜searchService.ts
 ┣ 📂fonts
 ┃ ┣ 📜Pretendard-Regular.woff
 ┃ ┗ 📜Pretendard-SemiBold.woff
 ┣ 📂hooks
 ┃ ┣ 📜useCookieAuth.ts
 ┃ ┗ 📜useIntersectionObserver.ts
 ┣ 📂interfaces
 ┃ ┣ 📜ApiResponse.ts
 ┃ ┣ 📜BoardInterface.ts
 ┃ ┣ 📜ChatInterfaces.ts
 ┃ ┣ 📜HomeInterfaces.ts
 ┃ ┣ 📜LoginInterfaces.ts
 ┃ ┣ 📜MypageInterface.ts
 ┃ ┣ 📜OpenGraphData.ts
 ┃ ┣ 📜ProductInterface.ts
 ┃ ┗ 📜SearchInterface.ts
 ┣ 📂lib
 ┃ ┗ 📜utils.ts
 ┣ 📂pages
 ┃ ┣ 📂board
 ┃ ┃ ┣ 📜BoardDetailPage.tsx
 ┃ ┃ ┣ 📜BoardPage.tsx
 ┃ ┃ ┗ 📜BoardWritePage.tsx
 ┃ ┣ 📂chat
 ┃ ┃ ┣ 📜ChatListPage.tsx
 ┃ ┃ ┣ 📜ChatRoomPage.tsx
 ┃ ┃ ┣ 📜DealAcceptPage.tsx
 ┃ ┃ ┗ 📜DealRequestPage.tsx
 ┃ ┣ 📂home
 ┃ ┃ ┣ 📜AlarmListPage.tsx
 ┃ ┃ ┣ 📜BookmarkFeedFullscreenPage.tsx
 ┃ ┃ ┣ 📜BookmarkListPage.tsx
 ┃ ┃ ┣ 📜HomeCommentPage.tsx
 ┃ ┃ ┣ 📜HomeImgSelectPage.tsx
 ┃ ┃ ┣ 📜HomePage.tsx
 ┃ ┃ ┣ 📜HomeTagPage.tsx
 ┃ ┃ ┣ 📜HomeWritePage.tsx
 ┃ ┃ ┗ 📜ZzimListPage.tsx
 ┃ ┣ 📂login
 ┃ ┃ ┣ 📜LoginCompletePage.tsx
 ┃ ┃ ┣ 📜LoginPage.tsx
 ┃ ┃ ┗ 📜MainPage.tsx
 ┃ ┣ 📂mypage
 ┃ ┃ ┣ 📜MyPage.tsx
 ┃ ┃ ┣ 📜MypageFeedFullscreenPage.tsx
 ┃ ┃ ┣ 📜SettingAccountPage.tsx
 ┃ ┃ ┗ 📜SettingPage.tsx
 ┃ ┣ 📂pay
 ┃ ┃ ┗ 📜PayPage.tsx
 ┃ ┣ 📂product
 ┃ ┃ ┣ 📜ProductDetailPage.tsx
 ┃ ┃ ┗ 📜ProductPage.tsx
 ┃ ┗ 📂search
 ┃ ┃ ┣ 📜AfterSearchPage.tsx
 ┃ ┃ ┗ 📜SearchingPage.tsx
 ┣ 📂services
 ┃ ┣ 📜api.ts
 ┃ ┣ 📜userIdService.ts
 ┃ ┗ 📜WebSocketProvider.tsx
 ┣ 📂stores
 ┃ ┣ 📜authStore.ts
 ┃ ┣ 📜boardStore.ts
 ┃ ┣ 📜chatStore.ts
 ┃ ┣ 📜homeStore.ts
 ┃ ┣ 📜payStore.ts
 ┃ ┣ 📜searchStore.ts
 ┃ ┣ 📜signupStore.ts
 ┃ ┣ 📜stompContext.ts
 ┃ ┗ 📜userStore.ts
 ┣ 📂styles
 ┃ ┣ 📜colors.ts
 ┃ ┣ 📜fonts.tsx
 ┃ ┗ 📜typography.ts
 ┣ 📂utils
 ┃ ┣ 📜bankCodeMapper.ts
 ┃ ┣ 📜formatChatTime.ts
 ┃ ┣ 📜formatDateTime.ts
 ┃ ┣ 📜getBadgeData.ts
 ┃ ┣ 📜getCurrentKoreanHour.ts
 ┃ ┣ 📜getDandoBadgeData.ts
 ┃ ┣ 📜getTimeDiff.ts
 ┃ ┣ 📜highlightMentions.tsx
 ┃ ┣ 📜highlightSearchTerm.tsx
 ┃ ┣ 📜imageCompression.ts
 ┃ ┣ 📜parseOpenGraph.ts
 ┃ ┣ 📜scrollManager.ts
 ┃ ┗ 📜truncateText.tsx
 ┣ 📜App.tsx
 ┣ 📜config.ts
 ┣ 📜index.css
 ┣ 📜main.tsx
 ┗ 📜vite-env.d.ts
  

📜 산출물

기능 명세서

🔹 소셜 로그인

기능명세서

🔹 견적 게시판

기능명세서

🔹 채팅

기능명세서

🔹 키위페이

기능명세서

🔹 마이페이지

기능명세서 기능명세서

🔹 SNS 피드

기능명세서

🔹 검색

기능명세서

🔹 상품 게시판

기능명세서
erd erd
피그마 피그마
api 명세서

🔹 소셜 로그인

api명세서

🔹 견적 게시판

api명세서

🔹 채팅

api명세서

🔹 키위페이

api명세서

🔹 마이페이지

api명세서

🔹 SNS 피드

api명세서

🔹 검색

api명세서

🔹 상품 게시판

api명세서

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •