각자의 자산·부채·금융성향과 공동목표를 결합해
5개 축의 금융궁합도를 산출하고, 개선이 필요한 영역을
분석 리포트와 맞춤 금융상품 추천으로 연결하는 커플 금융 진단 서비스입니다.
KB IT's Your Life 7기 종합실무 프로젝트
2026.07.09 ~ 2026.08.26 / 6인 팀 프로젝트
Full Stack Developer | 노유열
본 프로젝트는 6인 팀 프로젝트이며, 아래 내용은 제가 담당한 영역을 중심으로 정리했습니다.
- 마이페이지 및 금융자산 조회 API·화면 연동
- 금융궁합 계산 로직 검증 및 결과 데이터 연동
- 리포트 5개 축 상세 데이터 및 시각화 UI 구현
- 금융상품 유형 조회 및 예·적금 추천 정책 연동
- 커플 연결 해제·회원탈퇴 시 데이터 정합성 처리
- 잘못된 API 요청에 대한 예외 응답 처리 개선
- 담당 도메인의 Front-End부터 Back-End까지 End-to-End 구현
- 커플 연결 해제·회원탈퇴 과정의 데이터 정합성 문제 해결
- 금융 데이터 시각화 및 리포트 사용자 경험 개선
- API 입력 예외 처리 개선을 통한 오류 응답 일관성 향상
- 금융상품 수집 방식 기술 검토를 통한 안정적인 MVP 범위 설정
커플 ID를 기준으로 연결된 결과·리포트 데이터는 FK CASCADE로 삭제됐지만 회원 ID 기준의 개인 추천 데이터는 자동으로 삭제되지 않는 구조였습니다.
또한 기존 초대코드와 공동설문이 남아 있으면 재연결 과정에서 이전 데이터가 혼재할 가능성이 있었습니다.
- 하나의 트랜잭션에서 연결 해제 처리
FOR UPDATE를 이용한 해제 대상 잠금 조회- 개인 추천 데이터 명시적 삭제
- Couple 데이터 삭제
- 기존 공동설문 및 초대코드 정리
- 삭제 건수 검증
- 중간 실패 시 전체 Rollback
연결 해제 및 회원탈퇴 이후 고아 데이터가 남지 않도록 데이터 정합성을 보장했습니다.
또한 두 사용자가 새로운 초대코드와 설문을 이용해 정상적으로 다시 연결할 수 있도록 상태를 정리했습니다.
금융궁합 총점과 축별 점수만으로는 사용자가 왜 해당 점수가 나왔는지 이해하기 어려웠습니다.
금융자산·부채·목표·절세 등 서로 다른 금융지표를 각 축의 특성에 맞게 설명할 필요가 있었습니다.
Back-End
- 리포트 상세 분석 데이터 응답 구조 정리
- 금액 포맷 처리
- 기존 리포트 API와 상세 데이터 연결
Front-End
- 5개 축 상세 분석 카드 구현
- DSR 시각화
- 금융자산 대비 부채 시각화
- 목표 예상자산 그래프
- 절세 활용 현황 표시
- CTA 및 상세 분석 UI 개선
점수와 텍스트 중심이었던 리포트를 실제 금융지표와 그래프를 포함한 상세 분석 화면으로 확장했습니다.
Back-End 데이터 구성부터 Front-End 렌더링까지 하나의 기능을 End-to-End로 구현했습니다.
정의되지 않은 enum 값이나 잘못된 타입이 요청 JSON에 포함되면 Jackson 역직렬화 과정에서
HttpMessageNotReadableException
이 발생했고 기존 예외 처리 구조에서는 500 Internal Server Error로 응답했습니다.
GlobalExceptionHandler에
HttpMessageNotReadableException 전용 핸들러를 추가했습니다.
잘못된 요청은 공통 오류 규격의
400 INVALID_INPUT
으로 응답하도록 수정했습니다.
사용자 입력 오류와 서버 내부 오류를 HTTP 상태 코드 수준에서 분리해 Front-End가 오류 유형에 따라 적절하게 대응할 수 있도록 개선했습니다.
회원가입 / 커플 연결
↓
개인·공동 설문 및 금융정보 입력
↓
5개 축 금융궁합도 산출
↓
상세 분석 리포트
↓
맞춤 금융상품 추천
금융궁합도는 총 100점이며 다음 5개 축으로 구성됩니다.
| 평가 항목 | 배점 |
|---|---|
| 금융자산 | 25 |
| 금융 가치관 일치 | 25 |
| 부채 | 20 |
| 목표 달성 가능성 | 20 |
| 절세 활용도 | 10 |
| 합계 | 100 |
금융 계산은 규칙 기반으로 처리하고, 생성형 AI는 5개 축 결과를 종합한 코멘트 생성에 활용했습니다.
- Vue 3
- JavaScript
- Vite
- Pinia
- Vue Router
- Tailwind CSS
- Java 17
- Spring Framework 5
- MyBatis
- JUnit 5
- MySQL
- Redis
- Docker
- Nginx
- AWS EC2
- GitHub Actions
Frontend
Vue 3
↓
Nginx
↓
Backend
Spring Framework 5 + Tomcat
↓
MySQL / Redis
finance-match
├── frontend
│ └── src
│ ├── api
│ ├── components
│ ├── pages
│ ├── router
│ └── stores
│
└── backend
└── finance-match-api
└── src
└── main
├── java
│ └── com.financematch
└── resources