Skip to content

2021-1학기 종합설계프로젝트 colle-spec

Notifications You must be signed in to change notification settings

yuminhwan/colle-spec

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

대학생활 포트폴리오 관리 시스템

2021-1학기 종합설계프로젝트 colle-spec

📌 최종 보고서

📌 발표 PPT

포트폴리오를 손쉽게 관리할 수 있고 등록한 포트폴리오로 등급을 확인할 수 있는 웹 시스템


1.제작 기간 & 참여 인원

  • 2021.03 ~ 2021.07
  • 유민환, 최동민, 이수영

2. 추진 배경 및 목적

현재 취업시장에서 학력 , 학점 등도 중요하지만 제일 중요시하는 것이 포트폴리오이다. 기업에서는 포트폴리오를 보고 이 인원이 어느 정도의 실력을 가지고 있고 얼마나 노력과 공부를 했는지에 대한 중요한 척도로 보고 있다. 이 같이 포트폴리오가 매우 중요하다는 것을 느낄 수 있는데 현 시점에서 대학생의 경우 그 중요성을 알고는 있지만 어떻게 관리해야할지는 잘 모르는 상황이다. 그러다가 보면 졸업학년이 되어서야 포트폴리오를 작성하는 경우가 생기지만 이미 몇 년 전의 활동들에 대한 데이터와 경험들이 잘 생각이 나지 않는 경우가 다반사이다. 또한, 저학년의 경우 어떻게 포트폴리오를 구성해 나아가야 할지에 대한 정보를 접하는 경우가 많이 없기 때문에 기회를 놓치는 경우도 많다.

포트폴리오를 관리하는 대학생들 중에서는 개인 블로그나 문서로 작성하는 경우가 많은데 이러한 방법으로 관리하게 되면 한눈에 보기도 어렵고 관리하기도 꽤 까다로운 경우가 많다. 또한, 자신의 포트폴리오가 어느 정도의 완성도를 가지고 있는지에 대한 비교가 쉽지 않다.

이러한 문제점에서 대학 포트폴리오 관리 시스템 Colle-spec의 필요성을 생각하게 되었다.

이 프로젝트를 통해 졸업학년뿐만 아니라 저학년도 차근차근 포트폴리오를 작성해나갈 수 있고 때에 따라 자신의 포트폴리오를 손쉽게 편집하고 관리할 수 있는 서비스와 등록된 포트폴리오를 기반으로 회원들과의 비교를 통해 등급을 산정하여 자신의 위치를 한눈에 파악할 수 있는 서비스를 제공한다. 또한, 산정된 등급을 통해 부족한 포트폴리오의 경우 프로그램 정보 추천과 기업정보와 해당 기업의 합격자와의 비교를 통해 취업에도 도움이 되고자 한다.


3. 개발 목표

  • 포트폴리오를 업로드 및 관리할 수 있게 하여 손쉽게 정리할 수 있도록 한다.

  • 등급제를 통하여 자신의 위치가 어느 정도인지 가늠할 수 있게 한다.

  • 공모전 , 프로그램 등 포트폴리오에 도움이 되는 정보를 제공 및 추천한다.

  • 기업에서 요구하는 스펙에 맞게 포트폴리오의 보완점을 체크한다.

  • 다른 팀과의 연동을 통해 대학생활에 대한 정보를 받아와 포트폴리오에 추가한다.


4. 구현 환경

  • 개발환경 : Window 10, VSCODE, IntelliJ, GitHub

  • 사용언어 : Javascript, HTML5, CSS, JAVA

  • 서버 / 데이터베이스 : nginx 1.14.0, ,MariaDB 10.3.29, Jenkins

  • 라이브러리 : Vue.js, BootStrap, Spring Boot, JSOUP


5. 설계

전체적인 설계

그림2

프론트 엔드

123

백엔드

그림3

ERD

Untitled


6. 개발 내용

A. 알고리즘

1) 포트폴리오 수치화 알고리즘

  • 등록한 포트폴리오를 통해 등급을 산정하기 위해 수치화를 진행한다. 각 입력한 포트폴리오의 정보에 따라 점수 부여방식에 차별을 두어 점수를 산정한다. 점수에 차별을 둠으로써 등급제 알고리즘을 사용 시 각 회원의 등급이 알맞게 산정될 수 있도록 한다.
  • 점수 부여 방식의 경우 점수, 수상종류, 횟수, 활동기간 등 노력 및 결과에 따라 최소 30점부터 최대 100점까지 두고 점수를 설정한다.
  • 등급제 알고리즘을 위해 포트폴리오가 등록 시 해당 포트폴리오 점수를 Trigger를 발 생시켜 score테이블에 각 항목을 합산하여 저장하도록 한다.

2) 등급제 알고리즘

  • 등급제 알고리즘의 경우 포트폴리오의 수치화 점수를 합산시킨 score테이블의 누적분포값을 활용하여 범위를 두어 등급을 산정하는 알고리즘이다.
  • 누적분포값을 사용하는 이유는 누적분포값 자체가 해당 포트폴리오의 점수가 어느 정도의 위치에 있는 지 확인할 수 있는 지표로 사용할 수 있기 때문이다.
  • 그래서 score에 있는 각 포트폴리오의 수치화 점수를 SQL문의 CUM_DIST를 통해 누적분포 값을 추출하는데 이때 만약 등록된 포트폴리오가 없다면 예외를 발생시켜 등급을 산정하지 않 도록 한다. 추출한 누적분포값을 조건에 맞게 등급을 산정한다.
  • 하지만 자격증, 교육이수, 학점 점수의 경우 점수를 세분화하지 않아 골고루 분포하는 것이 아닌 겹치는 점수가 많아져 누적분포값을 구하게 되면 등급이 원하는 대로 산정되지 않는 결 과가 발생한다. 이를 해결하고자 자격증, 교육이수, 학점의 경우 SQL문의 AVG를 사용해 평균 값을 추출하여 평균값과 회원의 점수 차를 기준으로 자격증과 교육이수의 경우 100점, 학점의 경우 10점씩의 차이를 두고 등급을 측정한다.

