Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Trinity-catch-ping

Catch-Ping은 사용자 맞춤형 식당 추천과 효율적인 예약 및 알림 서비스를 제공하는 스마트 다이닝 플랫폼입니다.

Catch-Ping

iScreen Shoter - Preview - 250406213238

  • Catch-Ping은 사용자 맞춤형 식당 추천과 효율적인 예약 및 알림 서비스를 제공하는 스마트 다이닝 플랫폼입니다.
  • 개인화된 AI 식당 추천 시스템과 원하는 키워드로 쉽고 빠르게 식당 검색 및 예약, 알림시스템으로 고객에게 최고의 사용자 경험을 제공합니다.
  • 식당 예약 서비스캐치테이블 클론 프로젝트입니다.

프로젝트 소개

  • 주요 기능
    • 식당 검색 및 예약: 원하는 키워드로 쉽고 빠르게 식당 검색 및 예약 가능
    • 개인화된 AI 추천: 사용자 선호도와 식당 특성을 반영한 맞춤형 식당 추천
    • 알림 시스템: 예약 상태 및 빈자리 발생 시 실시간 알림 발송

팀원 소개

이름 역할 담당 R&R
김민철 팀장, Backend 알림 기능, 온보딩 기능
이민우 Backend 예약 기능, 데이터 삽입
신우성 Backend 검색 기능, 식당 관련 기능
한주리 Frontend 홈화면, 식당 상세 + 예약 페이지
정채헌 Frontend 회원 기능, 온보딩, 검색 화면, 알림기능
김대현 Cloud/AI 인프라 설계 & 구축, 식당 추천 기능

기술 스택

Category Tech
Backend Spring Java MySQL Redis MongoDB
Frontend React JavaScript Tanstack Query TailWind CSS Styled Components
Cloud & Infra AWS Amazon EC2 Amazon ECS Amazon S3 Amazon RDS GitHub Actions Docker Prometheus Grafana
AI FastAPI Python Hybrid Recommendation System Scikit-learn Pandas numpy

타임라인

  • 관리 툴: JIRA를 통한 기능 개발 타임라인 관리
    image

팀 산출물

iScreen Shoter - draw io - 250501160603


기능 소개

1. 회원관리 기능

  • 로그인: 카카오 소셜로그인을 통한 로그인 및 첫 로그인 시 온보딩(성별, 전화번호, 선호 카테고리) 진행
  • 마이페이지: 회원 예약 리스트, 빈자리 알림 리스트 반환 및 CRUD

2. 예약 기능

  • 예약 선점: 결제 전 6분간 선점 상태 → 좌석 차감 및 예약 우선권 확보
  • 예약 선점 취소 & 확정: 선점 상태 취소(뒤로가기, 결제 취소) 및 확정 시 티켓 차감
  • 예약 취소: 예약 완료 후 취소 시 티켓 반환 여부 정책 적용
  • 티켓/좌석 증감 정책:
    구분 좌석 증감 티켓 증감 예약 상태
    예약 선점 -1 X IN_PROGRESS
    예약 선점 취소 +1 X CANCELED
    예약 확정 X -10 COMPLETED
    예약 취소 X +10 또는 X CANCELED

자세한 내용은 예약 기능 전체 플로우를 참고하세요.

3. 알림 기능

  • 예약 리마인더: 예약 확정 시 이벤트 발행, 매일 08시 및 예약 1시간 전 알림 발송
  • 빈자리 알림: 예약 취소 시 빈자리 발생 시 신청자에게 알림 발송
    • 티켓 정책: 월별 빈자리 알림 티켓 10개 제공
  • 예약 확인/취소 알림: 예약 완료/취소 시 FCM 서버를 통한 알림 전송 및 히스토리 저장

4. 추천 기능

  • 추천 정책:
    • 사용자 데이터(선호 카테고리, 가격대, 검색, 찜, 예약 내역)와 식당 데이터(평점, 리뷰수, 편의시설 등)를 종합해 개인화된 식당 추천 제공
    • 협업필터링 기반 추천 방식(CF)

