경제적 여건이 유사한 Peer Group과의 비교를 통해 사용자의 투자행동과 위험요인을 점검하는 AI 금융 분석 서비스
Peerfolio는 사용자의 소득, 지출, 저축 목표, 자산 및 부채를 기반으로 경제적 여건이 유사한 Peer Group을 구성하고,
사용자와 Peer Group의 금융 자산 구성 차이를 비교하여 현재의 투자행동을 객관적으로 점검할 수 있도록 돕는 서비스입니다.
특정 금융상품을 추천하거나 수익을 예측하지 않으며, Peer Group의 평균은 적정 포트폴리오가 아닌 비교를 위한 참고 기준으로 활용합니다.
기존 투자 서비스가 시장·종목·수익률 중심의 정보를 제공한다면,
Peerfolio는 나와 경제적 여건이 유사한 사람들과의 비교를 통해 현재의 투자행동을 해석합니다.
Peer 평균을 정답이나 추천 포트폴리오로 제시하지 않고, 사용자가 자신의 자산 편중과 위험요인을 스스로 점검할 수 있도록 비교 근거를 제공합니다.
- 이메일 기반 회원가입 / 로그인 / 로그아웃
- Spring Security + JWT 기반 인증 및 인가
- BCrypt 기반 비밀번호 암호화
- SMTP 기반 이메일 인증
- 회원 정보 조회 및 회원 탈퇴
- 월수입, 고정지출, 저축목표, 보유자산, 부채 관리
- 예·적금·채권 / 국내주식 / 해외주식 / 대체·고위험자산 관리
- 순자산 및 총 금융 자산 계산
- 금융 데이터 입력값 검증 및 동시 저장 안정성 처리
- 경제적 여건을 기반으로 사용자 간 유사도 계산
- 유사도 기반 Peer Group 구성
- Peer Group의 금융 프로필 및 투자 자산 Benchmark 계산
- 사용자와 Peer Group의 자산 금액 및 구성 비율 비교
- 익명 Peer 카드 및 1:1 상세 금융 정보 비교
- 사용자와 Peer Group 간 자산 구성 차이 분석
- 자산 집중도, 부채 및 고정지출 부담 등을 기반으로 위험 점수 계산
0 ~ 100범위의 위험 점수 및LOW / MEDIUM / HIGH위험 단계 산출- 금융 정보 변경 여부를 기반으로 불필요한 재분석 방지
- Peer Benchmark와 위험 분석 결과를 기반으로 OpenAI 금융 분석 문구 생성
- 개별 Peer가 아닌 집계된 Peer Group 데이터를 AI 분석에 활용
- 사용자의 최신 금융 정보와 분석 결과를 기반으로 금융 챗봇 제공
- 챗봇 응답별 사용자 피드백 저장 및 중복 제출 방지
| Category | Stack |
|---|---|
| Language | Java 21 |
| Framework | Spring Boot |
| ORM | Spring Data JPA |
| Database | MySQL |
| Security | Spring Security, JWT, BCrypt |
| Spring Mail, SMTP | |
| AI | OpenAI API |
| API Docs | Swagger / OpenAPI |
| Build | Gradle |
| Infra | Docker, Docker Compose |
| CI/CD | GitHub Actions |
| Deploy | AWS EC2 |
Peerfolio Backend는 도메인 중심 패키지 구조를 사용합니다.
src/main/java/com/example/peerfolio
├── domain
│ ├── auth
│ ├── user
│ ├── emailverification
│ ├── financialinfo
│ ├── financialprofile
│ ├── financialasset
│ ├── peermatch
│ ├── analysisresult
│ ├── chatmessage
│ └── chatfeedback
│
└── global
├── apiPayload
├── config
├── openai
├── security
└── util
각 기능을 독립적인 도메인으로 분리하고, 공통 API 응답, Security, OpenAI 연동 및 설정은 global 영역에서 관리했습니다.
Peer Similarity, Benchmark, Risk Score 등의 계산 로직은 별도의 Calculator로 분리하여 비즈니스 로직의 역할을 명확하게 구성했습니다.
사용자 금융 정보 입력
↓
경제적 여건 기반 Peer Matching
↓
Peer Group Benchmark 계산
↓
사용자와 Peer Group의 자산 구성 비교
↓
서버 기반 위험 점수 / 위험 단계 계산
↓
OpenAI 분석 문구 생성
↓
AnalysisResult 저장
↓
분석 결과 기반 금융 챗봇
User를 중심으로 금융 프로필과 금융 자산을 관리하고, Peer Matching 결과와 금융 분석 및 챗봇 데이터를 연결하는 구조로 설계했습니다.
ERD는 MVP의 핵심 데이터 구조를 기준으로 작성되었습니다.
| Member | Contribution |
|---|---|
| 홍진우 (@j2nooh) | 프로젝트 기본 설정, User/Auth API, Spring Security + JWT 인증/인가, SMTP 이메일 인증, FinancialProfile / FinancialAsset API, OpenAI 기반 금융 챗봇 API, 챗봇 피드백 API |
| 주해윤 (@uaeoon) | Peer Matching 및 Benchmark 로직, 투자 위험 점수 계산, OpenAI 기반 금융 분석 API, Peer 카드 / 1:1 상세 비교 API, Docker 환경 구성, GitHub Actions CI/CD 및 AWS EC2 배포 |
Swagger를 통해 주요 Backend API의 요청/응답 명세를 문서화했습니다.
| Domain | 주요 기능 |
|---|---|
| Auth | 이메일 인증, 회원가입, 로그인, 로그아웃 |
| User | 사용자 정보 조회, 회원 탈퇴 |
| Financial Info | 금융 정보 저장 / 조회 / 수정 |
| Analysis | Peer Matching 및 AI 금융 분석 |
| Peer | Peer 카드 및 상세 비교 |
| Chat | AI 금융 챗봇 |
| Feedback | 챗봇 응답 피드백 |
develop Merge
↓
GitHub Actions
↓
Docker Build
↓
AWS EC2
↓
Docker Compose
↓
Spring Boot Server
develop 브랜치에 변경사항이 반영되면 GitHub Actions를 통해 Docker Build를 검증하고, AWS EC2 환경에 자동 배포합니다.
브랜치 이름은 아래 규칙을 따릅니다.
type/이슈번호-작업내용
| Type | 의미 | 예시 |
|---|---|---|
| feat | 새로운 기능 개발 | feat/1-signup |
| fix | 버그 수정 | fix/2-login-error |
| docs | 문서 수정 | docs/3-readme |
| refactor | 코드 리팩토링 | refactor/4-member-service |
| chore | 설정, 빌드, 기타 작업 | chore/5-github-template |
| test | 테스트 코드 작성 | test/6-member-service |
커밋 메시지는 아래 형식을 사용합니다.
type: 작업 내용
| Type | 의미 |
|---|---|
| feat | 새로운 기능 추가 |
| fix | 버그 수정 |
| docs | 문서 수정 |
| style | 코드 포맷팅 등 기능 변화 없는 수정 |
| refactor | 코드 리팩토링 |
| test | 테스트 코드 추가 또는 수정 |
| chore | 빌드 설정, 패키지 설정, 기타 작업 |
| rename | 파일 또는 폴더명 변경 |
| remove | 파일 삭제 |