FINAI는 금융감독원 공개 데이터를 기반으로 예금, 적금, 전세자금대출 상품을 비교하고, 사용자의 목적과 자산 정보를 반영해 맞춤형 금융상품을 추천하는 웹 서비스입니다. 단순 금리 목록을 보여주는 데서 끝나지 않고, 가입 상태, 예상 수령액, 사용자 프로필, 커뮤니티 흐름까지 함께 다루는 자산 관리형 금융 서비스로 구현했습니다.
이 저장소에는 공개 가능한 백엔드/프론트엔드 소스 스냅샷을 포함합니다. 운영 비밀값, API 키, 비공개 배포 노트, 전체 개발 이력은 FINAI-private에서 관리합니다.
| 항목 | 내용 |
|---|---|
| 프로젝트 유형 | SSAFY 1학기 관통 프로젝트, 2인 팀 |
| 내 역할 | 백엔드로 시작해 프론트엔드까지 풀스택 기여, AI 추천 기능 구현, 최종 발표 담당 |
| 주력 기술 | Django 5.2, Django REST Framework, Vue 3, Pinia, Chart.js, SSAFY GMS AI API |
| 보여주고 싶은 역량 | 금융상품 데이터를 구조화하고, 사용자 목적 기반 추천 흐름을 API/UI로 연결하는 역량 |
| 대표 근거 | backend/fin_agent/models.py, backend/fin_agent/views.py, frontend/src/views/RecommendView.vue, frontend/src/stores/product.js |
제가 이 프로젝트에서 강조하고 싶은 부분은 단순히 AI 추천 문장을 붙인 것이 아니라, 금융상품 데이터 구조, 가입 상태, 예상 수령액, 사용자 목적을 하나의 서비스 흐름으로 연결한 경험입니다. 추천 품질을 모델만의 문제로 보지 않고, 어떤 데이터 구조와 탐색 경로를 줄 것인지부터 정리했습니다.
| 항목 | 내용 |
|---|---|
| 과정 | SSAFY 14기 1학기 관통 프로젝트 |
| 기간 | 2025-11-28 - 2025-12-25 |
| 팀 구성 | 2인 |
| 제품 방향 | 금융상품 비교, AI 추천, 가입 상품 관리, 자산 시각화 |
| 이전 명칭 | 일부 문서의 Bankbook 표기는 같은 프로젝트의 이전 명칭 |
금융상품 비교 서비스는 금리 순위만 나열하면 사용자의 실제 선택을 충분히 돕지 못합니다. FINAI는 사용자의 나이, 연봉, 자산, 목적을 입력으로 받아 가입 가능한 상품과 목적 적합성을 함께 검토하고, 이미 가입한 상품의 만기 예상 수령액과 자산 포트폴리오를 관리할 수 있도록 설계했습니다.
- 백엔드 개발로 시작했지만 프로젝트 초반부터 프론트엔드와 백엔드를 함께 구현
- 금융감독원 OpenAPI 연동과 예금/적금/전세자금대출 데이터 수집 흐름 구현
- AI 추천 엔드포인트와 프론트엔드 추천 화면 연동
- 가입 상품 중개 모델과 예상 수령액 계산 흐름 설계
- 최종 발표에서 기술 의도와 문제 해결 과정을 설명
- GitHub 기본 브랜치 커밋 분석 기준 전체 13개 커밋 중 6개 커밋에 관여
| 영역 | 기능 |
|---|---|
| 금융상품 수집 | 금융감독원 OpenAPI에서 예금, 적금, 전세자금대출 상품과 옵션 수집 |
| 상품 조회 | 상품 유형, 기간, 금리 조건을 기준으로 통합 조회 |
| AI 추천 | 사용자 목적과 자산 정보를 기반으로 적합 상품 3개 추천 |
| 가입 상품 관리 | 사용자별 가입 상품, 금리 유형, 가입일, 납입액, 만기 조건 관리 |
| 예상 수령액 계산 | 단리/복리, 가입 기간, 월 납입액을 반영한 만기 예상 금액 계산 |
| 커뮤니티 | 게시글 CRUD와 작성자 권한 검증 |
| 자산 화면 | 상품, 금/은 가격, 은행 지도, 영상 추천 등 금융 탐색 화면 |
| 영역 | 기술 |
|---|---|
| 백엔드 | Python, Django, Django REST Framework |
| 인증 | custom User model, dj-rest-auth, django-allauth |
| 프론트엔드 | Vue 3, Vite, Pinia, Vue Router |
| 시각화 | Chart.js |
| API 연동 | 금융감독원 OpenAPI, AI 공급자 게이트웨이 |
| 통신 | Axios, REST API |
flowchart LR
USER["사용자"]
FE["Vue 3 SPA"]
BE["Django REST API"]
DB["Database<br/>상품 / 사용자 / 게시글"]
FSS["금융감독원 OpenAPI"]
AI["AI 추천 엔진"]
USER --> FE
FE <-->|REST| BE
BE --> DB
BE --> FSS
BE --> AI
AI --> BE
| 모델 | 역할 |
|---|---|
DepositProduct |
예금/적금 공통 상품 기본 정보 |
DepositOptions |
기간별 금리 옵션 |
JeonseLoanProduct |
전세자금대출 상품 기본 정보 |
JeonseLoanOption |
대출 상환/금리 옵션 |
User |
자산, 연봉, 가입 상품을 가진 custom user |
UserJoinedProduct |
사용자와 상품 사이의 가입 상태, 금리, 기간, 납입액 중개 모델 |
Article |
커뮤니티 게시글 |
FINAI
+-- backend
| +-- config # Django 프로젝트 설정, 라우팅
| +-- fin_agent # 모델, 직렬화, 뷰, URL, 마이그레이션
| +-- manage.py
| \-- requirements.txt
\-- frontend
+-- src/router # Vue Router
+-- src/stores # Pinia 저장소
+-- src/views # Home, Product, Recommend, Profile, Community 등
+-- src/components # 상품 모달 등 재사용 UI
\-- package.json
cd backend
python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
python manage.py migrate
python manage.py runservercd frontend
npm install
npm run devWindows PowerShell에서는 가상환경 활성화 명령을 환경에 맞게 조정하면 됩니다.
공개 저장소에는 운영 비밀값을 포함하지 않습니다. 백엔드 실행 시 필요한 값은 환경 변수 또는 추적하지 않는 .env로 주입합니다.
SECRET_KEY=<django-secret-key>
FINLIFE_API_KEY=<fss-api-key>
GMS_API_KEY=<ai-provider-key>
공개 저장소에는 공개 가능한 소스 스냅샷을 포함하지만, 다음 항목은 포함하지 않습니다.
- 운영 API 키, AI 공급자 인증 정보, 데이터베이스 인증 정보
- local
.env, 비공개 설정, 배포 키 - 비공개 제출 자료, 팀 내부 피드백, 전체 소스 이력
전체 개발 이력과 비공개 자료는 비공개 저장소와 별도 백업에서 관리합니다.