5. 검색 기능

  • 검색 정책:
    • 카테고리(한식, 중식, 일식 등 12종) 및 키워드 기반 검색 (식당 이름, 메뉴명 포함)
    • 별점순, 가격순(높은/낮은) 정렬 지원
    • 최적화 필요 (LIKE 검색 → Full Table Scan 문제 등)

프론트엔드 2차 개선사항

테스트

  • 테스트 도구: Jest + React Testing Library
  • 주요 테스트 케이스:
    • 식당 선점 중복 예약 방지
    • 예약 가능 좌석 조회 정확도
    • 선점 시간 종료 후 예약 취소
    • 예약 확정 및 결제 후 예약 리스트 추가 확인
    • 빈자리 알림 기능 (푸시 알림 등록 및 제거)

성능 최적화

  • 식당 리스트 페이지 최적화:
    • 가상 스크롤 적용
    • 복잡한 무한 스크롤 로직 개선
  • 식당 상세 페이지 최적화:
    • 복잡한 컴포넌트 계층 구조 개선
    • "좋아요(찜)" 버튼 클릭 시 불필요한 리렌더링 방지 (React.memo, useCallback)
    • 상태 관리 라이브러리(Zustand, Recoil, React Query 등) 비교 후 적용
  • 성능 분석 도구 활용:
    • React Profiler API, why-did-you-render
    • Lighthouse & Web Vitals (LCP, FID, CLS 등) 기반 성능 목표 설정

백엔드 2차 개선사항

  • 예약 선점 시 동시성 문제:
    • 동시 예약 충돌 해결을 위해 비관적 락, Redis 분산 락 및 큐 시스템 고려
  • 대량의 예약가능 데이터 삽입:
    • 매월 66,000건 이상의 데이터 삽입 → DB 파티셔닝 및 배치 처리(JPA Batch, EntityManager.persist() 활용)
  • 대량 알림 발송:
    • FCM의 sendEachForMulticast 등 비동기 메서드 활용 및 배치 처리
    • 알림 데이터 관리를 위해 NoSQL/Redis 캐시, pub/sub 적용
  • 식당 조회 및 검색 최적화:
    • 서브쿼리, 불필요한 JOIN 연산 제거 및 LIKE 검색 최적화 방안 적용 (Levenshtein, ElasticSearch 등)

AI 2차 개선사항

  • 추천 피드 반환 시간 단축:
    • 기존 앙상블 기법 → 회귀 방식 전환 검토 (30초~1분 소요 문제 개선)
  • 다양한 Feature 활용:
    • 선호 가격대, 검색, 예약/찜 내역 등 추가 변수 도입으로 추천 모델 개선

클라우드 2차 개선사항

  • Redis 고가용성: Sentinel vs. Cluster 구성 검토
  • 성능 모니터링: CloudWatch 또는 Prometheus & Grafana 활용
  • 로그 및 데이터 관리: 로그 수집 및 Elastic Search 적용 고려
  • 인프라 고가용성: 현재 하나의 가용영역(ap-northeast-2a) → 다중 가용영역(ap-northeast-2b)으로 확장 및 로드밸런서 연결

License

이 프로젝트는 MIT 라이선스를 따릅니다.

Popular repositories Loading

  1. demo-repository demo-repository Public

    A code repository designed to show the best GitHub has to offer.

    HTML

  2. TRI-AI TRI-AI Public

    Python 1

  3. TRI-FE TRI-FE Public

    JavaScript 1

  4. TRI-BE TRI-BE Public

    Java 2

  5. TRI-Cloud TRI-Cloud Public

    Python 1

  6. .github .github Public

Repositories

Loading
Type
Select type
Language
Select language
Sort
Select order
Showing 6 of 6 repositories

Top languages

Loading...

Most used topics

Loading...

AltStyle によって変換されたページ (->オリジナル) /