| PM 최홍석 | PL 홍윤기 | 서민지 | 이노운 | 장송하 | 전수민 |
|---|---|---|---|---|---|
| 🔗GitHub | 🔗GitHub | 🔗GitHub | 🔗GitHub | 🔗GitHub | 🔗GitHub |
| Category | Stack |
|---|---|
| Frontend | |
| Backend | |
| Database / Cache | |
| CI/CD & Security | |
| Infrastructure | |
| Cloud Environment | |
| Monitoring & Logging |
wooridoori-intro.mp4
대부분의 금융 서비스는 소비 내역과 통계를 제공합니다. 하지만 해당 결과가 왜 발생했는지, 지금 소비 상태가 위험한지에 대한 해석은 제공하지 않습니다. 그 결과 사용자는 데이터를 확인하고도 행동으로 이어지지 못합니다.
월별 소비 요약은 제공되지만, 어떤 소비를 줄여야 하는지, 어디서 반복적인 과소비가 발생하는지는 파악하기 어렵습니다. 소비 관리는 기록 중심에 머물고, 실제 습관 개선으로 이어지지 않는 구조라고 판단했습니다.
같은 금액의 소비라도 사용자마다 상황과 소비 맥락은 다릅니다. 하지만 기존 서비스는 이를 고려하지 않고 정형화된 통계 위주로 정보를 제공합니다. 개인 소비 흐름을 이해하고 설명해주는 기능이 부족하다고 보았습니다.
우리두리는 위 문제를 해결하기 위해 소비 데이터를 해석하고 설명하는 구조를 서비스의 핵심으로 설계했습니다.
금융 데이터를 다루는 서비스 특성을 고려해 고가용성과 안정성을 중시한 아키텍처를 기반으로 구현했습니다.
월 목표 관리, 소비 속도 분석, 위험 알림, 카테고리·가맹점 TOP5 분석, 소비일기 기능을 제공하며, 생성형 AI 기반 개인 소비 비서 두리 비서를 통해 사용자의 소비 흐름을 이해하고 개선 방향을 제시합니다.
- 월 목표 대비 소비 진행률과 소비 속도를 함께 분석합니다.
- 현재 페이스 기준 목표 초과 시점을 예측하고, 위험 구간 진입 전에 알림을 제공합니다.
➡️ 단순 기록이 아닌 예측 기반 피드백을 통해 사용자가 소비를 조기에 조절할 수 있도록 지원합니다.
- 카테고리 총액뿐 아니라, 실제 지출이 반복적으로 발생한 가맹점 단위까지 분석합니다.
➡️ 작은 금액이라 인지하지 못했던 소비가 어디에서 누적되고 있었는지 한눈에 파악할 수 있도록 구성했습니다.
- 소비 내역을 날짜별로 확인할 수 있는 캘린더 기능과 함께 소비 당시의 상황과 감정을 기록할 수 있는 소비일기를 제공합니다.
➡️ 시간 흐름과 감정 맥락 속에서 충동 소비와 반복 패턴을 자연스럽게 인지하도록 설계했습니다.
- 월말 리포트는 자체 소비 점수 기준을 적용해 사용자의 소비 습관을 객관적인 지표로 평가합니다.
- 생성형 AI 기반 두리 비서는 소비 데이터를 해석해 설명하고, 실행 가능한 행동 방안까지 제안합니다.
[ 우리두리 소비 점수 구성 ]
| 영역 | 배점 | 평가 내용 | 핵심 기준 |
|---|---|---|---|
| 목표 달성도 | 40점 | 월 목표 대비 소비 평가 | 목표 이하 소비 시 가점, 초과 시 감점 |
| 소비 안정성 | 20점 | 소비 변동성 평가 | 변동이 적을수록 높은 점수 |
| 필수/비필수 비율 | 20점 | 소비 구조 균형 | 필수 지출 비중 기준 |
| 절약 지속성 | 20점 | 전월 대비 변화 | 지속적 절약 여부 반영 |
➡️ 이를 통해 소비 관리를 요약이 아닌 코칭 경험으로 확장했습니다.
우리두리의 차별성
기존 자산관리 서비스가 자산 현황 확인과 상품 추천에 초점을 둔다면,
우리두리는 소비 습관 자체를 변화시키는 데 초점을 둔 서비스입니다.기록 → 분석 → 예측 → 코칭까지 이어지는 구조로
지출 데이터를 실제 행동 변화로 연결합니다.
운영자 역시 데이터를 기반으로 서비스를 이해하고 개선할 수 있도록 운영자 대시보드를 제공합니다.
카테고리별 지출 금액, 트렌드 변화, 상세 소비 통계를 제공하며 서비스 확장을 위한 기반 데이터로 활용됩니다.
일별 활성 사용자 수, 신규 사용자 수, 재방문 비율을 통해 서비스 성장 흐름과 사용자 이용 현황을 파악합니다.
사용자가 실제로 사용하는 카드 정보를 등록하고, 검증된 카드만 계정에 연결하는 흐름입니다.
추후 소비 내역 분석과 목표 관리의 기반 데이터가 됩니다.
- 사용자 → 앱: 카드 정보 입력 (카드번호, 비밀번호, 유효기간 등)
- 앱 → 백엔드: 카드 등록 API 호출
- 백엔드:
- 회원 정보 조회
- 카드 존재 여부 확인
- 카드 정보 검증 (비밀번호, 유효기간, 주민번호, CVC 등)
- 검증 성공 시
MemberCard엔티티 저장
- 실패 시: 적절한 에러 코드(404/400)와 메시지 반환
사용자가 월간 소비 목표를 설정하면, 일일 스케줄러와 AI 모듈이
달성도·안정성·비율·지속성 등 여러 관점에서 점수를 계산합니다.
- 목표 설정
- 사용자 → 앱 → 백엔드: 목표 금액/급여 전달
- 이번 달/다음 달 목표 생성·수정 로직
- 점수 계산 (일일 배치/스케줄러)
- 목표 대비 실제 소비액 기반 달성도
- 일별 소비 편차 기반 안정성
- 카테고리 균형 기반 비율
- 일정한 패턴 유지 기반 지속성
- 계산된 점수는 DB에 저장되고 AI 피드백에도 활용
실제 소비 내역을 분석해, 사용자에게 맞는 카드를 카테고리 기반으로 추천합니다.
- 현재 월 기준, 카테고리별 소비 금액 집계
- 결제 내역이 없으면: 빈 리스트 반환
- 결제 내역이 있으면:
- TOP 카테고리부터 최대 5개 카테고리까지 순회
- 각 카테고리별 인기 카드(사용 횟수 기준) 조회
- 최대 4개의 카드 ID를 수집 후 상세 정보 조회
- 정렬 및 가공 후, 추천 카드 리스트 + 대표 카테고리를 앱에 반환
소비와 감정을 함께 기록하는 일기 기능으로,
사용자의 상태를 장기적으로 파악하고 알림까지 연계합니다.
- 사용자 → 앱 → 백엔드: 제목/내용/이미지 포함 일기 작성 요청
- 이미지가 있을 경우:
- S3에 업로드 후 URL 저장
File엔티티로 메타데이터 DB 저장
- 하루 1개 제한을 위해, 해당 날짜 일기 존재 여부 검증
- 신규 일기 저장 후:
- SSE 기반 실시간 알림 발송 (
sendDiaryNotification) - 앱에서 알림 및 작성 완료 화면 표시
- SSE 기반 실시간 알림 발송 (
소비 내역, 목표, 과거 대화, 일기 등 다양한 컨텍스트를 활용하여
개인화된 금융 코칭/응원 메시지를 제공하는 AI 챗봇입니다.
- 사용자 → 앱: 채팅 메시지 입력
- 앱 → 백엔드:
/api/chat호출 - 백엔드:
- 메시지 전처리 (월/키워드 추출 등)
- 사용자 목표(Goal), 소비 내역(CardHistory) 조회
- VectorStore(ChromaDB)에서 과거 대화/컨텍스트 유사도 검색
- 페르소나 + 규칙 + 목표 + 소비내역 + 컨텍스트 + 최신 대화를 포함한 프롬프트 구성
- AI 모듈:
- Groq API + Llama 3.1 모델로 응답 생성
- 백엔드:
- 대화 내용을 임베딩 후 VectorStore에 저장
- 생성된 AI 응답을 앱에 전달
- 앱 → 사용자: AI 응답 표시






