Skip to content

About

KB It's your life 7기 종합실무프로젝트

Resources

Stars

0 stars

Watchers

0 watching

Forks

 
 

Repository files navigation

찰떡귱합

예비부부 금융궁합 진단 및 맞춤 금융상품 추천 서비스

각자의 자산·부채·금융성향과 공동목표를 결합해
5개 축의 금융궁합도를 산출하고, 개선이 필요한 영역을
분석 리포트와 맞춤 금융상품 추천으로 연결하는 커플 금융 진단 서비스입니다.

KB IT's Your Life 7기 종합실무 프로젝트
2026.07.09 ~ 2026.08.26 / 6인 팀 프로젝트


My Role

Full Stack Developer | 노유열

본 프로젝트는 6인 팀 프로젝트이며, 아래 내용은 제가 담당한 영역을 중심으로 정리했습니다.

담당 기능

  • 마이페이지 및 금융자산 조회 API·화면 연동
  • 금융궁합 계산 로직 검증 및 결과 데이터 연동
  • 리포트 5개 축 상세 데이터 및 시각화 UI 구현
  • 금융상품 유형 조회 및 예·적금 추천 정책 연동
  • 커플 연결 해제·회원탈퇴 시 데이터 정합성 처리
  • 잘못된 API 요청에 대한 예외 응답 처리 개선

핵심 기여

  • 담당 도메인의 Front-End부터 Back-End까지 End-to-End 구현
  • 커플 연결 해제·회원탈퇴 과정의 데이터 정합성 문제 해결
  • 금융 데이터 시각화 및 리포트 사용자 경험 개선
  • API 입력 예외 처리 개선을 통한 오류 응답 일관성 향상
  • 금융상품 수집 방식 기술 검토를 통한 안정적인 MVP 범위 설정

주요 문제 해결

1. 커플 연결 해제 시 데이터 정합성 보장

Problem

커플 ID를 기준으로 연결된 결과·리포트 데이터는 FK CASCADE로 삭제됐지만 회원 ID 기준의 개인 추천 데이터는 자동으로 삭제되지 않는 구조였습니다.

또한 기존 초대코드와 공동설문이 남아 있으면 재연결 과정에서 이전 데이터가 혼재할 가능성이 있었습니다.

Solution

  • 하나의 트랜잭션에서 연결 해제 처리
  • FOR UPDATE를 이용한 해제 대상 잠금 조회
  • 개인 추천 데이터 명시적 삭제
  • Couple 데이터 삭제
  • 기존 공동설문 및 초대코드 정리
  • 삭제 건수 검증
  • 중간 실패 시 전체 Rollback

Result

연결 해제 및 회원탈퇴 이후 고아 데이터가 남지 않도록 데이터 정합성을 보장했습니다.

또한 두 사용자가 새로운 초대코드와 설문을 이용해 정상적으로 다시 연결할 수 있도록 상태를 정리했습니다.


2. 리포트 상세 데이터 및 시각화 구현

Problem

금융궁합 총점과 축별 점수만으로는 사용자가 왜 해당 점수가 나왔는지 이해하기 어려웠습니다.

금융자산·부채·목표·절세 등 서로 다른 금융지표를 각 축의 특성에 맞게 설명할 필요가 있었습니다.

Solution

Back-End

  • 리포트 상세 분석 데이터 응답 구조 정리
  • 금액 포맷 처리
  • 기존 리포트 API와 상세 데이터 연결

Front-End

  • 5개 축 상세 분석 카드 구현
  • DSR 시각화
  • 금융자산 대비 부채 시각화
  • 목표 예상자산 그래프
  • 절세 활용 현황 표시
  • CTA 및 상세 분석 UI 개선

Result

점수와 텍스트 중심이었던 리포트를 실제 금융지표와 그래프를 포함한 상세 분석 화면으로 확장했습니다.

Back-End 데이터 구성부터 Front-End 렌더링까지 하나의 기능을 End-to-End로 구현했습니다.


3. 잘못된 API 입력을 500 → 400으로 개선

Problem

정의되지 않은 enum 값이나 잘못된 타입이 요청 JSON에 포함되면 Jackson 역직렬화 과정에서

HttpMessageNotReadableException

이 발생했고 기존 예외 처리 구조에서는 500 Internal Server Error로 응답했습니다.

Solution

GlobalExceptionHandler에 HttpMessageNotReadableException 전용 핸들러를 추가했습니다.

잘못된 요청은 공통 오류 규격의

400 INVALID_INPUT

으로 응답하도록 수정했습니다.

Result

사용자 입력 오류와 서버 내부 오류를 HTTP 상태 코드 수준에서 분리해 Front-End가 오류 유형에 따라 적절하게 대응할 수 있도록 개선했습니다.


서비스 핵심 흐름

회원가입 / 커플 연결
↓
개인·공동 설문 및 금융정보 입력
↓
5개 축 금융궁합도 산출
↓
상세 분석 리포트
↓
맞춤 금융상품 추천


금융궁합도

금융궁합도는 총 100점이며 다음 5개 축으로 구성됩니다.

평가 항목 배점
금융자산 25
금융 가치관 일치 25
부채 20
목표 달성 가능성 20
절세 활용도 10
합계 100

금융 계산은 규칙 기반으로 처리하고, 생성형 AI는 5개 축 결과를 종합한 코멘트 생성에 활용했습니다.


Tech Stack

Front-End

  • Vue 3
  • JavaScript
  • Vite
  • Pinia
  • Vue Router
  • Tailwind CSS

Back-End

  • Java 17
  • Spring Framework 5
  • MyBatis
  • JUnit 5

Database / Infra

  • MySQL
  • Redis
  • Docker
  • Nginx
  • AWS EC2
  • GitHub Actions

Architecture

Frontend

Vue 3

↓

Nginx

↓

Backend

Spring Framework 5 + Tomcat

↓

MySQL / Redis


Project Structure

finance-match
├── frontend
│   └── src
│       ├── api
│       ├── components
│       ├── pages
│       ├── router
│       └── stores
│
└── backend
    └── finance-match-api
        └── src
            └── main
                ├── java
                │   └── com.financematch
                └── resources

About

KB It's your life 7기 종합실무프로젝트

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages