Skip to content
@My-Golden-Kids

금쪽같은 내 새끼

보이스 / 알람 기반 시니어 반려가구를 위한 생활금융 서비스

readme

보이스 / 알람 기반 시니어 반려가구를 위한 생활금융 서비스

하나은행의 생활금융, “금쪽같은 내 새끼”로 더 넓혀드리겠습니다

💭 개요

금쪽같은 내새끼 PPT_page-0010

👫 금쪽이들

시니어(백엔드·파이널) 프로젝트 1팀

금쪽같은 내새끼 PPT_page-0033
Profile Name Roles Contributions
전유진
@Yujin0827
Project Manager
·
Full Stack Developer
·
Data Analysis
<프로젝트 총괄 및 협업 전략 구축>
- 팀장으로서 전체 일정 관리 및 역할 분배 수행
- 초기 TBD 기반 개발 → Git Flow 전환 협업 구조 구축

<서비스 방향 재정립 및 데이터 기반 금융 구조 설계>
- 기존 기능 나열형 서비스에서 보이스 기반 데이터 수집 → 재정 분석 → 금융상품 연계 구조로 서비스 방향 전환
- 데이터 기반 재정관리 서비스 구조 설계

<프론트엔드 개발 환경 구축>
- Next.js 기반 프론트엔드 개발 환경 구성
- 프로젝트 구조 설계 및 초기 개발 표준 수립

<서비스 아키텍처 설계 및 개발 표준 수립>
-프론트/백엔드 전반 구조 설계 및 공통 컴포넌트 구축
- 데이터 흐름 기반 구조 설계를 통한 확장성 및 유지보수성 확보

<마이데이터 기반 재정 분석 시스템 구현>
- 사용자 맞춤형 재정 분석 로직 설계 및 구현
- 반려동물 생애주기 및 연령별 의료비를 반영한 비용 예측 모델 구현

<금융상품 연계 및 분석 기능 구현>
- 절감 가능 비용을 분석하는 데이터 기반 금융 상품 추천 및 리포트 로직 구현
- 실질적인 금융 활용 구조 구현

<Full Stack 개발 수행>
- 공통 컴포넌트 설계 및 개발
- 자산 분석 리포트 화면 및 API 구현
- 마이데이터 연동 API 및 데이터 처리 로직 구현
정그린
@Green-JEONG
Sub Project Manager
·
Full Stack Developer
·
UX Architect
<GitHub 레포지토리 구축 및 협업 환경 초기 세팅>
- 프로젝트 GitHub 레포지토리 생성 및 초기 구조 설정
- 협업을 위한 코드 관리 기반 환경 구축

<AI 기반 데이터 디지털화 및 자동 수집 구조 구현>
- Google Vision OCR 기반 진료 내역 데이터 추출 및 구조화 기능 개발
- 사용자 입력 없이 데이터를 축적할 수 있는 자동 데이터 수집 구조 구축

<사용자 행동 기반 데이터 수집 기능 구현>
- Xcode와 카파시터 활용 iOS HealthKit 데이터를 연동한 만보기 기능 개발
- 알림-응답 기반 UX 설계를 통해 사용자 입력 최소화

<UX Design>
- 시니어 친화적 에러 처리 UX 설계 및 상황 기반 인터페이스 구현

<인프라 및 인증 환경 구축>
- DNS(SPF, DKIM, DMARC) 기반 메일 인증 환경 구축
- 매직 링크 기반 인증 시스템 구현

<Full Stack 개발>
- 온보딩 기능 개발
- 건강관리 : 산책 기능 전반 개발
김선우
@Seon-U
Security Specialist
·
Full Stack Developer
·
Data Modeler
<서비스 아이디어 제안 및 기획 기여>
- 프로젝트 초기 단계에서 서비스 아이디어 제안
- 반려동물 관리와 재정관리 결합 방향 설정에 기여

<인증 및 보안 시스템 설계 및 구현>
- Spring Security + NextAuth 기반 인증/인가 시스템 구축
- JWT 및 Refresh Token 기반 인증 흐름 구현으로 보안성과 안정성 확보

