Skip to content

TeamPeanut/Peanut_Backend

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

PEANUT (AI를 활용한 당뇨병 환자 관리 어플리케이션)

교내 졸업 전시회 및 경진 대회 대상 (1위)

image image

프로젝트 소개

image

Peanut_Backend

Peanut_Backend


⚒️ 기술 스택

  • SpringBoot

  • SpringSecurity

  • FCM

  • Redis

  • FastAPI

  • OAuth2.0

  • Docker

  • JPA

  • Yolov5

  • GitHub Action

  • QueryDsl

  • TensorFlow

  • MariaDB


👨‍👧‍👧  팀 구성

  • Backend, AI - 1명 🖐️
  • FrontEnd - 1명
  • Desinger - 1명

🕓 프로젝트 기간

  • 2024.03.01~2024.11.5

주요기능

  • 당뇨 환자에게 필수적인 인슐린과 약을 사용자가 직접 추가 및 설정 가능합니다. 설정한 정보에 맞춘 알림이 발신되어 까먹는 일을 방지합니다.
  • 혼자서 관리하기 힘든 사용자들을 위하여 보호자 연결 기능을 통해 전체적인 건강 관리를 밀착 케어 받을 수 있도록 하였습니다.
  • 환자의 혈당, 인슐린 ,복약 상태를 캘린더 형태로 전달하며, 월 평균 값을 인공지능을 활용하여 피드백을 제공합니다.
  • Yolov5를 이용한 음식 인식 기능으로 환자의 식단 관리와 사용자 혈당 지수를 예측합니다.
  • 날짜 별 사용자의 상태를 한 눈에 알아보기 쉽게 캘린더 형식으로 제공합니다.

담당 역할 - 백엔드

  • 회원 가입 및 로그인
    • SpringSecurity, JWT, Oauth를 활용한 회원가입 로그인,카카오로그인 개발
    • RefreshToken을 이용하여 사용자 인증 세션을 지속적으로 유지하고, 토큰 만료 시 자동 갱신을 통해 보안을 강화
    • 로그인 한 사용자는 JWT토큰을 헤더로 전송하여 로그인 유무 반환
  • 혈당, 복약, 인슐린, 식사 등록 기능 구현
    • JPA를 사용하여 데이터 저장 로직 구현.
    • 혈당
      • 혈당 측정 후 바로 등록 못하는 사용자들을 위하여 한번 에 등록할 수 있도록 혈당 측정 시간을 문자열 입력(예: ‘오전 7시’)으로 받아 이를 파싱하여 LocalDateTime 형식으로 저장하도록 구현.
    • 복약, 인슐린
      • 사용자마다 복약과 인슐린 투약은 요일, 시간, 이름이 다르기 때문에, 약은 약 정보와 복약 테이블, 인슐린은 인슐린 정보와 투약 테이블을 따로 두어 데이터베이스 정규화를 통해 중복 데이터를 최소화하고 데이터 일관성을 유지하도록 설계.
    • 식단
      • AI로 인식한 결과 저장 테이블, 영양 성분 정보 테이블, 그리고 사용자의 식단 테이블을 매핑하여 각 식단에 대한 영양 성분 정보와 인식 결과를 효율적으로 관리하도록 구성
  • 환자 - 보호자 연결 기능
    • 이메일 인증 코드를 이용한 환자 - 보호자 연결 기능
    • 승인 대기 테이블을 두고, 스케쥴러를 이용하여 3일 뒤 승인 대기 목록에서 삭제 되도록 구현
    • 연결 후 사용자는 자신의 정보와 환자의 정보를 동시에 관리할 수 있음.
  • FCM을 이용한 알림 기능
    • 혈당, 복약, 인슐린, 식사알림은 모든 사용자가 입력한 시간에 동시에 알림이 가도록 스케줄러를 이용하여 구현
    • 보호자-환자 알림은 푸쉬버튼 눌렀을 때 가도록 구현
  • 메인 페이지 - 혈당, 복약, 인슐린, 식사를 한페이지에 볼 수 있도록 조회 기능 구현
    • Query DSL을 통한 테이블 조인 쿼리 작성
  • 커뮤니티
    • 게시물,댓글 CRUD 기능 구현
    • 게시물 검색 기능 구현
  • 기타 기능
    • 월 평균 진료 노트, 마이페이지 구현

AI

  • 식품영양 데이터베이스 사이트에서 데이터 수집
  • RoboFlow를 이용한 이미지 데이터 라벨링
  • Yolov5를 이용하여 음식 데이터 학습
  • FastAPI로 서빙하여 스프링부트와 연결

서버아키텍쳐

  • 프로젝트는 운영 환경 관리에 맞게끔 Docker 컨테이너를 사용하여 설정하였고, GitAction을 활용한 CI/CD 파이프라인을 구축한 상태입니다.

  • 음식 인식 API는 아래와 같이 모놀리식으로 구성했습니다.

image

시연영상

KakaoTalk_Video_2024-11-07-01-54-48.mp4
  • 음식 인식 API는 아래와 같이 모놀리식으로 구성되어있습니다.

image.png

About

Peanut_Backend

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages