Skip to content

SSAFY 특화프로젝트 - 빅데이터를 활용한 농수산물 물가 예측 서비스 동해물가농수산물

Notifications You must be signed in to change notification settings

sewonkimm/KoreanPriceBigdata

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

동해물가 Flag: South Korea on Apple iOS 14.2 농수산물

logo
동해물가 농수산물은 지자체 농수산물 물가 데이터를 사용하여 가격 변동 추이를 확인하고, 저렴하게 구입 할 수 있도록 도와주는 서비스 입니다.


   


   

목차

   


   

🍓기획배경

   

🍊기획

와이어프레임

🔗Figma에서 보기

 

UI 디자인

🔗Figma에서 보기

메인 페이지

상세 페이지

 

ERD

🔗ERDCloud에서 보기

   

🍋주요기능

1. 농수산물 물가 확인

2. 가격 등락률에 따른 구입 추천/비추천

3. 3일 후 예측가격 안내

4. 사용자 맞춤 상품 추천

## 추천 시스템 - 잠재요인 기반 협업 필터링

사용자-아이템 평점 행렬에 잠재되어 있는 어떤 요인(factor)이 있다고 가정하고, 행렬 분해를 통해 그 요인들을 찾아내는 방식입니다.

SVD(특이값 분해)를 사용하여 사용자-요인, 요인-아이템 행렬로 분해합니다. 또한 분해한 행렬로 사용자들에게 추천할 수 있도록 SGD(확률적 경사하강법)를 사용하여 기존 매트릭스와 아이템-요인 \* 유저-요인의 차이가 최소가 되는 값을 찾아 사용자가 아직 방문하지 않은 정보 중 가장 연관성이 있을 데이터를 추천합니다.

   

🍏기술스택

Domain Name Version
Frontend vue 2.6.11
Frontend vuetify 2.4.0
Frontend vuex 3.6.2
Frontend charts.js 2.9.4
Backend Springboot
Backend MariaDB
Backend FastAPI 0.63.0
Backend python 3.7

   

🍇개발환경

📓git flow 전략
📕git 컨벤션
📙HTML/CSS 컨벤션
📒JS 컨벤션
📗Spring/Java 컨벤션
📘이미지파일 및 폴더명 컨벤션

   

🍑서비스구조

아키텍쳐

디렉토리 구조

.
├──📁frontend
├──📁backend
├──📁data
├──📁sql
├──📃.gitignore
├──📃changelog.config.js // commit convention을 위한 설정
└──📃README.md

디렉토리 구조 - Frontend

📁frontend
├──📁views
│  ├──📃Splash.vue
│  ├──📃Main.vue
│  ├──📃Detail.vue
│  ├──📃Login.vue
│  └──📃Register.vue
├──📁components
│   ├──📁css
│   ├──📁main
│   ├──📁detail
│   ├──📁login
│   └──📁register
├──📁assets // 각종 이미지
│   └──📃index.js // svg파일은 index.js 파일 하나로 관리
├──📁router // vue-router
├──📁store  // vuex 
├──📃.eslintrc.js // lint 설정
├──📃vue.config.js
└──📃package.json // 패키지 의존성 관리

디렉토리 구조 - Backend

📁backend
 └──📁src/main
    ├──📁java/com/ssafy/j301
    │   ├──📁common
    │   ├──📁config
    │   ├──📁exception
    │   ├──📁security
    │   ├──📁favorite
    │   │  ├──📃Favorite.java
    │   │  ├──📃FavoriteController.java
    │   │  └──📃FavoriteService.java
    │   ├──📁fluctuationRate
    │   ├──📁ingredient
    │   ├──📁ingredientAvg
    │   ├──📁member
    │   ├──📁popularity
    │   ├──📁shopping
    │   ├──📁transition
    │   ├──📁watch
    │   └──📁mapper
    │       ├──📃FavoriteMapper.java
    │       ├──📃FluctuationRateMapper.java
    │       ├──📃IngredientAvgMapper.java
    │       ├──📃IngredientMapper.java
    │       ├──📃MemberMapper.java
    │       ├──📃PopularityMapper.java
    │       ├──📃ShoppingMapper.java
    │       ├──📃TransitionMapper.java
    │       └──📃WatchMapper.java
    ├──📁resources
    │   ├──📃application.properties
    │   └──📁mapper
    │       ├──📃favorite.xml
    │       ├──📃fluctuationRate.xml
    │       ├──📃ingredient.xml
    │       ├──📃ingredientAvg.xml
    │       ├──📃member.xml
    │       ├──📃popularity.xml
    │       ├──📃shopping.xml
    │       ├──📃transition.xml
    │       └──📃watch.xml
    ├──📃.gitignore
    ├──📃build.gradle  // gradle 빌드 툴 설정
    └──📃keystore.p12  // SSL 기능을 위한 설정

