Skip to content

IM-GYURI/T-log

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

117 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

🌍 T-log : AI 기반 동행 μ—¬ν–‰ ν”Œλž«νΌ

🎬 μ‹œμ—° μ˜μƒ

T-log μ‹œμ—° μ˜μƒ

πŸ‘† 썸넀일을 ν΄λ¦­ν•˜λ©΄ YouTubeμ—μ„œ μ‹œμ²­ν•˜μ‹€ 수 μžˆμŠ΅λ‹ˆλ‹€.

🐾 λ§ˆμŠ€μ½”νŠΈ ν‹°λ‘œ

🧭 ν”„λ‘œμ νŠΈ κ°œμš”

T-logλŠ” MBTI 및 μ„±ν–₯ 뢄석 기반으둜 AIλ₯Ό ν™œμš©ν•΄ 졜적의 μ—¬ν–‰ 동행을 λ§€μΉ­ν•˜κ³ , μ—¬ν–‰ 일정과 ν›„κΈ°λ₯Ό κ³΅μœ ν•  수 μžˆλŠ” ν”Œλž«νΌμž…λ‹ˆλ‹€.

πŸ‘₯ νŒ€μ›

이름 μ—­ν• 
μž„κ·œλ¦¬ -
배호빈 -

πŸ’‘ μ£Όμš” κΈ°λŠ₯ (Key Factors)

κΈ°λŠ₯ μ„€λͺ…
πŸ” MBTI & νƒœκ·Έ 기반 동행 μΆ”μ²œ μ‚¬μš©μžμ˜ MBTI 및 μ—¬ν–‰ νƒœκ·Έ 기반으둜 ChatGPTκ°€ μ–΄μšΈλ¦¬λŠ” 동행 일정 μžλ™ μΆ”μ²œ
πŸ“ ν›„κΈ° μžλ™ μš”μ•½ μ—¬ν–‰ ν›„ μž‘μ„±λœ ν›„κΈ°λ₯Ό AIκ°€ μžλ™ μš”μ•½
🧾 μ„±ν–₯ ν…ŒμŠ€νŠΈ κΈ°λŠ₯ κ°„λ‹¨ν•œ ν…ŒμŠ€νŠΈλ‘œ 본인의 μ—¬ν–‰ MBTI μ„±ν–₯ 및 μΆ”μ²œ μ—¬ν–‰ μŠ€νƒ€μΌ 제곡
πŸ›‘οΈ μ‹ κ³  μ‹œμŠ€ν…œ μ‚¬μš©μž μ•ˆμ „μ„ μœ„ν•œ κΈ°λŠ₯ 제곡 및 κ΄€λ¦¬μž κΆŒν•œ κΈ°λŠ₯ κ΅¬ν˜„
✍️ 질문 κ²Œμ‹œνŒ & κ΄€λ¦¬μž λ‹΅λ³€ μ‚¬μš©μž 질문 등둝 및 κ΄€λ¦¬μž μ „μš© λ‹΅λ³€ κΈ°λŠ₯
πŸ“… 일정 곡유 및 볡사 κΈ°λŠ₯ 곡유된 일정을 λ³΅μ‚¬ν•˜μ—¬ 개인 μΌμ •μœΌλ‘œ ν™œμš© κ°€λŠ₯

🧠 AI ν™œμš© 기술

ꡬ뢄 λ‚΄μš©
πŸ€– 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 검증, μ„œλ²„μ‚¬μ΄λ“œ λ Œλ”λ§ 일뢀

πŸ“ ERD

βš™οΈ Architecture

βœ… API λͺ…μ„Έ 정리 (EnjoyTrip ν”„λ‘œμ νŠΈ)

πŸ“Œ 곡톡 ν˜•μ‹

  • Base URL: /api
  • 인증: @AuthenticationPrincipal μ‚¬μš© μ‹œ 둜그인 ν•„μš”
  • κ΄€λ¦¬μž κΆŒν•œ ν•„μš”: @PreAuthorize("hasRole('ADMIN')")

1. πŸ” 인증 (AuthController)

λ©”μ„œλ“œ 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} 단일 λ‹΅λ³€ 상세 쑰회 βœ…

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors