Skip to content

2025AlphaProject/alphaBE

Repository files navigation

Conever Backend API

AI가 추천하는 맞춤 여행지 · 순간을 기록하고 다시 꺼내보는 리마인드

Conever 모바일 앱의 API Gateway 백엔드


목차


📌 프로젝트 개요

Conever는 사용자의 지역/테마 선호를 바탕으로 AI가 여행지를 추천하고, 여행 중 촬영한 사진을 인생네컷 형태로 재구성하며, 특정 주기에 리마인드 알림으로 추억을 다시 꺼내보게 하는 서비스입니다.
본 저장소는 모바일 클라이언트를 위한 API Gateway 백엔드로, 인증/인가, 데이터 집계, 비동기 오케스트레이션을 담당합니다.


🎯 문제 정의 & 가치 제안

  • 문제: 기존 여행 서비스는 예약·길안내 중심으로, 여정의 감정과 스토리를 기록하고 주기적으로 리마인드하는 경험이 부족합니다.
  • 가치: Conever는 (1) 개인화 추천, (2) 기록의 구조화(인생네컷), (3) 시간이 흐른 뒤의 재경험(리마인드) 을 결합하여 여행의 전체 수명 주기를 지원합니다.

🎯 핵심 기능

🤖 AI 기반 추천

  • 17개 시·도, 7개 카테고리 기반 개인화 추천
  • 한국관광공사 TourAPI + 생성형 AI(Gemini 2.5 Flash) 후처리 파이프라인

📍 연관 관광지 추천

  • 실제 이동/방문 데이터 기반 연관 장소 제안
  • 인기·연관도 Top-N(예: 최대 50개) 활용, 동선 설계 보조

📸 사진 저장 & 인생네컷

  • 촬영 사진 업로드/보관
  • 4장 자동 레이아웃 인생네컷 생성
  • (선택) 감정/스토리 태깅

🔔 추억 리마인드

  • 3개월/6개월/1년/2년/5년 주기 알림
  • 과거 여행 기록/이미지 재노출

🤝 동반자 & 포즈 추천

  • 관광지별 포즈 추천
  • 동반자 초대, 사진/인생네컷 공동 열람

🏗 아키텍처 개요

  • API Gateway (Django/DRF): 인증/인가, 요청 검증, 응답 집계
  • 비동기 처리 (Celery + Redis): 이미지 처리, 알림 발송, 데이터 동기화
  • 데이터 레이어 (MySQL): 도메인 데이터 영속화
  • 파일 스토리지 (AWS S3): 사진/인생네컷 저장
  • 실시간/푸시 (Channels/WebSocket & FCM 연계 가능): (선택) 실시간 상태/알림
  • 모니터링 (Promtail → Loki → Grafana): 로그/지표 관제

간단한 흐름(요약):

Mobile App → (Auth) → API Gateway ─┬─ MySQL
                                   ├─ Redis/Celery (비동기)
                                   ├─ S3 (이미지/인생네컷)
                                   └─ 외부 API(TourAPI/Geocoder/Gemini)

🛠 기술 스택

  • Backend: Django 5.x, Django REST Framework, Django Channels
  • DB/Cache: MySQL 8.x, Redis 7.2.x
  • Queue/Schedule: Celery 5.x, Celery Beat
  • Infra: Docker, Docker Compose, Nginx, AWS S3
  • Monitoring: Grafana, Loki, Promtail
  • External APIs: 한국관광공사 TourAPI, Geocoder API 2.0, Google Gemini

실제 버전은 requirements.txt를 기준으로 관리됩니다.


📂 프로젝트 구조

alphaBE/
├── authenticate/          # 인증/인가
├── config/                # Django 설정
├── middleware/            # 커스텀 미들웨어
├── services/              # 서비스 레이어(외부 API, 도메인 로직)
├── tour/                  # 여행 도메인
├── usr/                   # 사용자 도메인
├── tests/                 # 테스트
├── docker-compose.yml
├── Dockerfile
├── requirements.txt
├── manage.py
└── entrypoint.sh

🔐 보안 · 프라이버시

  • 비밀 관리: 모든 자격증명/키는 저장소에 포함하지 않습니다(.env, 키 파일 등은 커밋 금지).
  • 데이터 최소 수집: 추천 및 리마인드 목적 범위 내 최소 정보만 수집·저장.
  • 익명화/가명화: 로그·분석 단계에서 개인 식별 정보 최소화.
  • 권한 분리: 읽기/쓰기 권한을 역할별로 분리(원칙: 최소 권한).

📈 관측성 · 안정성

  • 로그 파이프라인: Promtail → Loki 집계, Grafana 대시보드 시각화
  • 비동기 오프로딩: 이미지 처리/AI 후처리/알림 발송은 Celery로 처리 지연 최소화
  • 헬스체크/리트라이: 외부 API 실패 대비 타임아웃·재시도 정책 설계
  • 확장성 고려: 캐시 계층(Redis)·수평 확장 전제, WAF/Rate Limit 구성 용이

🚀 차별점 & 확장성

  • 여정 전·중·후 전체를 아우르는 설계: 추천 → 기록(인생네컷) → 리마인드의 폐루프(Closed Loop).
  • 데이터 네트워크 효과: 동반자/공유 기능으로 재참여·재방문 유도.
  • 모듈화된 AI 파이프라인: 모델 교체·프롬프트 튜닝·후처리 모듈을 분리하여 실험 비용 절감.
  • 운영 친화성: 로그/지표 표준화로 A/B 실험·성능 튜닝·오류 분석이 용이.

🧾 커밋 컨벤션

Conventional Commits 권장:

  • feat: 기능 추가
  • fix: 버그 수정
  • refactor: 리팩터링(기능 변화 없음)
  • chore: 빌드/도구/패키지 갱신
  • docs: 문서 수정
  • test: 테스트 추가/개선

기존 MODIFY 라벨은 feat: 또는 refactor: 등 표준 라벨로 대체를 권장합니다.


👥 팀 - 백엔드


📫 문의

프로젝트 문의: [email protected]


📄 라이선스

  • 라이선스: LICENSE 파일 참조

About

conever 서비스의 api gateway를 담당하는 부분의 레포지토리 입니다.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •  

Languages