"1분반-우리어때"의 두 판 사이의 차이

cdc wiki
이동: 둘러보기, 검색
(서론)
(결과 및 평가)
 
273번째 줄: 273번째 줄:
 
===완료 작품의 소개===
 
===완료 작품의 소개===
 
====프로토타입 사진 혹은 작동 장면====
 
====프로토타입 사진 혹은 작동 장면====
내용
+
본 과제의 완료 작품은 배포된 웹 서비스 형태로 구현되었으며, 사용자는 [https://www.uttae.app 우때 바로가기] 에 접속하여 서비스를 사용할 수 있다. 서비스는 Google 로그인 후 여행 방을 생성하고, 지도 기반 장소 탐색, 장소 공유, 보관함 저장, 일정 편집, 실시간 채팅, AI 장소 추천 기능을 하나의 협업 공간에서 제공한다.
 +
 
 +
[[파일:uttae_01_landing.jpg|섬네일|가운데|800px|우때 서비스 랜딩 화면]]
 +
 
 +
[[파일:uttae_02_search.jpg|섬네일|가운데|800px|지도 기반 장소 탐색 화면]]
 +
 
 +
[[파일:uttae_03_schedule.jpg|섬네일|가운데|800px|일자별 일정 계획 화면]]
 +
 
 +
<gallery mode="packed" heights="800px">
 +
파일:uttae_04_chat.jpg|실시간 채팅 화면
 +
파일:uttae_05_ai.jpg|AI 장소 추천 화면
 +
</gallery>
 +
 
 +
{| class="wikitable"
 +
! 구분 !! 구현 내용
 +
|-
 +
| 지도 기반 장소 탐색 || Google Places API를 활용하여 장소를 검색하고 상세 정보를 확인할 수 있다.
 +
|-
 +
| 보관함 || 여행 후보지를 카테고리별로 저장하고 팀원과 함께 관리할 수 있다.
 +
|-
 +
| 일정 계획 || 일자별 일정에 장소를 추가하고 Drag and Drop으로 순서를 조정할 수 있다.
 +
|-
 +
| 실시간 채팅 || WebSocket/STOMP 기반으로 방 멤버 간 실시간 채팅과 장소 공유가 가능하다.
 +
|-
 +
| AI 추천 || 채팅 요약, 일정, 북마크 맥락을 바탕으로 여행 관련 답변과 장소 추천을 제공한다.
 +
|}
 +
 
 
====포스터====
 
====포스터====
내용
+
홍보 포스터는 서비스의 핵심 가치인 “지도, 채팅, 일정, AI 추천을 한 공간에서 제공하는 협업형 여행 계획 플랫폼”을 중심으로 구성하였다. 포스터에는 서비스 소개, 주요 기능, 사용 흐름, 기대효과를 포함하여 사용자가 서비스의 목적과 차별점을 빠르게 이해할 수 있도록 하였다.
 +
 
 +
[[파일:Uttae poster.jpg|섬네일|가운데|800px|우때 홍보 포스터]]
  
 
===관련사업비 내역서===
 
===관련사업비 내역서===
내용
+
본 과제의 개발 사업비는 디자인 도구, AI API, 서버 및 배포 환경, 도메인 구매 등에 사용되었다.
 +
 
 +
{| class="wikitable"
 +
! 구분 !! 항목 !! 수량 !! 단가(천원) !! 금액(천원) !! 비고
 +
|-
 +
| 직접 개발비 || Figma Professional 구독 || 1 || 33.9 || 33.9 || 화면 설계 및 프로토타입 제작
 +
|-
 +
| 직접 개발비 || ChatGPT 구독 || 1 || 29.0 || 29.0 || 개발 보조 및 문서화
 +
|-
 +
| 직접 개발비 || Claude 구독 || 3 || 69.4 || 209.1 || 3건
 +
|-
 +
| 직접 개발비 || OpenAI API 사용료 || 3 || 11.0 || 34.1 || AI 요약 및 추천 기능 개발
 +
|-
 +
| 직접 개발비 || Claude API 사용료 || 1 || 8.3 || 8.3 || AI 응답 비교 및 개발 보조
 +
|-
 +
| 직접 개발비 || 서버비 및 GCP 사용료 || 3 || 82.7 || 248.0 || 서버 운영 및 지도 API 사용
 +
|-
 +
| 직접 개발비 || 도메인 구매 || 2 || 22.0 || 44.0 || 서비스 도메인 구매
 +
|-
 +
! colspan="4" | 합계
 +
! 606.4
 +
!
 +
|}
  
 
===완료작품의 평가===
 
===완료작품의 평가===
내용
+
{| class="wikitable"
 +
! 번호 !! 평가항목 !! 평가방법 !! 적용기준 !! 개발목표치 !! 비중(%) !! 평가결과
 +
|-
 +
| 1 || 사용자 인증 및 방 관리 || Google OAuth 로그인, JWT 발급, refresh token rotation, 방 생성/조회/입장 요청/승인 API 동작 확인 || 인증된 사용자만 방 기능 접근 가능, HOST 권한 기능 분리 || 로그인, 토큰 갱신, 방 생성, 초대 코드 입장, 승인/거절 기능 구현 || 15 || 달성
 +
|-
 +
| 2 || 장소 검색 및 보관함 기능 || Google Places 검색, 장소 상세 조회, 장소 저장/삭제, 카테고리 변경 기능 확인 || 장소 검색 pageSize 1~20, 장소 미리보기 Redis 24시간, 상세 6시간 캐시 적용 || 지도 기반 장소 탐색, 장소 상세, 보관함 카테고리 관리 구현 || 20 || 달성
 +
|-
 +
| 3 || 일정 편집 및 이동 정보 기능 || 일정 생성/삭제/이동, 일정 항목 추가/삭제/순서 변경, Routes 조회 확인 || 방 일정 최대 30일, 최소 1개 일정 유지, 경로 정보 Redis 10분 캐시 || 일자별 일정표와 Drag and Drop 기반 일정 항목 편집 구현 || 20 || 달성
 +
|-
 +
| 4 || 실시간 채팅 및 협업 동기화 || WebSocket/STOMP 메시지 송수신, 읽음 상태, 재접속 동기화, 시스템 메시지 확인 || 채팅/장소 공유 5/sec + 60/min rate limit, MongoDB sequence 기반 메시지 저장 || 일반 채팅, 장소 공유, AI 메시지, 읽음 위치, 실시간 이벤트 구현 || 20 || 달성
 +
|-
 +
| 5 || AI 요약 및 여행 추천 기능 || AI summary API, AI chat plan API, 비여행 질문 거절, 장소 카드 응답 확인 || 일반 메시지 30개 단위 요약, AI 추천 장소 최대 3개, 고정 intent 4종 적용 || 대화 요약, 여행 일반 답변, 장소 추천, unsupported 응답 구현 || 25 || 달성
 +
|}
 +
 
 +
추가로 Google Analytics를 통해 서비스 사용 현황을 확인하였다. 2026년 6월 16일 기준 활성 사용자는 87명이며, 이벤트 발생 수는 약 2.7천 건이다. 또한 2026년 6월 13일 기준 Google Form 서비스 만족도 조사에 총 28명이 참여하였다.
  
 
===향후계획===
 
===향후계획===
내용
+
향후에는 실제 사용자 피드백을 기반으로 AI 장소 추천 품질을 개선하고, 모바일 환경에서 지도·채팅·일정·보관함을 더 자연스럽게 전환할 수 있도록 반응형 UX를 고도화할 계획이다.
 +
 
 +
{| class="wikitable"
 +
! 구분 !! 향후 계획
 +
|-
 +
| AI 추천 고도화 || 사용자 피드백을 기반으로 prompt와 ranking 기준을 개선한다.
 +
|-
 +
| 모바일 UX 개선 || 지도, 채팅, 일정, 보관함 화면을 모바일에서 더 자연스럽게 전환할 수 있도록 개선한다.
 +
|-
 +
| 동선 최적화 || 일정 항목 간 이동 시간뿐 아니라 전체 여행 동선 최적화와 추천 순서 조정 기능을 추가한다.
 +
|-
 +
| 공동 의사결정 || 팀원 투표, 선호도 표시, 후보지 우선순위 기능을 추가한다.
 +
|-
 +
| 여행 부가 기능 || 숙소 예약, 비행기 예매 등 여행 준비에 필요한 부가 기능을 검토한다.
 +
|-
 +
| 운영 안정성 || 로그, 메트릭, 장애 알림, 대시보드를 고도화하여 운영 환경의 안정성을 높인다.
 +
|}
  
 
===특허 출원 내용===
 
===특허 출원 내용===
내용
+
본 과제는 현재 별도의 특허 출원을 진행하지 않았다. 다만 개발 과정에서 조사한 선행특허와 비교했을 때, 향후 권리화 가능성이 있는 요소는 다음과 같다.
 +
 
 +
{| class="wikitable"
 +
! 구분 !! 내용
 +
|-
 +
| 출원 여부 || 현재 미출원
 +
|-
 +
| 관련 선행특허 || KR20230072017A, US10445666B1, US20120191341A1, US8719251B1, WO2023073505A1
 +
|-
 +
| 권리화 검토 대상 1 || 채팅 요약 기반 여행방 컨텍스트 선택 구조
 +
|-
 +
| 권리화 검토 대상 2 || 일정·북마크 정보를 활용한 AI 장소 추천 방식
 +
|-
 +
| 권리화 검토 대상 3 || 실시간 협업 일정 변경 이벤트와 AI 응답을 연동하는 구조
 +
|}

2026년 6월 18일 (목) 22:36 기준 최신판

프로젝트 개요

기술개발 과제

국문 : 우때

영문 : Uttae

과제 팀명

우리어때

지도교수

김민호 교수님

개발기간

2026년 3월 ~ 2026년 6월 (총 4개월)

구성원 소개

서울시립대학교 컴퓨터과학부 2020920007 김민형(팀장)

서울시립대학교 컴퓨터과학부 2020920020 문재영

서울시립대학교 컴퓨터과학부 2021920029 박주영

서울시립대학교 컴퓨터과학부 2021430021 송희영

서론

개발 과제의 개요

개발 과제 요약

우때(Uttae)는 여러 사용자가 하나의 여행 방에서 지도, 채팅, 보관함, 일정표를 함께 사용하며 여행 계획을 세우는 협업형 여행 계획 플랫폼이다.

사용자는 Google 계정으로 로그인한 뒤 여행 방을 생성하고, 초대 코드로 팀원을 초대하며, 방 안에서 장소 검색, 장소 공유, 후보지 보관, 일자별 일정 편집을 실시간으로 수행할 수 있다. 또한 AI 서버는 채팅 요약, 여행 관련 질문 응답, Google Places 기반 장소 추천, 비여행 질문 거절을 담당한다.

개발 과제의 배경

여행 계획은 장소 검색, 후보 저장, 팀원 의견 조율, 일정 배치, 이동 시간 확인이 여러 앱과 채팅방에 흩어지기 쉬워 협업 비용이 크다. 일반 메신저는 의견 조율에는 편리하지만 장소 카드, 지도 위치, 일정표, 후보지 분류를 구조화하기 어렵고, 지도 앱은 장소 탐색에는 강하지만 팀 단위 의사결정 흐름을 담기 어렵다.

본 서비스는 지도, 채팅, 일정, 보관함, AI를 하나의 방 단위 협업 모델로 통합하여 여행 계획의 탐색, 논의, 결정, 일정화를 한 흐름 안에서 수행하도록 돕는다.

개발 과제의 목표 및 내용

구분 주요 내용
인증 및 방 관리 Google OAuth, JWT, Refresh Token Rotation, Redis 기반 세션 관리, 초대 코드, 입장 승인/거절, 방장 위임, 멤버 관리
지도·장소 기능 Google Places/Routes API 기반 장소 검색, 장소 상세, 사진 URL, 이동 정보 조회, Redis 캐시 적용
협업 기능 WebSocket/STOMP 기반 실시간 채팅, 일정 변경, 보관함 변경, 멤버 상태 동기화
일정 기능 일자별 일정 생성·삭제·이동, Drag and Drop 기반 순서 변경, 시간·메모 편집
AI 기능 채팅 요약, 여행 질문 응답, 장소 추천, 일정·북마크 기반 맥락 반영, 비지원 질문 거절

관련 기술의 현황

관련 기술의 현황 및 분석(State of art)

  • 전 세계적인 기술현황

최근 생성형 AI 서비스는 단순 질의응답을 넘어 사용자의 의도를 분석하고 외부 API나 도구를 선택해 실행하는 Agentic Workflow 형태로 발전하고 있다. OpenAI Function Calling, LangChain, LangGraph 등은 복잡한 다단계 추론과 도구 호출을 지원한다.

여행·모빌리티 서비스에서는 Google Places API, Routes API 등을 활용한 장소 검색, 상세 정보 조회, 이동 시간 계산, 위치 기반 추천 기술이 핵심 요소로 자리 잡고 있다. 또한 다수 사용자가 동시에 참여하는 협업 서비스에서는 WebSocket과 STOMP 기반 Pub/Sub 구조가 실시간 동기화 기술로 널리 사용된다.

  • 특허조사 및 특허 전략 분석
특허 내용 시사점
KR20230072017A AI 기반 맞춤형 여행 일정 추천 일반 여행 추천은 선행기술이 많음
US10445666B1 개인 선호 기반 여행 일정 추천 개인화 일정 추천 영역과 차별화 필요
US20120191341A1 / US8719251B1 협업형 여행 계획 및 검색 결과 공유 채팅 기반 협업 구조와의 차별화 필요
WO2023073505A1 대화형 여행 계획 인터페이스 자연어 기반 여행 UI와의 차별화 필요

본 과제의 특허 전략은 범용 여행 추천보다 협업형 대화 맥락 처리, 실시간 일정·보관함 반영, 채팅 요약 기반 AI 장소 추천에 초점을 맞추는 방향이 적절하다.

  • 기술 로드맵
단계 개발 내용
1단계 Google OAuth 로그인, 방 생성, 초대 코드 입장, 멤버 관리, 기본 장소 검색과 일정 편집
2단계 MongoDB 채팅 저장, WebSocket/STOMP 브로드캐스트, 읽음 위치, 재접속 복구
3단계 보관함 카테고리, 장소 공유 메시지, Drag and Drop 일정 편집, 이동 정보 Redis 캐시
4단계 AI 요청 큐, 방별 lock, 채팅 30개 단위 자동 요약, 장소 추천과 비지원 질문 거절
5단계 Docker Compose 배포, Caddy edge proxy, Prometheus/Grafana/Loki/Alloy 관측성 고도화

시장상황에 대한 분석

  • 경쟁제품 조사 비교
제품 강점 한계
Google Maps 글로벌 POI/경로 데이터, 자연어 내비게이션 고도화 여행 그룹 합의 중심 워크플로우는 약함
Wanderlog 일정·지도·협업·예산 기능 통합 채팅방 멘션 기반 실시간 공동 의사결정은 상대적으로 약함
TripIt 예약/여정 자동 수집 및 정리 강점 실시간 그룹 협업과 지도 연동 추천은 제한적
  • 마케팅 전략 제시

주요 대상은 친구, 가족, 동아리, 팀 단위로 여행을 준비하는 소규모 그룹 사용자이다. 초기 확산은 대학생 지인, 동아리, 학생회, 여행 커뮤니티처럼 공동 의사결정이 많은 사용 사례를 중심으로 진행한다.

서비스 메시지는 “지도와 채팅을 오가며 여행 계획을 정리하는 불편함을 줄이고, 한 화면에서 후보 저장·일정 배치·AI 요약을 제공한다”는 점에 집중한다.

개발과제의 기대효과

기술적 기대효과

Frontend, Spring Backend, AI Server를 분리하여 사용자 상태 저장과 AI 판단을 독립적으로 확장할 수 있다. PostgreSQL/PostGIS, MongoDB, Redis를 목적별로 분리해 관계형 도메인 데이터, 채팅 타임라인, 캐시·큐·세션 데이터를 각각 적합한 저장소에 배치한다.

또한 WebSocket/STOMP 기반 실시간 동기화와 OpenAI structured output 기반 응답 계약을 결합하여, 지도·채팅·일정·AI 추천이 안정적으로 연결되는 협업형 여행 계획 구조를 구현한다.

경제적, 사회적 기대 및 파급효과

여행 계획에 필요한 장소 탐색, 정보 공유, 일정 조율 시간을 줄여 소규모 그룹 여행 준비의 생산성을 높일 수 있다. 대화와 일정이 분리되지 않아 의사결정 이력을 보존하고, 늦게 합류한 팀원도 AI 요약과 후보지를 통해 빠르게 맥락을 따라갈 수 있다.

나아가 지도·채팅·AI를 결합한 협업 경험은 여행뿐 아니라 모임 장소 선정, 현장 답사, 팀 프로젝트 일정 조율 등으로 확장될 수 있다.

기술개발 일정 및 추진체계

개발 일정

기간 주요 개발 내용
2026년 3월 기획, 요구사항 정의, 화면 설계, 기술 스택 선정
2026년 4월 인증, 방 생성, 초대 코드, 장소 검색, 기본 채팅 기능 구현
2026년 5월 보관함, 일정 편집, Drag and Drop, WebSocket 실시간 동기화 구현
2026년 6월 AI 요약·추천, 운영 배포, 모니터링, 사용자 테스트 및 최종 보고서 정리

구성원 및 추진체계

구성원 역할 담당 업무
김민형, 박주영 Backend Spring Boot 기반 REST API, 인증/인가, WebSocket/STOMP 실시간 이벤트 개발 등
송희영 Frontend Next.js 기반 화면 구현, 지도·채팅·일정·보관함 UI, 상태 관리, API 연동 등
문재영 AI Server FastAPI 기반 AI API, 채팅 요약, intent 분기, 장소 추천, OpenAI 및 Google Places 연동 등

전체 추진체계는 Git 기반 버전 관리, API 명세 공유, Docker Compose 로컬 환경, 기능별 테스트 및 시연을 통해 개발 결과를 통합하는 방식으로 운영하였다.

설계

설계사양

제품의 요구사항

번호 요구사항
R1 사용자는 Google 계정으로 약관 동의 후 회원가입 및 회원 탈퇴를 할 수 있으며, 로그인하여 자신이 참여한 여행 방 목록과 방 상세 정보를 조회할 수 있어야 한다.
R2 사용자는 방을 생성하고 초대 코드로 다른 사용자를 초대할 수 있어야 하며, HOST는 입장 요청 승인/거절, 멤버 추방, 방장 위임, 방 정보 수정, 방 삭제, 초대 코드 재발급을 할 수 있어야 한다.
R3 사용자는 지도에서 장소를 검색하고, 장소를 보관함에 저장하거나 채팅에 공유하고, 일정에 추가할 수 있어야 한다.
R4 사용자는 방 안에서 실시간 채팅을 주고받고, 읽음 위치와 안읽은 메시지 수를 확인할 수 있어야 한다.
R5 사용자는 일자별 여행 일정을 생성·삭제·이동하고, 일정 항목을 추가·삭제·순서 변경·다른 일자로 이동하며, 시간과 메모를 편집할 수 있어야 한다.
R6 사용자는 AI에게 여행 관련 질문을 보낼 수 있어야 하며, AI는 대화 요약, 장소 추천, 일정·북마크 기반 일반 여행 조언을 제공해야 한다.
R7 AI는 비여행 질문이나 예약·결제·일정 직접 수정 같은 실행 권한 밖 요청을 수행했다고 답하지 않고, 가능한 안내만 제공해야 한다.

설계 사양

구분 설계 사양
인증 및 방 관리 Google OAuth, JWT, Refresh Token Rotation, Redis 기반 세션 관리를 적용한다. 방 생성 시 여행 기간 기준으로 일자별 초기 schedule을 자동 생성한다.
지도·장소·보관함 Google Places 검색은 pageSize 1~20 범위를 지원한다. 장소 미리보기 캐시는 Redis 24시간, 장소 상세 캐시는 Redis 6시간, 사진 URL은 Redis 10분 TTL을 적용한다.
일정 편집 방의 schedule은 최소 1개를 유지하며 최대 30일을 초과하지 않도록 제한한다. 일정 항목은 order_index로 순서를 관리하고 Drag and Drop 후 연속되게 보정한다.
이동 정보 Google Routes 이동 정보는 DB에 저장하지 않고 Redis 10분 캐시와 5초 single-flight lock으로 중복 호출을 줄인다.
실시간 협업 STOMP topic으로 메시지, 멤버, presence, bookmark, schedule 변경 이벤트를 브로드캐스트한다. 채팅/장소 공유 전송은 사용자별 5/sec + 60/min rate limit을 적용한다.
AI 기능 일반 메시지 30개 누적 시 AI 서버가 구조화 summary를 갱신한다. AI 요청은 방별 QUEUED 최대 3개, 사용자별 같은 방 내 QUEUED/PROCESSING 최대 1개로 제한한다.
AI 응답 형식 AI 장소 추천은 최대 3개의 장소 카드를 반환하며, intent는 place_recommendation, conversation_summary, travel_general_chat, unsupported로 고정한다.
구분 선택 기술 적용 목적
Frontend Next.js 16, React 19, Tailwind CSS, Zustand, TanStack Query, Framer Motion 사용자 화면 구성, 클라이언트 상태 관리, 서버 상태 동기화, UI 애니메이션 구현
Backend Java 21, Spring Boot 4, Spring Security, Spring Data JPA, Spring Data MongoDB, Spring Data Redis, Bucket4j, WebSocket/STOMP REST API, 인증/인가, 도메인 데이터 처리, 실시간 협업 이벤트, rate limit 구현
AI Server Python FastAPI, OpenAI API, Google Places API 채팅 요약, intent 분기, 여행 맥락 기반 답변, 장소 추천 및 장소 정보 보완
Database PostgreSQL 17, PostGIS, MongoDB 8, Redis 8 관계형 도메인 데이터, 채팅 메시지, 캐시, 세션, AI 요청 queue/lock 관리
운영 환경 Docker Compose, Dockerfile, Caddy, Prometheus, Grafana, Loki, Alloy 서비스 컨테이너화, edge proxy, 로그 및 메트릭 관측성 확보

개념설계안

우때 전체 시스템 아키텍처

본 서비스는 Frontend, Spring Backend, AI Server를 분리한 구조로 설계한다. Frontend는 사용자 화면과 지도·채팅·일정·보관함 UI를 담당하고, Spring Backend는 인증, 권한, 원본 데이터 저장, 실시간 이벤트 전파의 중심 역할을 한다. AI Server는 FastAPI 기반의 독립 서버로 두어 요약 생성, intent 분기, context selection, Google Places 검색 및 최종 응답 생성을 담당한다.

계층 역할
Frontend 지도 기반 장소 탐색, 채팅, 일정표, 보관함, 방 설정 등 사용자 인터페이스 제공
Spring Backend 인증/인가, 방·멤버·장소·북마크·일정·채팅 도메인 처리, WebSocket/STOMP 이벤트 전파
AI Server 채팅 요약, 여행 질문 응답, 장소 추천, 비지원 질문 거절
PostgreSQL/PostGIS 사용자, 방, 멤버, 일정, 보관함 등 정형 데이터 저장
MongoDB 채팅 메시지와 AI context summary 등 문서형 데이터 저장
Redis refresh token, 접속 상태, 장소/경로 캐시, rate limit bucket, AI 요청 queue/lock 관리

이론적 계산 및 시뮬레이션

AI 응답 생성 시 전체 채팅 로그를 매번 전달하면 대화가 길어질수록 LLM 입력 토큰과 비용이 지속적으로 증가한다. 이를 줄이기 위해 본 서비스는 구조화 summary 1개, 마지막 요약 이후 delta, 최근 원문 메시지, 요청 메시지를 조합하여 최신 맥락을 유지한다.

항목 설계 기준 기대 효과
채팅 요약 주기 일반 메시지 30개 단위로 summary 갱신 요약 호출 빈도와 맥락 최신성의 균형 확보
AI 장소 추천 수 최대 3개 카드 반환 UI 가독성 유지 및 응답 길이 제한
장소 미리보기 캐시 Redis 24시간 TTL 반복 검색 비용 감소
장소 상세 캐시 Redis 6시간 TTL 상세 조회 API 호출 절감
사진 URL 캐시 Redis 10분 TTL Google Photo Media URL 신선도 유지
경로 정보 캐시 Redis 10분 TTL, 5초 single-flight lock 중복 Routes API 호출 방지
일정 길이 제한 최대 30일 과도한 일정 생성과 UI 복잡도 방지

이 구조를 통해 AI 입력 토큰 증가를 제한하고, 외부 API 호출 비용과 응답 지연을 줄이며, 실시간 협업 상황에서도 일정·채팅·AI 응답이 안정적으로 동기화되도록 설계하였다.

상세설계 내용

Frontend와 Backend 주요 기능 흐름

Frontend와 Backend는 REST API와 WebSocket/STOMP를 함께 사용한다. 사용자는 Google OAuth로 로그인하고, 방 생성·입장·장소 검색·보관함 저장·일정 편집·실시간 채팅 기능을 사용한다. Backend는 PostgreSQL/PostGIS, MongoDB, Redis에 각 데이터 성격에 맞게 정보를 저장하고, 변경 이벤트를 방 단위 topic으로 브로드캐스트한다.

영역 상세 설계
인증 사용자는 Google OAuth로 로그인한다. Backend는 Access Token과 Refresh Token을 발급하며, Refresh Token은 Redis에 저장하여 rotation 방식으로 관리한다.
방 관리 사용자는 여행 방을 생성하고 초대 코드로 팀원을 초대한다. HOST는 입장 요청 승인/거절, 멤버 추방, 방장 위임, 방 정보 수정, 방 삭제를 수행할 수 있다.
장소 검색 Backend가 Google Places API를 프록시하여 장소 검색, 장소 상세, 사진 URL을 제공한다. API 응답은 정책과 신선도를 고려해 Redis에 TTL 기반으로 캐시한다.
보관함 사용자는 장소를 방 단위 보관함 카테고리에 저장한다. 보관함 변경 이벤트는 WebSocket/STOMP로 방 멤버에게 전파된다.
일정 일정은 방의 여행 기간에 맞춰 일자별 schedule로 관리된다. 일정 항목은 order_index로 순서를 유지하며, Drag and Drop으로 같은 일자 또는 다른 일자로 이동할 수 있다.
채팅 일반 채팅, 장소 공유, AI 요청, AI 응답, 시스템 메시지를 MongoDB messages 컬렉션에 저장한다. 각 메시지는 방별 sequence를 가지며 재접속 시 누락 메시지 복구에 사용된다.
실시간 동기화 메시지, 멤버, presence, bookmark, schedule 변경 이벤트를 STOMP topic으로 브로드캐스트한다. 클라이언트는 이벤트 종류에 따라 필요한 범위만 재조회한다.
AI 요청 처리 및 장소 추천 흐름

AI Server는 단순 LLM 호출 서버가 아니라 여행 계획용 오케스트레이션 서버로 설계하였다. 사용자의 자연어 요청을 intent로 분류하고, 현재 방의 채팅 요약, 최근 메시지, 일정, 북마크, 장소 메타데이터를 조합해 필요한 경우 Google Places 검색 도구를 호출한다. 이후 하드 필터와 소프트 랭킹을 거쳐 최종 응답과 최대 3개의 장소 추천 카드를 생성한다.

또한 예약·결제·일정 직접 수정처럼 시스템 권한 밖 요청은 수행하지 않고 안내만 제공하도록 응답 계약을 고정하였다.

결과 및 평가

완료 작품의 소개

프로토타입 사진 혹은 작동 장면

본 과제의 완료 작품은 배포된 웹 서비스 형태로 구현되었으며, 사용자는 우때 바로가기 에 접속하여 서비스를 사용할 수 있다. 서비스는 Google 로그인 후 여행 방을 생성하고, 지도 기반 장소 탐색, 장소 공유, 보관함 저장, 일정 편집, 실시간 채팅, AI 장소 추천 기능을 하나의 협업 공간에서 제공한다.

우때 서비스 랜딩 화면
지도 기반 장소 탐색 화면
일자별 일정 계획 화면
구분 구현 내용
지도 기반 장소 탐색 Google Places API를 활용하여 장소를 검색하고 상세 정보를 확인할 수 있다.
보관함 여행 후보지를 카테고리별로 저장하고 팀원과 함께 관리할 수 있다.
일정 계획 일자별 일정에 장소를 추가하고 Drag and Drop으로 순서를 조정할 수 있다.
실시간 채팅 WebSocket/STOMP 기반으로 방 멤버 간 실시간 채팅과 장소 공유가 가능하다.
AI 추천 채팅 요약, 일정, 북마크 맥락을 바탕으로 여행 관련 답변과 장소 추천을 제공한다.

포스터

홍보 포스터는 서비스의 핵심 가치인 “지도, 채팅, 일정, AI 추천을 한 공간에서 제공하는 협업형 여행 계획 플랫폼”을 중심으로 구성하였다. 포스터에는 서비스 소개, 주요 기능, 사용 흐름, 기대효과를 포함하여 사용자가 서비스의 목적과 차별점을 빠르게 이해할 수 있도록 하였다.

우때 홍보 포스터

관련사업비 내역서

본 과제의 개발 사업비는 디자인 도구, AI API, 서버 및 배포 환경, 도메인 구매 등에 사용되었다.

구분 항목 수량 단가(천원) 금액(천원) 비고
직접 개발비 Figma Professional 구독 1 33.9 33.9 화면 설계 및 프로토타입 제작
직접 개발비 ChatGPT 구독 1 29.0 29.0 개발 보조 및 문서화
직접 개발비 Claude 구독 3 69.4 209.1 3건
직접 개발비 OpenAI API 사용료 3 11.0 34.1 AI 요약 및 추천 기능 개발
직접 개발비 Claude API 사용료 1 8.3 8.3 AI 응답 비교 및 개발 보조
직접 개발비 서버비 및 GCP 사용료 3 82.7 248.0 서버 운영 및 지도 API 사용
직접 개발비 도메인 구매 2 22.0 44.0 서비스 도메인 구매
합계 606.4

완료작품의 평가

번호 평가항목 평가방법 적용기준 개발목표치 비중(%) 평가결과
1 사용자 인증 및 방 관리 Google OAuth 로그인, JWT 발급, refresh token rotation, 방 생성/조회/입장 요청/승인 API 동작 확인 인증된 사용자만 방 기능 접근 가능, HOST 권한 기능 분리 로그인, 토큰 갱신, 방 생성, 초대 코드 입장, 승인/거절 기능 구현 15 달성
2 장소 검색 및 보관함 기능 Google Places 검색, 장소 상세 조회, 장소 저장/삭제, 카테고리 변경 기능 확인 장소 검색 pageSize 1~20, 장소 미리보기 Redis 24시간, 상세 6시간 캐시 적용 지도 기반 장소 탐색, 장소 상세, 보관함 카테고리 관리 구현 20 달성
3 일정 편집 및 이동 정보 기능 일정 생성/삭제/이동, 일정 항목 추가/삭제/순서 변경, Routes 조회 확인 방 일정 최대 30일, 최소 1개 일정 유지, 경로 정보 Redis 10분 캐시 일자별 일정표와 Drag and Drop 기반 일정 항목 편집 구현 20 달성
4 실시간 채팅 및 협업 동기화 WebSocket/STOMP 메시지 송수신, 읽음 상태, 재접속 동기화, 시스템 메시지 확인 채팅/장소 공유 5/sec + 60/min rate limit, MongoDB sequence 기반 메시지 저장 일반 채팅, 장소 공유, AI 메시지, 읽음 위치, 실시간 이벤트 구현 20 달성
5 AI 요약 및 여행 추천 기능 AI summary API, AI chat plan API, 비여행 질문 거절, 장소 카드 응답 확인 일반 메시지 30개 단위 요약, AI 추천 장소 최대 3개, 고정 intent 4종 적용 대화 요약, 여행 일반 답변, 장소 추천, unsupported 응답 구현 25 달성

추가로 Google Analytics를 통해 서비스 사용 현황을 확인하였다. 2026년 6월 16일 기준 활성 사용자는 87명이며, 이벤트 발생 수는 약 2.7천 건이다. 또한 2026년 6월 13일 기준 Google Form 서비스 만족도 조사에 총 28명이 참여하였다.

향후계획

향후에는 실제 사용자 피드백을 기반으로 AI 장소 추천 품질을 개선하고, 모바일 환경에서 지도·채팅·일정·보관함을 더 자연스럽게 전환할 수 있도록 반응형 UX를 고도화할 계획이다.

구분 향후 계획
AI 추천 고도화 사용자 피드백을 기반으로 prompt와 ranking 기준을 개선한다.
모바일 UX 개선 지도, 채팅, 일정, 보관함 화면을 모바일에서 더 자연스럽게 전환할 수 있도록 개선한다.
동선 최적화 일정 항목 간 이동 시간뿐 아니라 전체 여행 동선 최적화와 추천 순서 조정 기능을 추가한다.
공동 의사결정 팀원 투표, 선호도 표시, 후보지 우선순위 기능을 추가한다.
여행 부가 기능 숙소 예약, 비행기 예매 등 여행 준비에 필요한 부가 기능을 검토한다.
운영 안정성 로그, 메트릭, 장애 알림, 대시보드를 고도화하여 운영 환경의 안정성을 높인다.

특허 출원 내용

본 과제는 현재 별도의 특허 출원을 진행하지 않았다. 다만 개발 과정에서 조사한 선행특허와 비교했을 때, 향후 권리화 가능성이 있는 요소는 다음과 같다.

구분 내용
출원 여부 현재 미출원
관련 선행특허 KR20230072017A, US10445666B1, US20120191341A1, US8719251B1, WO2023073505A1
권리화 검토 대상 1 채팅 요약 기반 여행방 컨텍스트 선택 구조
권리화 검토 대상 2 일정·북마크 정보를 활용한 AI 장소 추천 방식
권리화 검토 대상 3 실시간 협업 일정 변경 이벤트와 AI 응답을 연동하는 구조