Skip to content

hanjo8813/PleaseGraduate

Repository files navigation

Please Graduate

since pg

관련 링크

사이트 링크
https://please-graduate.com/
개발일지 / 업데이트 기록

💻 프로젝트 소개

python-bg django-bg

image

세종대학교 졸업요건 검사 및 강의 추천 서비스 'Please Graduate'

387개의 검사 기준으로, 62개의 모든 학과/전공 및 8개 학번(15~22)의 검사를 지원합니다.

재학생 인증을 통해 회원가입이 가능하고, 기이수성적 엑셀파일만 업로드하면 자동으로 검사합니다.

검사 결과에선 자신이 부족한 부분을 시각화해주고, 자신과 비슷한 사용자들이 많이 들었던 과목을 추천합니다.


구현 계기

  • 세종대학교의 졸업요건은 기준 학점도 채워야하지만, 7가지 영역을 모두 만족해야 해서 매우 복잡합니다.
  • 학교에서 제공되는 수강편람은 가독성이 떨어지기 때문에 재학생들이 졸업요건을 알기 쉽지 않습니다.
  • 매년 개편되는 수강편람 때문에 학과학번별로 모든 졸업요건이 상이합니다.
  • 졸업 필수과목의 과목명이나 학점이 변경되는 경우가 많아 혼란을 야기합니다.
  • 복수/연계 전공을 신청한다면 졸업 요건이 변경됩니다.
졸업요건 영역 설명

상당히 복잡합니다

영역 만족조건
전공필수 전필 기준학점을 만족하면 통과, 학점 초과시 전선 학점으로 인정
전공선택 전선 기준학점을 만족하면 통과
교양필수 교필 기준학점을 만족, 필수과목을 모두 이수하면 통과
교양선택 교선 기준학점을 만족, 필수과목을 모두 이수, 선택영역 3가지 이상 이수하면 통과
기초교양 기교 기준학점을 만족, 필수과목을 모두 이수하면 통과
영어인증 5가지 어학인증 기준점수를 만족 or Intensive English 과목을 이수하면 통과
고전독서 인증 4가지 영역이 있고, 각 영역 기준 권수를 만족 or 고전특강 과목을 이수하면 통과

🔎 기능 소개

항목을 클릭하여 자세히 볼 수 있습니다.


학생인증 및 회원가입
MmC8ZKFJcE
학생인증 및 회원가입
  • Please Graduate는 학생인증을 해야만 회원가입이 가능합니다.
  • 세종대학교 포털의 ID/PW를 입력받아 세종 고전독서인증센터 사이트에 로그인 후, 사용자 정보를 크롤링하여 인증합니다.
  • 회원가입 시엔 전공 상태(복수/연계) 및 영어 인증(어학시험 점수) 정보를 입력합니다.

마이페이지
Vxx8J9ntrT
마이페이지
  • 회원가입 때 기입한 정보를 모두 나타내며 각 정보는 수정이 가능합니다.
  • 단 기본 사용자 정보(이름,학과,학번)와 고전독서현황은 고전독서인증센터 크롤링을 통해 업데이트합니다.
  • 비밀번호 변경 및 회원탈퇴 기능을 제공합니다.

기이수과목 엑셀파일 업로드
P3UfxHZuQU
기이수과목 엑셀파일 업로드
  • 검사를 위해선 세종대학교 학사정보시스템에서 기이수성적 엑셀파일을 다운로드 받아 업로드해야합니다.
  • 서버에서는 http request에서 파일을 추출해 업로드된 엑셀파일의 형식을 검사 후, 필요 정보만을 데이터베이스에 저장합니다.

기이수과목 커스텀
7nqKHF6kAj
기이수과목 커스텀
  • 사용자의 기이수과목을 편집할 수 있는 기능입니다.
  • 미래 수강 계획을 세울 수 있도록 수강 예정인 과목을 미리 추가해 졸업요건을 검사해볼 수 있습니다.
  • 사용자는 추가하고 싶은 과목을 학수번호로 검색한 후, 해당 과목의 이수구분을 선택하여 추가합니다.
  • 검색 기능엔 AJAX를 도입하여 결과 화면이 새로고침되지 않도록 구현하였습니다.

졸업요건 검사
FvomDdcev0
영역별 달성도 그래프
  • 영역별 달성도를 시각화하여 사용자가 부족한 영역과 학점을 바로 보여줍니다.
  • TIP 툴팁을 클릭하면 통과 기준을 알려줍니다.

69GuMvJJRp
검사 및 과목 추천
  • Recommend 버튼을 누르면 각 영역의 세부 정보를 확인할 수 있습니다.
  • 필수과목이 있는 영역에선 필수과목을 검사하여 부족한 과목을 추천합니다.
    • 만약 기준 필수과목의 과목명이 변경되었다면 최신강의 중 동일과목을 추천합니다.
  • 필수과목이 없는 영역에선 다른 사용자의 기이수과목 데이터를 참조해 과목을 추천합니다.
    • 전공 영역 : 사용자와 동일한 학과의 모든 사용자 데이터를 참조해 수강 횟수를 기준으로 추천합니다.
    • 교양 영역 : 모든 사용자의 데이터를 참조해 수강 횟수를 기준으로 추천합니다. (해당 사용자에게 부족한 선택영역만을 추천합니다.)

📜 기술 스택

Front & Backend

  • Python 3.9
  • Django 3.1.4
  • MySQL 8.0.25
  • AJAX

Library

  • Selenium, BeautifulSoup
  • Pandas, django-pandas
  • bcrypt
  • openpyxl
  • django-crontab

Infrastructure

  • Github Actions
  • AWS EC2, RDS
  • Nginx
  • Uwsgi
  • Docker, docker-compose

⚙ 시스템 아키텍처

  • Github Actions를 사용하여 CI/CD 파이프라인을 구축하였습니다.
  • Nginx를 사용하여 리다이렉트 및 HTTPS + HTTP/2.0을 지원하고, 정적 파일을 제공합니다.
  • 프론트엔드는 Django Template Engine을 사용해 SSR 방식으로 렌더링합니다.
  • 일일 방문자수 구현을 위해 django-crontab을 사용합니다.