📘 Personal Finance Tracker - PRD (Product Requirements Document)
개인 사용자 1인을 위한 금융 자산(주식 및 암호화폐) 관리 시스템.
Streamlit 기반의 웹 앱으로 구성되며, PostgreSQL을 사용하여 데이터를 저장하고 관리한다. 주기적인 자산 현황 확인 및 수익률 계산을 위해 Airflow를 사용하여 자동화된 워크플로를 구현한다. Docker를 통해 쉽게 배포하고 관리할 수 있다.
여러 금융 플랫폼(증권사, 암호화폐 거래소)의 자산 데이터를 통합하여 한 눈에 확인
일일 수익률, 자산 구성 비율 등의 시각화를 통해 자산 흐름 파악
입출금 및 거래 기록의 수동 등록 또는 자동 동기화 지원
주기적 자산 현황 확인 : Airflow를 활용하여 매일 자산 데이터를 자동으로 업데이트
혼자만 사용하는 경량화된 구조로 구현
개인 투자자 1인
다양한 자산을 통합해 관리하고 싶은 사용자
외부 클라우드 서비스나 구독제 모델을 원치 않는 사용자
✅ 수동 등록 (초기 입력, CSV 업로드 등)
🔄 API를 통한 실시간 시세 반영
바이낸스, Bitget, Bithumb (암호화폐)
한국투자증권 (향후 지원)
💾 PostgreSQL에 최신 잔고 저장
📥 입금, 출금, 매수, 매도 기록 수동 입력
🗂 거래 내역 필터링 및 정렬 기능
📄 CSV 내보내기 지원
📆 일일 기준 자산 가치 계산
💹 일일 수익률 및 총 수익률 시각화
⏳ 백테스트 가능하도록 과거 기록 저장
💰 총 자산, 수익률, 전일 대비 증감률
📊 Pie Chart: 자산 카테고리 비율
📈 Line Chart: 일별 자산 가치 변화
🧾 최근 거래 내역 테이블
🔐 API 키 관리 (로컬에서 환경변수로 저장)
📄 초기 설정 파일 (예: JSON, TOML)
🧹 데이터 초기화 기능
🔄 Airflow 를 활용한 자동화 워크플로 설정
매일 자산 시세 동기화 및 평가 금액 계산
Airflow DAG로 자동 실행 (주기 설정: 매일, 매주 등)
Airflow UI에서 상태 및 로그 확인
실패한 작업은 알림 시스템으로 처리 (이메일/Slack)
항목
내용
언어
Python
프레임워크
Streamlit
DB
PostgreSQL
시각화
Plotly
API 연동
requests, aiohttp, 또는 거래소 SDK
워크플로 관리
Airflow
환경 관리
.env, dotenv, 환경변수 사용
배포
Docker, Docker Compose
필드
타입
설명
id
SERIAL
PK
name
TEXT
자산명 (예: 비트코인)
symbol
TEXT
심볼 (예: BTC, AAPL)
category
TEXT
암호화폐 / 주식 등
platform
TEXT
거래소 또는 증권사
current_price
NUMERIC
현재 시세
quantity
NUMERIC
보유 수량
created_at
TIMESTAMP
등록일
필드
타입
설명
id
SERIAL
PK
asset_id
INTEGER
FK -> assets.id
type
TEXT
매수/매도/입금/출금
quantity
NUMERIC
수량
price
NUMERIC
단가
timestamp
TIMESTAMP
거래 일시
daily_performance - 수익률 캐싱용
필드
타입
설명
date
DATE
일자
total_value
NUMERIC
총 자산 평가액
profit
NUMERIC
당일 수익률(%)
주차
내용
1주차
DB 설계 및 Streamlit 초기 레이아웃 구성
2주차
자산 수동 등록 + 거래 내역 UI 구현
3주차
API 연동 (바이낸스, Bitget, Bithumb)
4주차
수익률 계산, 대시보드 구성 완료
5주차
Airflow 워크플로 자동화 설정
6주차
테스트 및 CSV 업로드/다운로드 기능 추가
7주차
Docker 설정 및 배포 준비
리밸런싱 추천 (자산 비율 기반)
자동 알림 (특정 수익률 초과/미달 시)
백업/복원 기능
Telegram 연동으로 일일 리포트 발송
Docker 및 Docker Compose를 활용한 컨테이너화
각 서비스별 컨테이너 구성:
Streamlit 웹 앱
PostgreSQL 데이터베이스
Airflow 웹서버 및 스케줄러
환경별 설정 파일 분리 (.env.dev, .env.prod)
볼륨 마운트를 통한 데이터 영속성 보장
자동 백업 및 복원 스크립트 지원