디렉토리 구조 - Data(빅데이터 관련)

📁data
 └──📁fastApi
    ├──📁app
    │  ├──📁common // 환경설정 폴더
    │  ├──📁database // DB연결 및 스키마 폴더
    │  └──📁routes // RestApi routes 폴더
    ├──📃main.py // 실행 파일
    ├──📃README.md
    └──📃requirements.txt // 패키지 의존성 관리
 
    

   

🍭시작하기

Client

$ cd frontend
$ npm install
$ npm run serve

Data

$ cd data/fastApi
$ python version : 3.7
$ pip install -r requirements.txt
$ python main.py

DB

sql 폴더 내 쿼리문 실행

서버

1. Java 설치

$ sudo apt-get install openjdk-8-jre
$ sudo apt-get install openjdk-8-jdk

2. Npm 설치

$ sudo apt install npm

3. Python3.7 설치

$ sudo apt update
$ sudo apt install software-properties-common
$ sudo add-apt-repository ppa:deadsnakes/ppa 
$ sudo apt update 
$ sudo apt install python3.7

4. Python3.7 venv

$ sudo apt-get install python3.7-venv //python3.7 가상환경 설치
$ python3.7 -m venv my_common_env //python3.7 가상환경 활성화
$ cd my_common_env/bin
$ source activate 

5. Docker 설치

$ sudo apt install apt-transport-https ca-certificates curl gnupg-agent software-properties-common // 다음 패키지들을 설치
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add – // Docker의 공식 GPG키를 추가한다.
$ sudo add-apt-repository "deb [arch=amd64] 
https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" // stable repository를 세팅하기 위한 명령어
$ sudo apt install docker-ce docker-ce-cli containerd.io // 가장 최신 버전의 Docker 엔진을 설치한다.

6. Docker MariaDB install

$ sudo docker run --name DB이름 -p 3306:3306 -e MYSQL_ROOT_PASSWORD=비밀번호 - d mariadb // Docker로 Mariadb 설치 및 실행

7. Gradle install

$ apt-get update
$ apt-get install unzip wget
$ wget https://downloads.gradle-dn.com/distributions/gradle-6.3-bin.zip //gradle 6.3 설치
$ unzip gradle-6.3-bin.zip -d /opt
$ In -s /opt/gradle-6.3 /opt/gradle
$ vi /etc/profile.d/gradle.sh

gradle 설정

#/bin/bash
export GRADLE_HOME=/opt/gradle
export PATH=/opt/gradle/bin:${PATH}

$ gradle -v //gradle 설치 확인

8. 프로젝트 설치 및 실행

$ git clone https://lab.ssafy.com/s04-bigdata-sub3/s04p23a301.git         #프로젝트 받기(Git)
$ npm install #jar, dist 파일 생성
$ npm run build #dist 파일 생성
$ gradle builder #jar 파일 생성

9.배포

<data 폴더> 파이썬 가상환경
$ pip install -r requirements # 필요한 모듈 설치
$ uvicorn main:app --reload --host=0.0.0.0 --port=8000 # fastApi 실행하기

<front 폴더>
$ mv dist /var/www/html # 명령어로 이동

<backend 폴더>
$ java -jar (파일이름).jar

10. Nginx 설정

$ cd /etc/nginx/sites-available
$ sudo vi default // 설정파일 열기

image

image

🧙‍♂️만든사람들

SSAFY 4기 서울 3반 A301팀

팀명 - 오.합.지.존

다섯명의 지존이 모였다. 五.合.至.尊.

팀원

이은택
서버지존
이은택

💻인프라&BE개발
📜 Commit Log
김세원
거지존
김세원

🎨UI디자인&FE개발
📜 Commit Log
김지영
UI지존
김지영

🎨UI디자인&FE개발
📜 Commit Log
여인구
돼지존
여인구

💻BE개발
📜 Commit Log
천창민
미소지존
천창민

💻BE개발&데이터분석
📜 Commit Log

About

SSAFY 특화프로젝트 - 빅데이터를 활용한 농수산물 물가 예측 서비스 동해물가농수산물

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published