3) 기업 합격자 평균 스펙 비교 알고리즘

  • 기업 합격자 평균스펙 비교 알고리즘의 경우 회원의 포트폴리오와 기업 합격자의 포트폴리 오를 비교하여 얼마나 차이가 나는지를 회원에게 등급을 통해 보여주는 알고리즘이다.
  • 먼저, 기업 합격자의 포트폴리오 점수와 회원의 포트폴리오 점수의 차를 구하게 되는데 이때 등급제 알고리즘과 마찬가지로 회원이 등록한 포트폴리오가 없다면 예외를 발생한다.
  • 이후 구한 점수 차를 통해 수치화 알고리즘에 입각하여 학점의 경우 10점, 수상과 경력, 해 외경험, 어학의 경우 30점, 자격증과 교육이수의 경우 100점씩의 범위를 두어서 등급제 알고리 즘과 마찬가지로 1~5등급에 해당하는 등급을 산정한다.

B. 서비스 개발

1) 회원 서비스

  • 백엔드 서버의 경우 REST API 서버로써 Stateless 즉, 상태를 저장하지 않기 때문에 Spring Security와 JWT토큰을 사용하여 로그인 상태를 확인한다. 클라이언트로부터 전달받은 ID, PASSWORD가 데이터베이스에 저장되어 있는 ID와 PASSWORD가 동일한지 확인 후 동일하다면 회원 번호를 가지고 있는 JWT토큰을 발급한다.
  • 클라이언트는 이를 로컬스토리지에 저장하여 서비스 호출 시 헤더에 포함해 서버에 요청하여 해당 회원의 로그인 상태를 인지하게 해주어 요청한 서비스를 제공하도록 한다. 이는 회원가입, 로그인, 아이디 중복 검사 이외에 모든 서비스에 적용된다.

2) 포트폴리오 관리

  • 포트폴리오 관리 서비스의 경우 각 포트폴리오에 대한 조회, 입력, 수정, 삭제 4가지의 기능 을 제공하며 수상, 경력, 자격증, 교육이수, 해외경험, 어학, 학점 정보와 자기소개서, 프로젝트 이미지 파일 업로드 두 가지 방식으로 나누어 실행된다.
  • 포트폴리오 입력 시에는 클라이언트의 입력 폼을 통하여 정보를 입력받고 AXIOS를 통해 백엔드 서버로 정보 입력을 요청한다. 백엔드 서버에서는 정보를 전달받아 앞서 설명한 수치화 알고리즘을 진행한 뒤 알맞은 테이블에 저장한다.

3) 등급제 확인

  • 등급 확인 서비스는 전체 회원 등급, 학년 등급, 대학교 등급, 대학교 & 학년 등급으로 나누 어져 있다. 해당 영역의 회원들과의 비교를 통해 더욱 세부적인 등급을 얻을 수 있다.
  • 이후, 등급을 전달받은 클라이언트는 ProgressBar를 통해 한눈에 볼 수 있도록 하고 4,5등급 을 받은 포트폴리오의 경우 등급을 업그레이드할 수 있는 정보를 제공하여 포트폴리오를 강화 할 수 있도록 한다.

4) 다른 팀과의 연동

  • Colleasy팀의 데이터를 가져오기 위해 다중 데이터베이스를 사용한다.
  • Colleasy팀의 데이터베이스에 접속하여 입력한 ID, PASSWORD가 일치하다면 접속 권한을 부여하고 대학생활에 대한 정보를 받아와 Colle-spec팀의 데이터베이스에 저장하도록 한다. 이를 통해 등급 확인 시 대학교, 대학교&학년 등급을 확인할 수 있도록 한다.

5) 프로그램 정보

  • 프로그램 정보의 경우 크롤링을 통하여 데이터를 가져온다.
  • 크롤링을 매일 00시에 하도록 하여 정보를 최신상태로 유지하도록 한다.
  • 클라이언트에서 프로그램 정보를 요청하게 되면 서버에서는 원하는 프로그램 정보를 전달해주고 클라이언트는 이를 받아 테이블 형식으로 보여주도록 한다. 또한, 팀 게시판은 프로그램 번호와 게시판 번호를 통해 구분하여 저장하도록 한다.

6) 기업 정보

  • 기업 정보의 경우 크롤링을 통하여 데이터를 가져온다.
  • 크롤링한 데이터 중 기업 합격자 스펙은 수치화 알고리즘을 통해 수치화 시켜 데이터베이스에 저장한다.
  • 이후, 기업 정보를 조회 시 기업 합격자 스펙 비교 알고리즘을 통해 산정되어 진 등급과 기업 정보를 전달한다.

7. 개인 개발 내용

  • 클라우드 컴퓨팅을 통한 서버 구축 및 배포 경험
  • Github와 Jenkins를 통한 CI/CD 환경 구축
  • Spring Boot 프레임워크를 이용한 REST API 구축
  • 결과 데이터 구조 표준화 및 예외 처리
  • Spring Security + JWT를 활용한 토큰 기반 인증
  • JSOUP을 통한 크롤링

8. 구현 영상

📌 구동 영상

About

2021-1학기 종합설계프로젝트 colle-spec

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published