|
1 | 1 | # mooney-AI |
2 | | -AI repository for mooney project |
| 2 | + |
| 3 | +**Mooney 프로젝트의 AI 서버 리포지토리입니다.** |
| 4 | +이 서버는 사용자 맞춤형 소비 절약 챌린지를 자동 생성하기 위한 **시계열 예측 AI 기능**을 제공합니다. FastAPI 프레임워크와 Prophet, scikit-learn 등의 라이브러리를 활용해 소비 패턴 분석 및 과소비 예측 기능을 구현하였습니다. |
| 5 | + |
| 6 | +## ✨ 프로젝트 개요 |
| 7 | + |
| 8 | +\*\*Mooney(무니)\*\*는 예산 내 소비에 어려움을 겪는 **Z세대**를 위한 AI 기반 절약 가계부 서비스입니다. |
| 9 | +사용자가 스스로 설정한 예산 안에서 **지속 가능한 소비 습관**을 형성할 수 있도록 다음과 같은 기능을 제공합니다: |
| 10 | + |
| 11 | +* 📊 **Prophet 기반 시계열 예측 모델**을 통해 **다음 주 과소비 예상 카테고리 자동 탐지** |
| 12 | +* 🎯 지출 습관 개선을 유도하는 **맞춤형 절약 챌린지 생성** |
| 13 | +* 💬 GPT-4o-mini 기반 챗봇 \*\*‘똑똑소비봇’\*\*으로 예산 내 소비 가능 여부 실시간 조언 |
| 14 | +* 🧩 소비 성공 시 **경험치, 캐릭터 해금, UI 변화 등 게이미피케이션 요소 제공** |
| 15 | + |
| 16 | +무니는 단순한 기록형 가계부가 아닌, 사용자와 상호작용하며 소비 습관을 바꾸는 **AI 소비 파트너**입니다. |
| 17 | + |
| 18 | +--- |
| 19 | +## 주요 기술 스택 |
| 20 | + |
| 21 | +* **FastAPI** – Python 기반의 비동기 웹 프레임워크 |
| 22 | +* **Prophet** – Facebook에서 개발한 시계열 예측 라이브러리 |
| 23 | +* **scikit-learn**, **scipy**, **pandas**, **numpy** – 데이터 전처리 및 ML 유틸리티 |
| 24 | +* **Docker** – 컨테이너 기반 배포 환경 |
| 25 | + |
| 26 | +## 사전 설치 항목 |
| 27 | + |
| 28 | +* Python 3.10 |
| 29 | +* Docker (선택 사항) |
| 30 | + |
| 31 | +## 설치 및 실행 방법 |
| 32 | + |
| 33 | +### 1. 프로젝트 클론 |
| 34 | + |
| 35 | +```bash |
| 36 | +git clone https://github.com/TeamTamtam/mooney-AI.git |
| 37 | +cd mooney-AI |
| 38 | +``` |
| 39 | + |
| 40 | +### 2. 의존성 설치 (로컬 실행용) |
| 41 | + |
| 42 | +```bash |
| 43 | +pip install --no-cache-dir -r requirements.txt |
| 44 | +``` |
| 45 | + |
| 46 | +### 3. 서버 실행 |
| 47 | + |
| 48 | +#### 개발 모드 |
| 49 | + |
| 50 | +```bash |
| 51 | +uvicorn app.main:app --reload |
| 52 | +``` |
| 53 | + |
| 54 | +#### 운영 모드 (멀티 프로세스) |
| 55 | + |
| 56 | +```bash |
| 57 | +uvicorn app.main:app --host 0.0.0.0 --port 8000 --workers 4 |
| 58 | +``` |
| 59 | + |
| 60 | +### 4. Docker로 실행 (권장) |
| 61 | + |
| 62 | +```bash |
| 63 | +docker build -t mooney-ai . |
| 64 | +docker run -p 8000:8000 mooney-ai |
| 65 | +``` |
| 66 | + |
| 67 | +## API 엔드포인트 |
| 68 | + |
| 69 | +### 🔹 GET `/` |
| 70 | + |
| 71 | +* 서버 상태 확인용 엔드포인트 |
| 72 | +* 응답: |
| 73 | + |
| 74 | + ```json |
| 75 | + { "message": "Time Series Prediction AI API is running." } |
| 76 | + ``` |
| 77 | + |
| 78 | +### 🔹 POST `/predict` |
| 79 | + |
| 80 | +* 시계열 소비 예측 요청 처리 |
| 81 | +* 요청 본문은 최근 12주의 소비 내역을 담은 다음 형식을 따라야 합니다: |
| 82 | + |
| 83 | +#### ✅ 요청 데이터 포맷 |
| 84 | + |
| 85 | +```json |
| 86 | +{ |
| 87 | + "data": [ |
| 88 | + { |
| 89 | + "timestamp": "2024-03-04", |
| 90 | + "amount": 22000, |
| 91 | + "expense_category": "식비" |
| 92 | + }, |
| 93 | + { |
| 94 | + "timestamp": "2024-03-11", |
| 95 | + "amount": 19800, |
| 96 | + "expense_category": "식비" |
| 97 | + } |
| 98 | + // ... 최대 12주 분량 |
| 99 | + ] |
| 100 | +} |
| 101 | +``` |
| 102 | + |
| 103 | +* 필드 설명: |
| 104 | + |
| 105 | + * `timestamp`: 날짜 (ISO 8601 형식, 예: `"2024-08-12"`) |
| 106 | + * `amount`: 해당 주의 총 지출액 (정수, 단위: 원) |
| 107 | + * `expense_category`: 소비 항목명 (예: `"식비"`, `"교통"`, `"쇼핑"` 등) |
| 108 | + |
| 109 | +#### 🔁 응답 예시 |
| 110 | + |
| 111 | +```json |
| 112 | +{ |
| 113 | + "message": "Prediction received", |
| 114 | + "data": { |
| 115 | + "predicted_amount": 21000, |
| 116 | + "target_week": "2024-08-19", |
| 117 | + "category": "식비" |
| 118 | + } |
| 119 | +} |
| 120 | +``` |
| 121 | + |
| 122 | +※ 실제 예측 로직은 `/app/routes/predict.py` 내부에 구현됩니다. |
| 123 | + |
| 124 | +## 프로젝트 구조 |
| 125 | + |
| 126 | +``` |
| 127 | +mooney-AI/ |
| 128 | +├── app/ |
| 129 | +│ ├── main.py # FastAPI 엔트리포인트 |
| 130 | +│ ├── routes/predict.py # 예측 API 라우터 |
| 131 | +│ ├── models.py # 요청 데이터 모델 정의 |
| 132 | +├── requirements.txt # Python 패키지 목록 |
| 133 | +├── Dockerfile # Docker 빌드 파일 |
| 134 | +``` |
| 135 | + |
| 136 | +## 참고 문서 |
| 137 | +* [FastAPI 공식 문서](https://fastapi.tiangolo.com/) |
| 138 | +* [Prophet 공식 문서 (Facebook / Meta)](https://facebook.github.io/prophet/docs/quick_start.html) |
| 139 | +* [Docker 공식 문서](https://docs.docker.com/get-started/) |
| 140 | + |
| 141 | + |
0 commit comments