시스템아키텍처까지 완료.
This commit is contained in:
parent
79432dde8a
commit
00e33342df
9
.claude/settings.local.json
Normal file
9
.claude/settings.local.json
Normal file
@ -0,0 +1,9 @@
|
||||
{
|
||||
"permissions": {
|
||||
"allow": [
|
||||
"Read(/d:\\개인폴더\\개발\\ai_invest\\설계\\01/**)"
|
||||
],
|
||||
"deny": [],
|
||||
"ask": []
|
||||
}
|
||||
}
|
132
설계/01/1차 개발 workflow.md
Normal file
132
설계/01/1차 개발 workflow.md
Normal file
@ -0,0 +1,132 @@
|
||||
# I'm AI 투자매니저 1차 개발 Workflow
|
||||
|
||||
## 개발 개요
|
||||
- **프로젝트명**: Invest Manager AI (I'm AI)
|
||||
- **목표**: 무료 웹 기반 AI 투자 분석 서비스 MVP 개발
|
||||
- **개발 범위**: 코인 5종 + 주식 5종 투자 분석 및 시뮬레이션
|
||||
|
||||
## 필요 설계 문서 목록
|
||||
|
||||
### 1. 요구사항 정의서 (Requirements Specification)
|
||||
**파일명**: `요구사항정의서.md`
|
||||
**목적**: 서비스 기능 및 비기능적 요구사항 명세
|
||||
**주요 내용**:
|
||||
- 기능적 요구사항 (실시간 가격 조회, AI 분석, 시뮬레이션 등)
|
||||
- 비기능적 요구사항 (성능, 보안, 확장성)
|
||||
- 사용자 스토리 및 유스케이스
|
||||
- MVP 범위 정의
|
||||
|
||||
### 2. 시스템 아키텍처 설계서 (System Architecture)
|
||||
**파일명**: `시스템아키텍처.md`
|
||||
**목적**: 전체 시스템 구조 및 기술 스택 정의
|
||||
**주요 내용**:
|
||||
- **프론트엔드**: React/Vue.js + TypeScript
|
||||
- **데이터 수집**: 업비트 WebSocket API, 야후파이낸스 API
|
||||
- **클라우드**: AWS (Lambda, S3, API Gateway)
|
||||
- **로컬 분석**: Airflow + AI 분석 엔진
|
||||
- **데이터베이스**: 수집 데이터 및 AI활용 데이터 관리(로컬서버에 DB구축)
|
||||
- **컴포넌트 다이어그램** 및 **데이터 플로우**
|
||||
|
||||
### 3. DB 설계서 (Database Design)
|
||||
**파일명**: `DB설계서.md`
|
||||
**목적**: 데이터베이스 구조 및 테이블 설계
|
||||
**주요 테이블**:
|
||||
- **투자상품 테이블** (symbols): 코인/주식 기본 정보
|
||||
- **AI분석결과 테이블** (ai_analysis): 목표가, 손절가, 진입가, 매력도점수, AI요청 정보들
|
||||
- **가격데이터 테이블** (invest_candle_data): 투자상품 캔들데이터 (AI분석 활용)
|
||||
- **뉴스정보 테이블** (news_info): 뉴스 수집 데이터 (AI분석 활용)
|
||||
|
||||
### 4. API 설계서 (API Specification)
|
||||
**파일명**: `API설계서.md`
|
||||
**목적**: Lambda에서 S3에 저장된 데이터 수신
|
||||
**주요 API**:
|
||||
- `GET /api/web/main` - 웹 - 메인페이지 랜딩시 필요한 데이터
|
||||
- `GET /api/web/invest/{product}` - 웹 - 투자상품 클릭시 필요한 데이터
|
||||
|
||||
### 5. 화면 설계서 (UI/UX Design)
|
||||
**파일명**: `화면설계서/`
|
||||
**목적**: 웹페이지 레이아웃 및 사용자 인터페이스 설계
|
||||
**구성요소**:
|
||||
- **메인 대시보드**: 투자상품 그리드 + 실시간 가격
|
||||
- **상세 분석 패널**: AI 분석 결과 + 캔들차트
|
||||
- **수익률 시뮬레이션**: AI 분석 결과 + 계산 결과
|
||||
- **설정 패널**: 개인 맞춤 옵션
|
||||
- **모바일 반응형** 레이아웃
|
||||
|
||||
### 6. 프로그램 목록 및 구조 (Program Structure)
|
||||
**파일명**: `프로그램목록.md`
|
||||
**목적**: 소스코드 구조 및 주요 모듈 정의
|
||||
**디렉토리 구조**:
|
||||
```
|
||||
ai_invest/
|
||||
├── frontend/ # React 웹앱
|
||||
├── airflow/ # 뉴스 수집, 캔들 데이터 수집, 실시간 가격 감지, AI 분석, AWS 배포
|
||||
└── docs/ # 문서
|
||||
```
|
||||
|
||||
### 7. 데이터 수집 설계서 (Data Collection Design)
|
||||
**파일명**: `데이터수집설계서.md`
|
||||
**목적**: 실시간 데이터 수집 및 처리 방식 정의
|
||||
**주요 내용**:
|
||||
- **업비트** 실시간 가격 확인(목표가, 손절가, 진입가 도달에 따른 플래그 발생), 캔들 데이터 수집
|
||||
- **야후파이낸스 API** 호출 제한 관리
|
||||
- **데이터 정규화** 및 저장 로직 (AWS-S3)
|
||||
- **실시간 스트리밍** 아키텍처
|
||||
|
||||
### 8. AI 분석 엔진 설계서 (AI Analysis Design)
|
||||
**파일명**: `AI분석설계서.md`
|
||||
**목적**: AI 투자 분석 로직
|
||||
**주요 내용**:
|
||||
- **AI프롬프트 작성** 좋은 결과를 얻기위해서는 좋은 입력이 필요
|
||||
- **비용 절감** AI입출력을 효율적으로 설계해서 AI API 사용 비용 절감
|
||||
|
||||
## 개발 단계별 진행 순서
|
||||
|
||||
### Phase 1: 설계 및 기획 (1주차)
|
||||
1. 요구사항 정의서 작성
|
||||
2. 시스템 아키텍처 설계
|
||||
3. DB 설계 및 API 스펙 정의
|
||||
4. 화면 설계 및 프로토타입
|
||||
|
||||
### Phase 2: 데이터 레이어 개발 (2주차)
|
||||
1. AWS(Lambda, API gateway, S3) 구축
|
||||
2. 데이터 수집 모듈 개발 (AIRFLOW)
|
||||
3. AI 분석 프롬프트 작성 (AIRFLOW)
|
||||
|
||||
### Phase 3: 프론트엔드 개발 (3주차)
|
||||
1. 메인 대시보드 개발
|
||||
2. 실시간 가격 연동
|
||||
3. AI 분석 결과 표시
|
||||
4. 수익률 시뮬레이션 구현
|
||||
|
||||
## 핵심 기술 스택
|
||||
|
||||
### Frontend
|
||||
- **Framework**: React 18 + TypeScript
|
||||
- **State Management**: Zustand/Redux Toolkit
|
||||
- **Chart Library**: Chart.js / TradingView Widgets
|
||||
- **UI Framework**: Tailwind CSS + shadcn/ui
|
||||
- **Build Tool**: Vite
|
||||
- **WebSocket**: Socket.IO
|
||||
|
||||
### Data & AI
|
||||
- **ETL**: AIRFLOW
|
||||
- **AI**: gemini, openAI
|
||||
|
||||
### Infrastructure
|
||||
- **Cloud**: AWS (Lambda, API Gateway, S3)
|
||||
- **CDN**: CloudFront
|
||||
|
||||
## 성공 지표 (KPI)
|
||||
|
||||
### 기술적 KPI
|
||||
- **응답시간**: API 응답 < 500ms
|
||||
- **실시간성**: 가격 업데이트 지연 < 1초
|
||||
- **가용성**: 99.5% 이상 업타임
|
||||
- **동시사용자**: 1,000명 지원
|
||||
|
||||
### 비즈니스 KPI
|
||||
- **DAU**: 일 100명 사용자
|
||||
- **체류시간**: 평균 5분 이상
|
||||
- **클릭률**: 투자항목 클릭률 30% 이상
|
||||
- **재방문률**: 주간 40% 이상
|
342
설계/01/1차 시스템아키텍처.md
Normal file
342
설계/01/1차 시스템아키텍처.md
Normal file
@ -0,0 +1,342 @@
|
||||
# I'm AI 투자매니저 시스템 아키텍처 설계서
|
||||
|
||||
## 1. 개요
|
||||
|
||||
### 1.1 문서 목적
|
||||
I'm AI 투자매니저 시스템의 전체 아키텍처를 정의하여 개발 가이드라인 및 기술적 의사결정 근거 제공
|
||||
|
||||
### 1.2 시스템 개요
|
||||
- **서비스명**: I'm AI 투자매니저
|
||||
- **아키텍처 패턴**: 하이브리드 클라우드 아키텍처 (로컬 + AWS)
|
||||
- **배포 전략**: 서버리스 + 로컬 데이터 처리
|
||||
- **확장성**: 마이크로서비스 기반 확장 가능
|
||||
|
||||
## 2. 전체 시스템 아키텍처
|
||||
|
||||
### 2.1 시스템 구성도
|
||||
```
|
||||
┌─────────────────────────────────────────────────────────────────┐
|
||||
│ 사용자 (웹브라우저) │
|
||||
└─────────────────────┬───────────────────────────────────────────┘
|
||||
│ HTTPS
|
||||
┌─────────────────────▼───────────────────────────────────────────┐
|
||||
│ AWS CloudFront (CDN) │
|
||||
└─────────────────────┬───────────────────────────────────────────┘
|
||||
│
|
||||
┌─────────────────────▼───────────────────────────────────────────┐
|
||||
│ React Frontend App │
|
||||
│ (S3 Static Hosting) │
|
||||
└─────────────────────┬───────────────────────────────────────────┘
|
||||
│ API Calls
|
||||
┌─────────────────────▼───────────────────────────────────────────┐
|
||||
│ AWS API Gateway │
|
||||
└─────────────────────┬───────────────────────────────────────────┘
|
||||
│
|
||||
┌─────────────────────▼───────────────────────────────────────────┐
|
||||
│ AWS Lambda Functions │
|
||||
│ ┌─────────────────┬─────────────────┬─────────────────────────┐ │
|
||||
│ │ Main API │ Product API │ WebSocket API │ │
|
||||
│ │ Lambda │ Lambda │ Lambda │ │
|
||||
│ └─────────────────┴─────────────────┴─────────────────────────┘ │
|
||||
└─────────────────────┬───────────────────────────────────────────┘
|
||||
│ Data Fetch
|
||||
┌─────────────────────▼───────────────────────────────────────────┐
|
||||
│ AWS S3 Bucket │
|
||||
│ (AI 분석 결과 JSON 파일) │
|
||||
└─────────────────────▲───────────────────────────────────────────┘
|
||||
│ Data Upload
|
||||
┌─────────────────────┴───────────────────────────────────────────┐
|
||||
│ 로컬 데이터 처리 서버 │
|
||||
│ ┌─────────────────────────────────────────────────────────────┐ │
|
||||
│ │ Apache Airflow │ │
|
||||
│ │ ┌───────────────┬───────────────┬──────────────────────────┐ │ │
|
||||
│ │ │ 데이터 수집 │ AI 분석 │ S3 업로드 │ │ │
|
||||
│ │ │ DAGs │ DAGs │ DAGs │ │ │
|
||||
│ │ └───────────────┴───────────────┴──────────────────────────┘ │ │
|
||||
│ └─────────────────────────────────────────────────────────────┘ │
|
||||
│ ┌─────────────────────────────────────────────────────────────┐ │
|
||||
│ │ 로컬 데이터베이스 │ │
|
||||
│ │ (PostgreSQL / MySQL / SQLite) │ │
|
||||
│ └─────────────────────────────────────────────────────────────┘ │
|
||||
└─────────────────────┬───┬───────────────────────────────────────┘
|
||||
│ │
|
||||
┌───────────▼───▼──────────────┐
|
||||
│ 외부 API 서비스 │
|
||||
│ ┌─────────────┬─────────────┐│
|
||||
│ │ 업비트 API │ 야후파이낸스 ││
|
||||
│ │ (코인 데이터)│ (주식 데이터) ││
|
||||
│ └─────────────┴─────────────┘│
|
||||
│ ┌─────────────┬─────────────┐│
|
||||
│ │ 뉴스 API │ AI API ││
|
||||
│ │ (뉴스 데이터)│(Gemini/GPT) ││
|
||||
│ └─────────────┴─────────────┘│
|
||||
└─────────────────────────────────┘
|
||||
```
|
||||
|
||||
## 3. 계층별 아키텍처 설계
|
||||
|
||||
### 3.1 프레젠테이션 계층 (Frontend)
|
||||
|
||||
#### 3.1.1 기술 스택
|
||||
- **Framework**: React 18 + TypeScript
|
||||
- **State Management**: Zustand (가벼운 상태관리)
|
||||
- **Styling**: Tailwind CSS + shadcn/ui
|
||||
- **Chart Library**: Chart.js + TradingView Widgets
|
||||
- **Build Tool**: Vite
|
||||
- **WebSocket**: Socket.IO Client
|
||||
|
||||
#### 3.1.2 컴포넌트 구조
|
||||
```
|
||||
src/
|
||||
├── components/
|
||||
│ ├── common/ # 공통 컴포넌트
|
||||
│ ├── dashboard/ # 대시보드 관련
|
||||
│ ├── product/ # 투자상품 상세
|
||||
│ ├── simulation/ # 수익률 시뮬레이션
|
||||
│ └── charts/ # 차트 컴포넌트
|
||||
├── hooks/ # 커스텀 훅
|
||||
├── stores/ # Zustand 상태관리
|
||||
├── services/ # API 서비스
|
||||
├── utils/ # 유틸리티
|
||||
└── types/ # TypeScript 타입
|
||||
```
|
||||
|
||||
#### 3.1.3 주요 기능
|
||||
- **실시간 가격 표시**: WebSocket 연결
|
||||
- **반응형 디자인**: 모바일/데스크톱 대응
|
||||
- **캐싱 전략**: React Query로 데이터 캐싱
|
||||
- **성능 최적화**: Code Splitting, Lazy Loading
|
||||
|
||||
### 3.2 API 계층 (AWS Lambda)
|
||||
|
||||
#### 3.2.1 Lambda 함수 구성
|
||||
```
|
||||
lambda-functions/
|
||||
├── main-api/ # 메인 페이지 API
|
||||
│ ├── handler.py
|
||||
│ └── requirements.txt
|
||||
├── product-api/ # 투자상품 상세 API
|
||||
│ ├── handler.py
|
||||
│ └── requirements.txt
|
||||
└── websocket-api/ # 실시간 데이터 API
|
||||
├── handler.py
|
||||
└── requirements.txt
|
||||
```
|
||||
|
||||
#### 3.2.2 API 설계
|
||||
- **GET /api/web/main**
|
||||
- 메인페이지 데이터 (전체 투자상품 리스트)
|
||||
- 응답: JSON (투자상품 기본정보 + AI분석 요약)
|
||||
|
||||
- **GET /api/web/invest/{product}**
|
||||
- 투자상품 상세 데이터
|
||||
- 응답: JSON (상세 AI분석 + 캔들데이터 + 뉴스)
|
||||
|
||||
- **WebSocket /ws/realtime**
|
||||
- 실시간 가격 업데이트
|
||||
- 메시지: JSON (상품ID + 현재가 + 등락률)
|
||||
|
||||
### 3.3 데이터 계층 (로컬 서버)
|
||||
|
||||
#### 3.3.1 Apache Airflow 구성
|
||||
```
|
||||
airflow/
|
||||
├── dags/
|
||||
│ ├── collect_crypto_data.py # 코인 데이터 수집
|
||||
│ ├── collect_stock_data.py # 주식 데이터 수집
|
||||
│ ├── collect_news_data.py # 뉴스 데이터 수집
|
||||
│ ├── ai_analysis.py # AI 분석 수행
|
||||
│ └── upload_to_s3.py # S3 업로드
|
||||
├── plugins/
|
||||
│ ├── api_connectors/ # 외부 API 연결
|
||||
│ └── ai_processors/ # AI 분석 엔진
|
||||
└── config/
|
||||
└── airflow.cfg
|
||||
```
|
||||
|
||||
#### 3.3.2 데이터 파이프라인
|
||||
1. **데이터 수집 (매 5분)**: 업비트/야후파이낸스 API 호출
|
||||
2. **데이터 정규화**: 수집 데이터 표준화 및 검증
|
||||
3. **AI 분석 (매 24시간)**: 수집된 데이터로 AI 분석 수행
|
||||
4. **결과 업로드**: 분석 결과를 JSON 형태로 S3 업로드
|
||||
|
||||
### 3.4 데이터베이스 설계
|
||||
|
||||
#### 3.4.1 데이터베이스 선택
|
||||
- **DBMS**: PostgreSQL 15+
|
||||
- **이유**: JSON 지원, 확장성, 안정성
|
||||
|
||||
#### 3.4.2 주요 테이블 구조
|
||||
```sql
|
||||
-- 투자상품 기본정보
|
||||
CREATE TABLE symbols (
|
||||
id SERIAL PRIMARY KEY,
|
||||
symbol VARCHAR(20) UNIQUE NOT NULL,
|
||||
name VARCHAR(100) NOT NULL,
|
||||
type VARCHAR(10) NOT NULL, -- 'CRYPTO' or 'STOCK'
|
||||
market VARCHAR(20) NOT NULL,
|
||||
is_active BOOLEAN DEFAULT true,
|
||||
created_at TIMESTAMP DEFAULT NOW()
|
||||
);
|
||||
|
||||
-- AI 분석결과
|
||||
CREATE TABLE ai_analysis (
|
||||
id SERIAL PRIMARY KEY,
|
||||
symbol_id INTEGER REFERENCES symbols(id),
|
||||
target_price DECIMAL(20,8),
|
||||
stop_loss_price DECIMAL(20,8),
|
||||
entry_price DECIMAL(20,8),
|
||||
attractiveness_score INTEGER, -- 1-100점
|
||||
analysis_content TEXT,
|
||||
related_news JSON,
|
||||
analysis_date TIMESTAMP DEFAULT NOW()
|
||||
);
|
||||
|
||||
-- 캔들 데이터
|
||||
CREATE TABLE invest_candle_data (
|
||||
id SERIAL PRIMARY KEY,
|
||||
symbol_id INTEGER REFERENCES symbols(id),
|
||||
open_price DECIMAL(20,8),
|
||||
high_price DECIMAL(20,8),
|
||||
low_price DECIMAL(20,8),
|
||||
close_price DECIMAL(20,8),
|
||||
volume DECIMAL(20,8),
|
||||
candle_time TIMESTAMP,
|
||||
created_at TIMESTAMP DEFAULT NOW()
|
||||
);
|
||||
|
||||
-- 뉴스 정보
|
||||
CREATE TABLE news_info (
|
||||
id SERIAL PRIMARY KEY,
|
||||
symbol_id INTEGER REFERENCES symbols(id),
|
||||
title VARCHAR(500),
|
||||
content TEXT,
|
||||
source VARCHAR(100),
|
||||
published_at TIMESTAMP,
|
||||
url VARCHAR(1000),
|
||||
created_at TIMESTAMP DEFAULT NOW()
|
||||
);
|
||||
```
|
||||
|
||||
## 4. 클라우드 아키텍처 (AWS)
|
||||
|
||||
### 4.1 AWS 서비스 구성
|
||||
- **S3**: 정적 웹사이트 호스팅 + AI 분석 결과 저장
|
||||
- **CloudFront**: CDN (전세계 캐시)
|
||||
- **API Gateway**: API 엔드포인트 관리
|
||||
- **Lambda**: 서버리스 API 처리
|
||||
- **IAM**: 권한 관리
|
||||
|
||||
### 4.2 S3 버킷 구조
|
||||
```
|
||||
ai-invest-bucket/
|
||||
├── web-assets/ # React 빌드 파일
|
||||
│ ├── index.html
|
||||
│ ├── static/
|
||||
│ └── assets/
|
||||
└── data/ # AI 분석 결과
|
||||
├── main/
|
||||
│ └── latest.json # 메인 페이지 데이터
|
||||
└── products/
|
||||
├── BTC.json # 코인별 상세 데이터
|
||||
├── ETH.json
|
||||
├── AAPL.json # 주식별 상세 데이터
|
||||
└── ...
|
||||
```
|
||||
|
||||
### 4.3 보안 설정
|
||||
- **HTTPS Only**: CloudFront SSL/TLS 인증서
|
||||
- **CORS 설정**: API Gateway CORS 정책
|
||||
- **API 키 관리**: AWS Systems Manager Parameter Store
|
||||
|
||||
## 5. 데이터 플로우
|
||||
|
||||
### 5.1 실시간 데이터 플로우
|
||||
```
|
||||
외부 API → Airflow DAG → 로컬 DB → S3 업로드 → Lambda → Frontend
|
||||
↓ ↑
|
||||
WebSocket ──────────────────────────────────────────────┘
|
||||
```
|
||||
|
||||
### 5.2 사용자 요청 플로우
|
||||
```
|
||||
사용자 → CloudFront → S3 (React App) → API Gateway → Lambda → S3 Data → 응답
|
||||
```
|
||||
|
||||
### 5.3 AI 분석 플로우
|
||||
```
|
||||
캔들데이터 + 뉴스데이터 → AI 프롬프트 생성 → AI API 호출 → 결과 파싱 → DB 저장 → S3 업로드
|
||||
```
|
||||
|
||||
## 6. 성능 최적화 전략
|
||||
|
||||
### 6.1 Frontend 최적화
|
||||
- **번들 최적화**: Code Splitting, Tree Shaking
|
||||
- **이미지 최적화**: WebP 포맷, Lazy Loading
|
||||
- **캐싱**: Service Worker, Browser Cache
|
||||
- **WebSocket**: 실시간 데이터만 필요시 연결
|
||||
|
||||
### 6.2 Backend 최적화
|
||||
- **Lambda Cold Start**: Provisioned Concurrency 설정
|
||||
- **데이터베이스**: 인덱싱, Connection Pooling
|
||||
- **S3**: CloudFront 캐시, Gzip 압축
|
||||
|
||||
### 6.3 비용 최적화
|
||||
- **Lambda**: 메모리 최적화, 실행시간 단축
|
||||
- **S3**: Intelligent Tiering, 불필요한 파일 정리
|
||||
- **AI API**: 배치 처리, 캐시 활용
|
||||
|
||||
## 7. 확장성 고려사항
|
||||
|
||||
### 7.1 수평적 확장
|
||||
- **투자상품 추가**: symbols 테이블에 데이터 추가만으로 확장
|
||||
- **Lambda 스케일링**: Auto Scaling 지원
|
||||
- **데이터베이스**: Read Replica 추가 가능
|
||||
|
||||
### 7.2 수직적 확장
|
||||
- **Airflow**: Worker 노드 추가
|
||||
- **데이터베이스**: 인스턴스 사양 업그레이드
|
||||
- **Lambda**: 메모리 증설
|
||||
|
||||
## 8. 모니터링 및 로깅
|
||||
|
||||
### 8.1 모니터링 구성
|
||||
- **AWS CloudWatch**: Lambda 메트릭, 로그 수집
|
||||
- **Airflow**: DAG 실행 상태 모니터링
|
||||
- **Database**: 성능 메트릭 수집
|
||||
|
||||
### 8.2 알람 설정
|
||||
- **API 응답시간** > 500ms 알람
|
||||
- **Lambda 에러율** > 1% 알람
|
||||
- **데이터 수집 실패** 알람
|
||||
|
||||
## 9. 개발 및 배포 전략
|
||||
|
||||
### 9.1 개발 환경
|
||||
```
|
||||
Local Development → Git Repository → GitHub Actions → AWS Deployment
|
||||
```
|
||||
|
||||
### 9.2 CI/CD 파이프라인
|
||||
- **Frontend**: Vite Build → S3 Upload → CloudFront Invalidation
|
||||
- **Backend**: Lambda Package → AWS SAM Deploy
|
||||
- **Database**: Migration Scripts 자동 실행
|
||||
|
||||
### 9.3 환경 분리
|
||||
- **Development**: 로컬 환경
|
||||
- **Staging**: AWS 환경 (소규모)
|
||||
- **Production**: AWS 환경 (본격 서비스)
|
||||
|
||||
## 10. 기술 선택 근거
|
||||
|
||||
### 10.1 React vs Vue.js
|
||||
- **선택**: React 18
|
||||
- **근거**: 더 큰 생태계, TypeScript 지원 우수, 개발자 풀 확보 용이
|
||||
|
||||
### 10.2 Zustand vs Redux
|
||||
- **선택**: Zustand
|
||||
- **근거**: 더 간단한 API, 보일러플레이트 최소화, 번들 사이즈 작음
|
||||
|
||||
### 10.3 PostgreSQL vs MySQL
|
||||
- **선택**: PostgreSQL
|
||||
- **근거**: JSON 지원 우수, 확장성, 오픈소스 안정성
|
182
설계/01/1차 요구사항정의서.md
Normal file
182
설계/01/1차 요구사항정의서.md
Normal file
@ -0,0 +1,182 @@
|
||||
# I'm AI 투자매니저 요구사항 정의서
|
||||
|
||||
## 1. 프로젝트 개요
|
||||
|
||||
### 1.1 프로젝트명
|
||||
**Invest Manager AI (I'm AI)**
|
||||
|
||||
### 1.2 프로젝트 목적
|
||||
무료 웹 기반 AI 투자 분석 서비스 MVP를 개발하여 개인 투자자에게 실시간 투자 분석과 수익률 시뮬레이션을 제공
|
||||
|
||||
### 1.3 개발 범위
|
||||
- **투자 상품**: 코인 5종 + 주식 5종
|
||||
- **서비스 범위**: AI 투자 분석, 실시간 가격 모니터링, 수익률 시뮬레이션
|
||||
- **서비스 형태**: 웹 기반 무료 서비스
|
||||
|
||||
## 2. 기능적 요구사항 (Functional Requirements)
|
||||
|
||||
### 2.1 투자 상품 관리
|
||||
- **FR-001**: 시스템은 코인 5종(BTC, ETH, ADA, DOGE, XRP)의 실시간 가격을 표시해야 한다
|
||||
- **FR-002**: 시스템은 주식 5종(AAPL, GOOGL, TSLA, MSFT, NVDA)의 실시간 가격을 표시해야 한다
|
||||
- **FR-003**: 시스템은 각 투자 상품의 기본 정보(명칭, 현재가, 등락률)를 제공해야 한다
|
||||
|
||||
### 2.2 AI 투자 분석
|
||||
- **FR-004**: 시스템은 투자 상품별 AI 분석 결과를 제공해야 한다
|
||||
- 목표가 (Target Price)
|
||||
- 손절가 (Stop Loss)
|
||||
- 진입가 (Entry Price)
|
||||
- 매력도 점수 (Attractiveness Score)
|
||||
- 관련 근거 뉴스
|
||||
- AI 분석 내용
|
||||
- **FR-005**: AI 분석은 최신 뉴스 데이터와 캔들 데이터를 기반으로 수행되어야 한다
|
||||
- **FR-006**: AI 분석 결과는 24시간마다 업데이트되어야 한다
|
||||
|
||||
### 2.3 실시간 데이터 수집
|
||||
- **FR-007**: 시스템은 업비트 API를 통해 코인 가격을 실시간 수집해야 한다
|
||||
- **FR-008**: 시스템은 야후파이낸스 API를 통해 주식 가격을 실시간 수집해야 한다
|
||||
- **FR-009**: 시스템은 투자 상품 관련 뉴스를 수집해야 한다
|
||||
- **FR-010**: 시스템은 캔들 데이터(OHLCV)를 수집하고 저장해야 한다
|
||||
|
||||
### 2.4 수익률 시뮬레이션
|
||||
- **FR-011**: 시스템은 AI 분석 결과를 기반으로 수익률 시뮬레이션을 제공해야 한다
|
||||
- **FR-012**: 사용자는 투자 금액을 입력하여 예상 수익/손실을 계산할 수 있어야 한다
|
||||
- **FR-013**: 시뮬레이션 결과는 목표가 달성시, 손절가 도달시 시나리오를 포함해야 한다
|
||||
|
||||
### 2.5 사용자 인터페이스
|
||||
- **FR-014**: 메인 대시보드는 모든 투자 상품을 그리드 형태로 표시해야 한다
|
||||
- **FR-015**: 투자 상품 클릭시 상세 분석 패널이 표시되어야 한다
|
||||
- **FR-016**: 상세 패널은 캔들차트, AI 분석 결과, 수익률 시뮬레이션을 포함해야 한다
|
||||
- **FR-017**: 웹 인터페이스는 모바일 반응형으로 구현되어야 한다
|
||||
|
||||
## 3. 비기능적 요구사항 (Non-Functional Requirements)
|
||||
|
||||
### 3.1 성능 요구사항
|
||||
- **NFR-001**: API 응답시간은 500ms 이내여야 한다
|
||||
- **NFR-002**: 실시간 가격 업데이트 지연은 1초 이내여야 한다
|
||||
- **NFR-003**: 시스템은 동시 사용자 1,000명을 지원해야 한다
|
||||
- **NFR-004**: 페이지 로딩 시간은 3초 이내여야 한다
|
||||
|
||||
### 3.2 가용성 요구사항
|
||||
- **NFR-005**: 시스템 가용성은 99.5% 이상이어야 한다
|
||||
- **NFR-006**: 예정된 유지보수를 제외하고 월 다운타임은 3.6시간 이하여야 한다
|
||||
|
||||
### 3.3 확장성 요구사항
|
||||
- **NFR-007**: 투자 상품은 추가 개발 없이 확장 가능해야 한다
|
||||
- **NFR-008**: 서버리스 아키텍처로 자동 스케일링이 가능해야 한다
|
||||
|
||||
### 3.4 보안 요구사항
|
||||
- **NFR-009**: 모든 API 통신은 HTTPS를 사용해야 한다
|
||||
- **NFR-010**: API 키는 환경변수로 관리되어야 한다
|
||||
- **NFR-011**: 개인정보는 수집하지 않아야 한다 (무료 서비스)
|
||||
|
||||
### 3.5 데이터 요구사항
|
||||
- **NFR-012**: 가격 데이터는 실시간 업데이트되어야 한다
|
||||
- **NFR-013**: AI 분석용 데이터는 최소 90일간 보관되어야 한다
|
||||
- **NFR-014**: 데이터 백업은 일 1회 수행되어야 한다
|
||||
|
||||
## 4. 사용자 스토리 (User Stories)
|
||||
|
||||
### 4.1 메인 사용자 (개인 투자자)
|
||||
- **US-001**: "투자자로서, 관심 있는 투자 상품의 실시간 가격을 한눈에 볼 수 있기를 원한다"
|
||||
- **US-002**: "투자자로서, AI가 분석한 목표가와 손절가를 통해 투자 결정에 도움을 받고 싶다"
|
||||
- **US-003**: "투자자로서, 투자 금액에 따른 예상 수익률을 미리 계산해보고 싶다"
|
||||
- **US-004**: "투자자로서, 모바일에서도 편리하게 투자 정보를 확인하고 싶다"
|
||||
- **US-005**: "투자자로서, 별도 회원가입 없이 바로 서비스를 이용하고 싶다"
|
||||
|
||||
### 4.2 관리자
|
||||
- **US-006**: "관리자로서, 데이터 수집 상태와 AI 분석 결과를 모니터링하고 싶다"
|
||||
- **US-007**: "관리자로서, 시스템 성능과 사용자 현황을 실시간으로 확인하고 싶다"
|
||||
|
||||
## 5. 유스케이스 (Use Cases)
|
||||
|
||||
### 5.1 Primary Use Cases
|
||||
1. **투자 상품 조회**
|
||||
- Actor: 개인 투자자
|
||||
- Flow: 메인 페이지 접속 → 투자 상품 리스트 확인 → 실시간 가격 조회
|
||||
|
||||
2. **AI 분석 결과 확인**
|
||||
- Actor: 개인 투자자
|
||||
- Flow: 투자 상품 클릭 → AI 분석 결과 패널 표시 → 목표가/손절가/진입가 확인
|
||||
|
||||
3. **수익률 시뮬레이션**
|
||||
- Actor: 개인 투자자
|
||||
- Flow: 1000만원을 투자했다면?(고정) → 원하는 AI 분석 결과 체크 → 체크된 AI 분석 결과인 목표가/손절가/진입가를 기반한 수익률 계산 → 결과 확인
|
||||
|
||||
### 5.2 System Use Cases
|
||||
1. **데이터 수집**
|
||||
- Actor: System
|
||||
- Flow: API 호출 → 데이터 수집 → 정규화 → 저장 (로컬DB)
|
||||
|
||||
2. **AI 분석 수행**
|
||||
- Actor: System
|
||||
- Flow: 데이터 수집 → AI 프롬프트 생성 → AI API 호출 → 결과 저장 (로컬DB)
|
||||
|
||||
3. **AI 분석 결과 업데이트**
|
||||
- Actor: System
|
||||
- Flow: DB에서 데이터 읽어오기 → 데이터 가공 → AWS-S3 저장
|
||||
|
||||
## 6. MVP 범위 정의
|
||||
|
||||
### 6.1 MVP 포함 기능
|
||||
✅ **포함**
|
||||
- 코인 5종 + 주식 5종 실시간 가격 표시
|
||||
- AI 분석 결과 (목표가, 손절가, 진입가, 매력도)
|
||||
- 수익률 시뮬레이션
|
||||
- 반응형 웹 인터페이스
|
||||
- 실시간 데이터 수집 및 처리
|
||||
|
||||
### 6.2 MVP 미포함 기능
|
||||
❌ **미포함**
|
||||
- 사용자 회원가입/로그인
|
||||
- 포트폴리오 관리
|
||||
- 알림/푸시 서비스
|
||||
- 과거 데이터 분석
|
||||
- 커뮤니티 기능
|
||||
- 결제 시스템
|
||||
|
||||
## 7. 제약사항 및 전제조건
|
||||
|
||||
### 7.1 기술적 제약사항
|
||||
- 업비트 API 호출 제한 준수
|
||||
- 야후파이낸스 API 사용 정책 준수
|
||||
- AI API 비용 최적화 필요
|
||||
|
||||
### 7.2 비즈니스 제약사항
|
||||
- 무료 서비스로 운영 (광고로만 수익 창출)
|
||||
- 투자 권유 금지 (분석 정보만 제공)
|
||||
- 개인정보 수집 없음
|
||||
|
||||
### 7.3 전제조건
|
||||
- AWS 계정 및 서비스 사용 가능
|
||||
- 외부 API 서비스 정상 운영
|
||||
- 개발 및 운영 환경 구축 완료
|
||||
|
||||
## 8. 성공 기준
|
||||
|
||||
### 8.1 기술적 성공 기준
|
||||
- API 응답시간 < 500ms 달성
|
||||
- 시스템 가용성 99.5% 이상
|
||||
- 실시간 데이터 업데이트 지연 < 1초
|
||||
- 모바일 사용성 테스트 통과
|
||||
|
||||
### 8.2 비즈니스 성공 기준
|
||||
- DAU 100명 이상
|
||||
- 평균 세션 시간 5분 이상
|
||||
- 투자 상품 클릭률 30% 이상
|
||||
- 주간 재방문률 40% 이상
|
||||
|
||||
## 9. 위험 요소 및 대응책
|
||||
|
||||
### 9.1 기술적 위험
|
||||
- **위험**: 외부 API 서비스 중단
|
||||
- **대응**: 다중 API 소스 활용, 캐싱 전략 수립
|
||||
|
||||
- **위험**: AI API 비용 초과
|
||||
- **대응**: 사용량 모니터링, 비용 알람 설정
|
||||
|
||||
### 9.2 운영 위험
|
||||
- **위험**: 사용자 급증으로 인한 서비스 부하
|
||||
- **대응**: Auto Scaling 설정, 성능 모니터링
|
||||
|
||||
- **위험**: 데이터 정확성 이슈
|
||||
- **대응**: 데이터 검증 로직 구현, 모니터링 대시보드 구축
|
17
설계/앱아이디어.md
17
설계/앱아이디어.md
@ -17,6 +17,7 @@
|
||||
3. **알림 서비스**: 목표가, 손절가, 진입가 도달시 알림 제공
|
||||
4. **AI 추천**: 투자상품별 매수 점수 부여 및 고점수 상품 추천 알림
|
||||
5. **맞춤형 투자**: 사용자의 투자 성향에 맞는 투자 선택지 제공
|
||||
6. **수익률 시뮬레이션**: AI 분석 지표 기반 가상 투자 수익률 확인 서비스
|
||||
|
||||
## MVP 단계 개발 방향
|
||||
|
||||
@ -39,10 +40,24 @@
|
||||
- **AI 분석 데이터**: 서버에서 분석 후 S3 저장, Lambda를 통해 제공
|
||||
- **차트 데이터**: 캔들 데이터 수신 후 그래프로 시각화
|
||||
|
||||
### 수익률 시뮬레이션 기능
|
||||
- **브라우저 기반 시뮬레이션**: AI 제시 지표(목표가, 손절가, 진입가)를 활용한 클라이언트 사이드 수익률 계산
|
||||
- **과거 데이터 활용**: 서버에서 제공받은 과거 AI 분석 결과와 실제 가격 데이터로 브라우저에서 시뮬레이션 수행
|
||||
- **실시간 계산**: JavaScript를 통한 즉각적인 수익률 계산 및 차트 업데이트
|
||||
- **신뢰성 검증**: AI 분석의 정확도와 수익성을 사용자가 직접 확인 가능
|
||||
- **인터랙티브 요소**: 클릭 가능한 차트와 수익률 그래프로 사용자 참여도 향상
|
||||
- **투자매력도 점수 검증**: 높은 점수를 받은 종목의 실제 성과 트래킹
|
||||
|
||||
## 서비스 UI/UX 설계
|
||||
1. **웹 페이지**: 단일 페이지 - 투자상품 현재가, AI분석 정보, 개인 맞춤 설정, 광고 영역
|
||||
1. **웹 페이지**: 단일 페이지 - 투자상품 현재가, AI분석 정보, 수익률 시뮬레이션, 개인 맞춤 설정, 광고 영역
|
||||
2. **앱 구조**: 3개 페이지 - 메인(투자상품), AI분석 상세, 설정 페이지
|
||||
|
||||
### 사용자 경험(UX) 향상 요소
|
||||
- **클릭형 인터랙션**: 투자 종목 클릭 → 상세 분석 → 수익률 시뮬레이션 확인
|
||||
- **게이미피케이션**: 가상 투자 체험으로 실제 투자 전 학습 기회 제공
|
||||
- **신뢰성 구축**: 과거 AI 예측 정확도 공개로 서비스 신뢰도 향상
|
||||
- **참여도 증대**: 단순 정보 확인에서 능동적 투자 시뮬레이션으로 발전
|
||||
|
||||
## 기술 아키텍처
|
||||
|
||||
### 서버 구조
|
||||
|
Loading…
Reference in New Issue
Block a user