10000 GitHub - KimMalIng/Backend: 2023 인천대학교 컴퓨터공학부 캡스톤디자인
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

KimMalIng/Backend

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

"너 🅿️야?" - 대학생 맞춤 스케줄 컨트롤러 📆

“일정 관리가 어려운 당신을 위해,

마감일까지 일정을 완료할 수 있도록 스케줄을 제작해줄게요”

참여 인원 : 5명 / 개발 주기 : 9개월 / 2024 인천대학교 컴퓨터공학부 캡스톤디자인 장려상 👑

소개 영상

아 누가 계획 좀 세워줬으면 좋겠다!! 😩😨

네. 저희가 대신 일정을 스케줄링 해드리겠습니다!

문제점 문제점

👤 : "너... P야? 그러면 우리 서비스를 사용해봐!"

MBTI P 성향의 대학생들을 겨냥한 프로젝트

  • 일정의 마감일과 예상 소요 시간을 입력하면 자동으로 스케줄링 완료
  • 입력된 사용자의 일정 완료도를 반영한 스케줄링 진행
  • 고정적인 일정 (학교 시간표, 알바) 이외의 시간들을 효율적으로 사용
  • 지속적인 알림 시스템으로 일정 리마인드

Tech & Architecture 🔧

기술 스택 상세 내용
백엔드 Spring Boot 3.2.3 / Spring Security, Java 17 라이브러리: Spring Data JPA, JWT, OAuth2.0, Thymeleaf
인프라: Firebase, AWS RDS
프론트엔드 Next.js, React, React-Native 주요 라이브러리: Axios, React-Hook-Form
협업 Notion, Postman 협업 툴로 프로젝트 관리 및 API 문서화
Tech Architecture

구현 기능 👨‍💻

시연 영상

1. 로그인 & 회원가입 , 기본 일정 등록

  • 일반 로그인 & Kakao & Naver OAuth2.0 모두 지원
  • 에브리타임 계정을 입력하여 현재 시간표의 수업 일정 등록
  • 기본적으로 고정되는 수면, 아침, 점심, 저녁 시간들에 대한 일정 등록

2. 고정 일정 등록

  • 알바 혹은 개인적인 일정 등록 (일반 카테고리)
  • 시간 시간과 종료 시간을 입력
  • 오늘 하루 해당 일정 이후에 아무런 스케줄을 잡고 싶지 않다면 '이후 일정 비우기' 버튼 사용 -> 종료 시간이 자동 24:00으로 배치

3. 스케줄링 할 일정 등록

  • 마감일이 존재하는 일정 (과제 등) 등록
  • 일정의 시작 날짜와 마감 날짜 설정
  • '자동 스케줄링' 버튼 입력 후 해당 일정을 완료하기까지 필요한 시간 지정
  • 완료 버튼을 누르면 자동 스케줄링이 진행되며 시간 날짜와 마감 날짜 사이의 빈 구간에 일정 배치

4. 스케줄링된 일정에 완료도 입력

  • 스케줄링이 완료된 일정은 Progress가 0%인 상태
  • 해당 일정에 완료도 반영 후 재스케줄링
  • 만약 100%로 설정하면 이후의 스케줄링된 일정은 삭제

5. FCM을 사용한 지속적인 알림

  • 일정 시작 시간과 완료 시간에 맞춰 알림 생성

UI 화면 📱

Web

web web web web

App

web

스케줄링 알고리즘 🖥️

(알고리즘 소개 영상)

Flow Chart

web
  • 하루 24시간을 10분 단위(총 144칸) 로 나누어 시간 단위를 세분화
  • 고정 일정(수업, 아르바이트 등) 을 우선 배치한 뒤, 남은 시간은 ‘잉여 시간 구간’으로 정의
  • 사용자가 입력한 일정은 예상 소요 시간과 마감일을 포함하며, 이를 기반으로 하루 중 해당 일정이 차지해야 할 시간 비중을 계산
  • Best Fit 알고리즘을 응용하여 잉여 시간 구간 중 가장 적절한 영역에 일정을 배정
  • 시간 자원의 낭비를 최소화하고 효율성 극대화

문제 해결 ♒

단일 테이블 전략 vs 조인 전략

문제점 문제점
  • Job(일정)을 관리하는 과정에서 중복되는 필드가 많아 객체 지향 상속 구조 기반의 엔티티 계층 설계
  • 해당 과정에서 단일 테이블 전략과 조인 전략 중 어떤 전략을 사용할 지 고민

비교 실험 진행

  • 실제 운영 환경을 고려해 조인 전략 vs 단일 테이블 전략 간 성능 실험 진행
  • 단일 테이블 전략이 오히려 성능이 낮았지만, 엔티티 유형을 구분하는 dtype 컬럼에 인덱스 적용을 통해 성능 튜닝
  • 10만 건의 더미 데이터를 테스트 한 결과 조회 시간이 172ms에서 40.6ms로 약 4배 향상.

최종적으로 단일 테이블 전략 선택!!

이에 관련하여.. (이미지 클릭 시 이동합니다)

팀 소개 👤

About

2023 인천대학교 컴퓨터공학부 캡스톤디자인

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published
0