<데이터 모델링 및 구조 설계>
- ERD 설계 및 PK-FK 기반 관계형 데이터 모델 구축
- 서비스 확장을 고려한 데이터 구조 설계

<핵심 도메인 로직 구현>
- 접종 일정 관리 및 인증 기능 구현
- 보이스 응답 기반 일정 등록 기능 개발

<배포 이슈 해결 및 로그 기반 트러블슈팅>
- 배포 과정에서 발생한 오류를 로그 기반으로 분석
- 실제 서비스 운영 환경에서의 문제 해결 경험 확보

<Full Stack 개발>
- 회원가입 플로우 화면 구현 및 설정 기능 연결
- Resend 기반 비밀번호 재설정 매직 링크 기능 구현
- 백신 접종 기능 개발(백신 관련 정보 정규화, 요약 대시보드)
박성원
@Solid9966
DevOps Engineer
·
Full Stack Developer
·
Backend Architect
<백엔드 개발 환경 구축>
- Spring Boot 기반 백엔드 개발 환경 구성
- 서버 구조 및 API 개발 기반 환경 설정

<클라우드 기반 서비스 인프라 구축 및 운영>
- AWS EC2, S3, RDS 기반 서비스 배포 환경 구축
- 실제 서비스 운영 가능한 수준의 인프라 설계 및 적용

<CI/CD 자동화 환경 구축>
- GitHub Actions 기반 자동 배포 파이프라인 구축
- 개발-배포 프로세스 자동화로 협업 효율성 향상

<데이터베이스 설계 및 전반 관리>
- 서비스 전반의 데이터 구조 설계 및 DB 아키텍처 구축
- ERD 기반 테이블 설계 및 관계 구조 정의
- 데이터 저장·조회·처리 흐름을 고려한 DB 구조 개선 및 최적화
- 개발 전반에서 발생하는 DB 이슈 대응 및 관리 총괄

<AI 기반 대화 시스템 핵심 구현>
- Spring AI 및 Gemini 기반 STS 시스템 설계 및 구현
- 음성/텍스트 입력을 데이터로 전환하는 핵심 인터페이스 구축

<데이터 처리 및 시스템 안정성 개선>
- OCR 파이프라인 개선 및 이미지 처리 안정화
- 환경변수 및 배포 이슈 반복 개선을 통한 운영 안정성 확보

<Full Stack 개발 수행>
- 대시보드 및 재정관리 핵심 기능 개발
허혁
@hyeok1028
Data Interface Specialist
·
Full Stack Developer
<프론트엔드 구조 설계 및 공통 컴포넌트 구축>
- Atomic Design 기반 UI 구조 설계
- 재사용 가능한 컴포넌트 설계를 통해 개발 효율성 향상

<핵심 사용자 인터페이스 개발>
- 메인 홈 및 설정 화면 구현
- 사용자 흐름 중심 UI 설계 및 구현

<데이터 기반 UI 개선>
- 반려동물 및 재정 데이터를 반영한 UI 구성
- 사용자 인터랙션 최적화 및 접근성 개선

<최종 발표 및 서비스 전달>
- 프로젝트 결과 발표 담당
- 서비스 구조, 핵심 기능 및 데이터 기반 금융 연결 흐름 전달

<Full Stack 개발 수행>
- 재정·건강 데이터를 연결한 추천 로직 및 화면 반영 구조 설계

🛠️ 기술 스택 및 툴

[프론트엔드]

Next.js TailwindCSS TypeScript VS Code

[백엔드 & DB]

Java Spring Node.js MySQL JPA Swagger IntelliJ IDEA

[테스트 & AI/API]

JUnit5 Google Cloud Google Gemini

Resend

[인프라]

Git GitHub Docker AWS GitHub Actions Amazon EC2 Amazon S3 PNPM Gradle

[모바일 하이브리드]

iOS Capacitor Apple HealthKit

