🌍 T-log : AI 기반 동행 여행 플랫폼
👆 썸네일을 클릭하면 YouTube에서 시청하실 수 있습니다.
T-log는 MBTI 및 성향 분석 기반으로 AI를 활용해 최적의 여행 동행을 매칭하고, 여행 일정과 후기를 공유할 수 있는 플랫폼입니다.
기능
설명
🔍 MBTI & 태그 기반 동행 추천
사용자의 MBTI 및 여행 태그 기반으로 ChatGPT가 어울리는 동행 일정 자동 추천
📝 후기 자동 요약
여행 후 작성된 후기를 AI가 자동 요약
🧾 성향 테스트 기능
간단한 테스트로 본인의 여행 MBTI 성향 및 추천 여행 스타일 제공
🛡️ 신고 시스템
사용자 안전을 위한 기능 제공 및 관리자 권한 기능 구현
✍️ 질문 게시판 & 관리자 답변
사용자 질문 등록 및 관리자 전용 답변 기능
📅 일정 공유 및 복사 기능
공유된 일정을 복사하여 개인 일정으로 활용 가능
구분
내용
🤖 AI 동행 추천
Spring AI + ChatGPT를 이용해 사용자 성향 기반 동행 구인글 추천
✍️ 후기 분석
사용자 후기 자동 요약
구분
사용 기술 / 도구
설명
🧩 백엔드
Spring Boot, Spring Security, Spring AI, MyBatis
API 서버, 보안 인증, AI 통합, DB 매핑
🔐 인증 및 보안
JWT (JJWT), Redis
AccessToken/RefreshToken 관리
🧠 AI 연동
Spring AI, OpenAI (ChatGPT)
후기 요약, 동행 추천, 감성 태그 생성
💾 데이터베이스
MySQL
사용자, 여행 일정, 후기 등 저장
🌐 프론트엔드
Vue.js, Vite, Vuetify
SPA 개발, 빠른 빌드, UI 프레임워크
🗺️ 지도 API
Kakao Map API
마커 기반 관광지 시각화
☁️ 클라우드
AWS S3, Spring Cloud AWS
이미지 업로드 및 자동 설정
✉️ 이메일 전송
JavaMailSender (spring-boot-starter-mail)
비밀번호 찾기 등 메일 기능
📄 JSON 처리
Gson
REST 통신 및 AI 응답 처리
🧰 기타 유틸
Lombok, Validation (Jakarta)
코드 간결화 및 DTO 검증, 서버사이드 렌더링 일부
✅ API 명세 정리 (EnjoyTrip 프로젝트)
Base URL : /api
인증 : @AuthenticationPrincipal 사용 시 로그인 필요
관리자 권한 필요 : @PreAuthorize("hasRole('ADMIN')")
메서드
URL
설명
인증
요청 바디
응답 바디
POST
/auth/login
로그인
❌
LoginRequest
RefreshTokenResponse
POST
/auth/refresh
AccessToken 재발급
❌
RefreshTokenRequest
RefreshTokenResponse
POST
/auth/logout
로그아웃 (Redis RT 삭제)
✅
없음
없음 (204)
2. 👤 사용자 (UserController)
메서드
URL
설명
인증
요청 바디
응답 바디
POST
/users
회원가입
❌
SignupRequest
UserProfileResponse
GET
/users/email-exists
이메일 사용 가능 여부 확인
❌
없음 (쿼리: email)
Boolean
GET
/users/me
내 프로필 조회
✅
없음
UserProfileResponse
PUT
/users/me
내 프로필 수정
✅
UpdateProfileRequest
UserProfileResponse
PUT
/users/me/password
내 비밀번호 변경
✅
ChangePasswordRequest
없음 (204)
DELETE
/users/me
회원 탈퇴 (soft delete)
✅
없음
없음 (204)
POST
/users/forgot-password
임시 비밀번호 전송
❌
ForgotPasswordRequest
없음 (204)
POST
/users/oauth
OAuth 사용자 추가 정보 저장
✅
UpdateProfileRequest
UserProfileResponse
GET
/users/{id}
특정 사용자 조회 (관리자)
✅
없음
UserDto
GET
/users
사용자 목록 (관리자, 페이징)
✅
쿼리: page/size
UserListResponse
PUT
/users/{id}/status
사용자 상태 변경 (관리자)
✅
StatusUpdateRequest
없음 (204)
PUT
/users/{id}/score
사용자 점수 조정 (관리자)
✅
ScoreAdjustRequest
없음 (204)
3. 🌐 동행 모집 (CompanionController & CompanionApplicantController)
메서드
URL
설명
인증
POST
/companions
동행 모집 글 생성
✅
GET
/companions
동행 목록 조회 (MBTI, 성별 등 필터링 가능)
❌
GET
/companions/me
내가 작성한 동행 글 목록 조회
✅
GET
/companions/{id}
동행 상세 조회
✅
PUT
/companions/{id}
동행 모집 글 수정
✅
DELETE
/companions/{id}
동행 모집 글 삭제
✅
POST
/companions/{id}/applicants
동행 신청
✅
GET
/companions/{id}/applicants
신청자 목록 조회 (작성자 전용)
✅
GET
/companions/{id}/applicants/accepted
수락된 신청자 목록 조회
✅
GET
/companions/{id}/applicants/status
현재 사용자 신청 상태 조회
✅
PATCH
/companions/{id}/applicants/{applicantId}
신청 상태 변경 (수락/거절, 작성자 전용)
✅
DELETE
/companions/{id}/applicants/{applicantId}
신청 철회
✅
GET
/companions/{id}/applicants/me/applied
내가 신청한 동행 글 목록 조회
✅
4. 🗓️ 일정 관리 (PlanController)
메서드
URL
설명
인증
GET
/plans
내 일정 목록 조회
✅
GET
/plans/{id}
내 일정 상세 조회
✅
POST
/plans
일정 생성
✅
PUT
/plans/{id}
일정 수정
✅
DELETE
/plans/{id}
일정 삭제
✅
PATCH
/plans/{id}/share
공유 상태 설정 (true/false)
✅
POST
/plans/{id}/copy
공유된 일정 복사
✅
GET
/plans/shared
인기 공유 일정 목록 조회
❌
POST
/plans/{id}/details
세부 일정 추가
✅
PUT
/plans/{id}/details/{detailId}
세부 일정 수정
✅
DELETE
/plans/{id}/details/{detailId}
세부 일정 삭제
✅
5. 📍 관광지 (TripController)
메서드
URL
설명
GET
/trips/sidos
시/도 목록 조회
GET
/trips/guguns/{sidoCode}
시군구 목록 조회 (시도 기반)
GET
/trips/contentTypes
관광 타입 목록 조회
GET
/trips/allTrips/{lat}/{lng}
반경 5km 이내 관광지 전체 조회
GET
/trips/siGunGu/{sidoCode}/{gugunCode}
시도 + 시군구 기반 관광지 조회
GET
/trips/contentType/{sido}/{gugun}/{type}
시군구 + 관광 타입별 관광지 조회
GET
/trips/allContentType/{type}/{lat}/{lng}
관광 타입 + 반경 5km 이내 관광지 조회
GET
/trips/tripDetail/{no}
특정 여행지 상세 + 날씨 정보 조회
GET
/trips/search?keyword=foo
Trie 기반 관광지 이름 검색
6. 🏷️ 해시태그 (HashtagController)
메서드
URL
설명
인증
응답 바디
GET
/hashtags
카테고리별로 그룹화된 해시태그 목록
❌
List
7. 📝 리뷰 (ReviewController)
메서드
URL
설명
인증
POST
/reviews/places
장소 후기 작성 (파일 포함)
✅
PUT
/reviews/places/{id}
장소 후기 수정
✅
DELETE
/reviews/places/{id}
장소 후기 삭제
✅
GET
/reviews/places/attraction/{id}
특정 관광지의 후기 목록 + 요약
❌
GET
/reviews/places/{id}
단일 장소 후기 상세 조회
✅
POST
/reviews/places/{id}/likes
장소 후기 좋아요 토글
✅
GET
/reviews/places/me
내 장소 후기 목록 조회
✅
POST
/reviews/companions
동행 후기 작성
✅
PUT
/reviews/companions/{id}
동행 후기 수정
✅
DELETE
/reviews/companions/{id}
동행 후기 삭제
✅
GET
/reviews/companions/users/{userId}
특정 사용자가 받은 동행 후기
✅
GET
/reviews/companions/written/me
내가 작성한 동행 후기 목록
✅
GET
/review-tags/{reviewId}
특정 후기의 해시태그 조회
✅
POST
/review-tags
후기 해시태그 저장
✅
8. 🚨 신고 (ReportController)
메서드
URL
설명
인증
POST
/reports
신고 생성
✅
GET
/reports
전체 신고 목록 조회 (옵션: 상태 필터링)
✅ (ADMIN)
GET
/reports/{id}
단일 신고 상세 조회
✅ (ADMIN)
DELETE
/reports/{id}
신고 삭제 (Soft Delete)
✅ (ADMIN)
PATCH
/reports/{id}/reject
신고 거절 처리
✅ (ADMIN)
GET
/reports/check
사용자의 신고 여부 확인 (중복 방지용)
✅
GET
/reports/users
사용자 대상 신고 목록 조회
✅ (ADMIN)
PATCH
/reports/users/{id}/accept
사용자 신고 수락 + 정지기간 부여
✅ (ADMIN)
GET
/reports/reviews
후기 신고 목록 조회
✅ (ADMIN)
PATCH
/reports/reviews/{id}/accept
후기 신고 수락 (soft delete)
✅ (ADMIN)
GET
/reports/companions
동행글 신고 목록 조회
✅ (ADMIN)
PATCH
/reports/companions/{id}/accept
동행글 신고 수락 (soft delete)
✅ (ADMIN)
9. 파일 업로드 (FileUploadController)
메서드
URL
설명
인증
POST
/upload/profile
프로필 이미지 업로드
✅
10. 질문 & 답변 (QuestionController)
메서드
URL
설명
인증
POST
/questions
질문 작성
✅
PUT
/questions/{id}
질문 수정 (본인만 가능)
✅
DELETE
/questions/{id}
질문 삭제 (본인 or 관리자)
✅
GET
/questions/{id}
단일 질문 상세 조회
✅
GET
/questions
전체 질문 목록 (답변 여부 필터)
❌
GET
/questions/me
내가 작성한 질문 목록
✅
POST
/questions/{id}/answers
질문에 대한 답변 작성
✅ (ADMIN)
PUT
/questions/answers/{id}
답변 수정 (작성 관리자만 가능)
✅ (ADMIN)
DELETE
/questions/answers/{id}
답변 삭제 (작성 관리자만 가능)
✅ (ADMIN)
GET
/questions/answers/{id}
단일 답변 상세 조회
✅