📄 핵심 기능

1. 온보딩 및 회원 기능

  • 회원가입, 로그인, OTP/매직링크 검증, 비밀번호 재설정 지원
  • 반려동물 이름/사진 기반 온보딩 제공
  • 사용자별 반려동물 다중 관리 지원

2. 홈 대시보드

금쪽같은 내새끼 PPT_page-0020
  • 선택한 반려동물 프로필 중심 홈 화면 제공
  • 소비 요약 정보 표시
  • 오늘 일정, 급여, 산책 시간 기반 알림 버블 제공

3. 음성 대화 인터페이스

금쪽같은 내새끼 PPT_page-0021
  • 음성 인식 기반 질의응답 지원
  • “산책”, “접종”, “병원기록”, “재정”, “상품” 등 주요 화면 이동 지원
  • Gemini 기반 응답 생성
  • 반려동물의 최근 산책, 병원기록, 예방접종 이력 조회 지원

4. 건강관리

  • 산책 시작/일시정지/종료 및 기록 저장
  • 예방접종/검진 일정 등록 및 달력 조회
  • 병원기록 조회 및 유형별 필터링
  • 병원 영수증 OCR 업로드 후 날짜, 병원명, 금액, 진료유형 자동 추출

5. 재정관리

금쪽같은 내새끼 PPT_page-0022
  • 반려동물 관련 소비 내역 조회
  • 월간/일간 지출 요약 및 카테고리 분석
  • 월별 소비 리포트 제공
  • 미래 반려 비용 및 자산 대비 부담 분석

6. 상품 추천

  • 반려동물 상태와 소비 패턴 기반 맞춤형 금융/제휴 상품 추천
  • 보험, 카드, 적금, 구독형 서비스, 장례 서비스 등 상품 유형별 리포트 제공

7. 설정

  • 반려동물 등록/수정/삭제
  • 알람 On/Off
  • 비밀번호 변경, 로그아웃, 회원탈퇴

🔮 기대효과

금쪽같은 내새끼 PPT_page-0018 금쪽같은 내새끼 PPT_page-0019
금쪽같은 내새끼 PPT_page-0023 금쪽같은 내새끼 PPT_page-0024

🔎 확장 가능성

금쪽같은 내새끼 PPT_page-0026 금쪽같은 내새끼 PPT_page-0027
금쪽같은 내새끼 PPT_page-0028 금쪽같은 내새끼 PPT_page-0029

🪧 ERD

erd_mgk
테이블 상세 설명

1. users

속성명 타입 설명
id bigint 사용자 고유 식별자(PK)
name varchar(100) 사용자 이름
email varchar(255) 로그인 및 인증에 사용하는 이메일, 유니크
password varchar(255) 저장된 비밀번호 문자열
email_verified_at datetime(6) 이메일 인증 완료 시각
deleted_at datetime(6) 탈퇴 처리 시각
created_at datetime(6) 회원 생성 시각
updated_at datetime(6) 회원 정보 수정 시각

2. accounts

속성명 타입 설명
id bigint 계좌 고유 식별자(PK)
user_id bigint 사용자 FK -> users.id
account_number varchar(50) 계좌번호, 유니크
bank_name varchar(100) 은행명
money_amount decimal(19,2) 예치 금액
reward_amount decimal(19,2) 적립 금액
total_amount decimal(19,2) 총 금액
created_at datetime(6) 계좌 생성 시각
updated_at datetime(6) 계좌 수정 시각

3. account_books

속성명 타입 설명
id bigint 가계부 고유 식별자(PK)
user_id bigint 사용자 FK -> users.id
pet_id bigint 반려동물 FK -> pets.id
account_id bigint 계좌 FK -> accounts.id
title varchar(200) 지출/수입 제목
amount decimal(19,2) 금액
category 가계부 카테고리 enum('Etc', 'Food', 'Hospital'
memo varchar(1000) 메모
spend_date datetime(6) 사용/지출 시각
created_at datetime(6) 생성 시각
updated_at datetime(6) 수정 시각

4. calendars

속성명 타입 설명
id bigint 캘린더 이벤트 고유 식별자(PK)
pet_id bigint 반려동물 FK -> pets.id
name varchar(200) 일정명
date date 일정 날짜
memo varchar(1000) 일정 메모
event_type varchar(100) 이벤트 유형
created_at datetime(6) 생성 시각
updated_at datetime(6) 수정 시각

5. maps

속성명 타입 설명
id bigint 위치 고유 식별자(PK)
name varchar(200) 장소명
latitude decimal(10,7) 위도
longitude decimal(10,7) 경도
category varchar(100) 장소 카테고리

6. medical_documents

속성명 타입 설명
id bigint 진료 문서 고유 식별자(PK)
pet_id bigint 반려동물 FK -> pets.id
pet_name varchar(100) 반려동물 이름
date date 진료/접종 날짜
type 문서 유형 enum (VACCINATION, CHECKUP, ETC)
hospital_name varchar(255) 병원명
details varchar(2000), nullable 진료 상세 내용
total_amount int 총 금액
image_url varchar(255), nullable 추정 증빙 이미지 경로
created_at datetime(6) 문서 등록 시각

7. pets

속성명 타입 설명
id bigint 반려동물 고유 식별자(PK)
user_id bigint 사용자 FK -> users.id
name varchar(100) 반려동물 이름
species varchar(100) 종/품종
image varchar(2048) 프로필 이미지 경로
age double 나이
size 크기 enum (소형, 중형, 대형)
walk_count int 누적 산책 수치
walk_time int 누적 산책 시간
last_walk_at datetime(6) 마지막 산책 시각
eat_meal 식사 여부 enum (YES, NO)
created_at datetime(6) 생성 시각
updated_at datetime(6) 수정 시각

8. pet_walk_records

속성명 타입 설명
id bigint 산책 기록 고유 식별자(PK)
pet_id bigint 반려동물 FK -> pets.id
source varchar(50) 산책 데이터 출처
walked_at datetime(6) 산책 기준 시각
step_count int 걸음 수
walk_time_seconds int 산책 시간(초)
distance_km double 이동 거리(km)
reward_amount int 적립 보상 수치
completed bit(1) 산책 완료 여부
status varchar(20) 산책 상태
started_at datetime(6) 산책 시작 시각
ended_at datetime(6) 산책 종료 시각
created_at datetime(6) 생성 시각
updated_at datetime(6) 수정 시각

9. products

속성명 타입 설명
id bigint 상품 고유 식별자(PK)
name varchar(200) 상품명
product_type 상품 유형 enum (INSURANCE, PET_FOREST, SAVINGS, CARD, SUBSCRIPTION)
description varchar(1000) 상품 설명
url varchar(255) 상품 링크
benefit_rate decimal(10,2) 혜택 비율
benefit_amount decimal(19,2) 혜택 금액
benefit_limit_amount decimal(19,2) 혜택 한도 금액
benefit_limit_count int 혜택 한도 횟수
benefit_period 한도 기간 enum (MONTH, YEAR)
target_category varchar(255) 타겟 카테고리
source_type 참조 데이터 소스 enum (ACCOUNT_BOOK, ACCOUNT)
is_active bit(1) 활성 여부
created_at datetime(6) 생성 시각
updated_at datetime(6) 수정 시각

10. transactions

속성명 타입 설명
id bigint 거래 고유 식별자(PK)
send_user_id bigint 송신 사용자 FK -> users.id
receive_user_id bigint 수신 사용자 FK -> users.id
account_id bigint 계좌 FK -> accounts.id
amount decimal(19,2) 거래 금액
type 거래 유형 enum (IN, OUT)
category varchar(100) 거래 카테고리
created_at datetime(6) 거래 생성 시각

11. verifications

속성명 타입 설명
id bigint 인증 레코드 고유 식별자(PK)
user_id bigint 사용자 FK -> users.id
identifier varchar(255) 인증 식별자
token varchar(255) 인증 토큰
expires_at datetime(6) 만료 시각
created_at datetime(6) 생성 시각

12. average_medical_cost

속성명 타입 설명
id bigint 평균 진료비 레코드 고유 식별자(PK)
category varchar(255) 비용 분류. 예: 진찰, 입원, 백신접종
item varchar(255) 세부 항목명. 예: 초진 진찰료, 입원비
species varchar(255) 반려동물 종 기준값. DOG, CAT, ALL
size varchar(255) 반려동물 크기 기준값. SMALL, MEDIUM, LARGE, ALL
avg_cost integer 해당 조건의 평균 비용 금액

13. feeding_schedules

속성명 타입 설명
id bigint 급여 스케줄 고유 식별자(PK)
pet_id bigint 반려동물 FK -> pets.id
first_feed_time time 첫 급여 시작 시각
meals_per_day integer 하루 급여 횟수
custom_amount_g integer 사용자가 직접 입력한 1일 총 급여량(g), null이면 종/나이 기준으로 계산
created_at datetime(6) 생성 시각
updated_at datetime(6) 수정 시각

14. refresh_tokens

속성명 타입 설명
id bigint 리프레시 토큰 레코드 고유 식별자(PK)
user_id bigint 사용자 FK -> users.id
token varchar(512) JWT 리프레시 토큰 문자열
expires_at datetime(6) 토큰 만료 시각
created_at datetime(6) 토큰 생성 시각

🧱 시스템 구성도

최조조종 금쪽같은 내새끼 아키텍처 drawio 1

[Frontend]

사용자 입력 흐름, 화면 전환, 클라이언트 상태 관리 담당

  • SPRING_API_URL, NEXT_PUBLIC_SPRING_API_URL: Next.js App Router 기반 UI 구현
  • AUTH_SECRET, AUTH_URL: NextAuth 기반 인증 세션 처리
  • RESEND_API_KEY, RESEND_FROM: 메일 전송
  • GEMINI_API_KEY, GEMINI_TTS_VOICE_NAME: 음성 인식 및 TTS 인터페이스 제공
  • CAPACITOR_SERVER_URL: Capacitor iOS 연동을 통한 건강 데이터 활용

[Backend]

Spring Boot 기반 REST API 제공, 비즈니스 로직 수행

  • DB 접속 정보: MySQL 기반 반려동물/소비/건강 데이터 관리
  • JWT 시크릿: JWT 인증/인가 처리
  • Google Vision 인증키 경로: Google Vision OCR 연동
  • AWS S3 endpoint/bucket 설정: S3 업로드 URL 발급 및 파일 처리
  • Gemini/Google AI 관련 설정: Spring AI + Gemini 기반 대화 응답 처리, 재정 리포트 및 추천 로직 수행

[외부 연동 서비스]

  • MySQL
  • Google Vision OCR
  • Gemini
  • AWS S3
  • Resend
  • Capacitor iOS Health 연동

📡 API

  • Auth : 로그인, 회원가입, OTP, 토큰 갱신, 비밀번호 재설정
  • Pets : 반려동물 등록/조회/수정/삭제, 산책 기록
  • Medical : OCR, 병원기록 등록/조회
  • Vaccination : 접종/검진 일정 등록 및 조회
  • Finance : 가계부, 대시보드, 월간 요약
  • Report : 재정 리포트, 월별 지출 차트
  • Products : 상품 목록, 상세, 맞춤 추천
  • Alarm : 오늘 일정/급여/산책 알림
  • Talk : 음성 질의응답

📺 시연 영상

시연 영상 보러가기

⚠️ 주의사항

Clone 후, FE/BE 폴더별 패키지 설치 및 설정 각각 필요

1. 'FE' 폴더 실행/설치

> cd FE
> pnpm install
> pnpm dev

2. 'BE' 폴더 실행/환경설정

  • docker port: 3330
  • gradle 사용
cd BE
docker compose up -d
./gradlew bootRun

3. 배포

  • 배포용 브랜치는 dev로, pr 후 Actions 탭에서 정상 작동되는지 꼭! 확인!하세요.

🤔 회고

<팀>

금쪽같은 내새끼 PPT_page-0034

<하나은행>

이번 최종 발표 질의응답을 통해 우리 서비스의 강점과 보완해야 할 비즈니스적 한계를 명확히 파악할 수 있었습니다. 실제 서비스 운영과 수익 창출을 위한 현실적인 고민에 대한 인사이트를 얻었습니다.

  1. 서비스 정체성과 유저 시나리오의 구체화
  • 피드백: "가족 금융 서비스의 정의가 모호하다. 현재 구조는 개인 통장인데 가족 금융으로 어떻게 확장되는가?"
  • 인사이트: '가족 금융'이라는 방향성에 대해 단순한 '확장성'을 언급하는 것만으로는 설득력이 다소 부족했습니다. 추후에는 "부부 공동 펫 케어 통장"이나 "가족 구성원 간 반려동물 지출/산책 기록 공유 기능" 등 개인 통장에서 가족 단위 서비스로 넘어가는 구체적인 전환 플로우와 UI/UX 시나리오가 뒷받침되어야 함을 깨달았습니다.
  1. 킬러 기능 및 비즈니스 모델 다각화
  • 피드백: "보험 청구 서비스는 왜 없는가? 단순 상품 연계 수수료 외에 수익 모델은 무엇인가?"
  • 인사이트: 사용자를 락인시키기 위해서는 단순한 상품 추천과 함께, 사용자가 실질적인 편리함을 느끼는 '간편 보험 청구' 같은 핵심 기능이 필요하다는 지적을 받았습니다. 또한, 금융 상품 가입 유도 수수료 외에 데이터 기반의 프리미엄 리포트 제공, 제휴처(동물병원, 용품점) 타겟 광고 등 수익 모델(BM)을 더욱 다각화해야 한다는 숙제를 얻었습니다.
  1. 기술 도입의 비용 문제와 데이터 가치 증명
  • 피드백: "LLM 토큰 비용은 감당 가능한가?"
  • 인사이트: 생성형 Gemini 등 AI 도입 시 필연적으로 발생하는 운영 비용에 대한 날카로운 질문이었습니다. 이에 대해 '프롬프트 최적화를 통한 비용 절감 노력'을 어필한 것은 좋은 방어였습니다. 더 나아가, 사용자가 업로드하는 영수증 OCR 데이터와 대화 기록이 향후 하나은행 자체 LLM 모델 고도화를 위한 귀중한 반려동물 특화 데이터셋으로 활용될 수 있다는 점을 연계한 것은 우리 서비스의 데이터 자산 가치를 성공적으로 증명한 순간이었습니다.
  1. 타겟 마케팅 및 외부 서비스 연계 전략
  • 피드백: "어떻게 마케팅하여 사용자를 끌어모을 것인가?"
  • 인사이트 (팀 대응): 선우 님이 답변하신 "반려동물 접종 기록을 활용한 하나은행 트래블로그(여행) 및 펫 프렌들리 카페 연계 마케팅"은 기획의 가치를 크게 높인 훌륭한 전략이었습니다. 다만, 이렇게 매력적이고 설득력 있는 마케팅 포인트가 발표 PPT 자료에 명시적으로 담기지 않아 심사위원들을 선제적으로 설득하지 못한 점은 아쉬움으로 남습니다. 좋은 기획은 코드뿐만 아니라 발표 스토리텔링에도 적극적으로 녹여내야 한다는 것을 배웠습니다.

Popular repositories Loading

  1. .github .github Public

    보이스 / 알람 기반 시니어 반려가구를 위한 생활금융 서비스

  2. MGK MGK Public

    보이스 / 알람 기반 시니어 반려가구를 위한 생활금융 서비스

    TypeScript 1

Repositories

Showing 2 of 2 repositories

Top languages

Loading…

Most used topics

Loading…