"1분반-알려줘"의 두 판 사이의 차이

cdc wiki
이동: 둘러보기, 검색
(구성원 소개)
(관련 기술의 현황)
(사용자 2명의 중간 판 25개는 보이지 않습니다)
1번째 줄: 1번째 줄:
 
<div>__TOC__</div>
 
<div>__TOC__</div>
 +
 
==프로젝트 개요==
 
==프로젝트 개요==
 
=== 기술개발 과제 ===
 
=== 기술개발 과제 ===
''' 국문 : '''  
+
''' 국문 : ''' 알람 모니터링 서비스 ‘알려줘’
  
''' 영문 : '''
+
''' 영문 : ''' Alarm Monitoring Service ‘Allyojo’
  
 
===과제 팀명===
 
===과제 팀명===
10번째 줄: 11번째 줄:
  
 
===지도교수===
 
===지도교수===
최혁 교수님
+
이경재 교수님
  
 
===개발기간===
 
===개발기간===
16번째 줄: 17번째 줄:
  
 
===구성원 소개===
 
===구성원 소개===
서울시립대학교 컴퓨터공학부·과 2018920000 홍길동(팀장)
+
서울시립대학교 컴퓨터과학부 2021920046 잘리너바 아이가늠(팀장)
 +
 
 +
서울시립대학교 컴퓨터과학부 2020920009 김성령
 +
 
 +
서울시립대학교 컴퓨터과학부 2018920054 정성엽
 +
 
 +
서울시립대학교 수학과 2020540023 이명규
  
 
==서론==
 
==서론==
 
===개발 과제의 개요===
 
===개발 과제의 개요===
 
====개발 과제 요약====
 
====개발 과제 요약====
 +
본 프로젝트는 시니어 케어를 위한 알람 애플리케이션이다. 일반적인 알람 앱과 달리 '미션 수행'과 '보호자 관리' 기능을 통해 시니어의 일상생활을 체계적으로 관리한다.
 +
 +
알람은 단순 알림을 넘어 식사, 복약, 혈당관리 등의 시니어 맞춤 활동을 미션으로 제시하며, 카메라를 통한 비전 기술로 미션 수행 여부를 자동으로 검증한다.
 +
 +
또한 가족이나 보호자가 시니어의 일상 활동을 모니터링하고 관리할 수 있는 보호자 연동 시스템을 갖추고 있다. 이러한 기능들이 유기적으로 연결되어 시니어의 건강한 생활 관리와 보호자의 효율적인 케어를 동시에 실현한다.
  
 
====개발 과제의 배경====
 
====개발 과제의 배경====
기존 졸업 작품의 경우 단발성으로 졸업 작품전이 끝나면 버려진다. 이에 한 기사에서는 ‘예쁜 쓰레기’라 표현할 정도이다. 많은 돈과 시간을 투자하여 제작하였음에도 졸업 전시가 끝나면 사용처가 없어진다. 이러한 문제를 해결하고자 "졸브르"를 고안했다.
+
우리는 더 건강한 삶을 위해 매일 수행해야 하는 필수적인 일들이 있다. 규칙적인 운동처럼 자발적으로 실천해야 하는 일들이 있는 반면, 약 복용이나 혈압 및 혈당 체크처럼 절대 놓쳐서는 안 되는 일들 도 있다.
 +
 
 +
질병관리청의 노인 만성질환 실태조사에 따르면, 65세 이상 노인의 59%가 고혈압을, 30%가 고지혈증을, 23%가 당뇨를 앓고 있다.  
 +
 
 +
더불어 노인 10명 중 4명 이상이 5가지 이상의 약을 복용하고 있어, 정기적인 약 복용의 중요성이 매우 크다. 실제로 당뇨를 앓고 있는 필자의 할머니도 정시 복약을 잊어 질환이 악화된 경험이 있다.
 +
 
 +
이러한 상황에서 시니어 케어 어플리케이션의 필요성은 분명하다. 그러나 현재 시장의 알람 어플리케이션들은 대부분 수면과 기상에만 초점이 맞춰져 있다. 따라서 시니어의 건강 관리에 특화된 알람 어플리케이션은 이러한 시장의 수요를 충족시킬 수 있을 것으로 기대된다.
  
 
====개발 과제의 목표 및 내용====
 
====개발 과제의 목표 및 내용====
"졸브르”를 통해 졸업생들은 자신의 작품을 온라인 공간에 영구적으로 저장할 수 있다. 또한 작품을 만드는 과정에서 느꼈던 감정과 작품 사진들을 기록할 수 있고 일기장 기능을 통해 대중에게 자신의 이야기를 더 쉽게 전달할 수 있다. 다음으로 온라인 초대장을 통해 온라인 공간으로 불특정 다수를 초대할 수 있고, 이를 통해 자신의 작품을 사람들에게 알리고자 하는 욕구를 충족할 수 있다. 이는 기업이나, 대중들에게 예술가로서 자신의 이름을 알릴 수 있는 하나의 기회의 장이 될 것이라 생각하며, 작품을 구매하고자 하는 사람이 있으면 거래할 수 있게 채팅 기능을 제공한다. 커뮤니티를 통해 다양한 학교의 졸업생들끼리 소통하며 작품을 준비할 수 있고, 작품 리뷰 기능을 통해 작품을 평가받고 보완할 수 있다. 마지막으로 온라인 공간에 작품을 저장하고, 이를 종류별로 분리하여 아카이브 형태로 저장할 것이기 때문에 예비 졸업생들에게 졸업 작품을 어떻게 진행할 것인지에 대한 참고 자료를 제공할 수 있다고 생각한다.
 
  
===관련 기술의 현황===
+
1. 미션 알람
====관련 기술의 현황 및 분석(State of art)====
+
 
*전 세계적인 기술현황
+
- 본 프로젝트의 어플리케이션은 단순한 알람을 제공하는 것이 아닌, 미션이 동반되는 '미션 알람'을 제공한다. 따라서 4가지 미션(혈당 관리, 혈압 관리, 복약 관리, 식사 관리)이 할당된 알람을 사용자는 등록할 수 있다.
  
[Frontend]
+
- 알람은 정해진 시간에 Alert되며, 백그라운드에서도 동작할 수 있다. 알람이 Alert되면 어떤 미션인지를 알려주고, 바로 카메라를 사용할 수 있는 UI를 제공한다.
  
- model-viewer: glb 파일을 사용해 화면에 3D 모델을 띄우는 웹 컴포넌트
+
2. 미션 검증
  
 +
- 정해진 미션을 제대로 수행했는지 확인하기 위해 컴퓨터 비전 기술을 사용한다. 이를 통해 미션 수행 여부를 판별한다.
  
[Backend]
+
- 미션 수행 여부를 판별함과 동시에 리포트에 제공할 데이터를 컴퓨터 비전 기술을 활용하여 추출한다. 혈당 / 혈압 미션의 경우 기기의 수치를 추출하고, 식사 관리의 경우 먹은 사진의 영양소를 1인분 기준으로 추출한다.
  
- UNIVCERT: 메일 기반 대학 재학 인증 API
+
3. Todo 기능
  
 +
- 어떤 날짜에 어떤 일을 수행해야하는지 사용자가 기록하고 관리할 수 있는 Todo 기능을 제공한다.
  
[AI]
+
4. 엄격 모드
  
- YOLOv8: object detection in images(이미지 파일로부터 졸업 작품 인식하기)
+
- 엄격 모드를 통해 미션 수행을 더욱 강제할 수 있다. 엄격 모드를 설정하지 않으면 미션 수행이 강제되지 않는다.
  
- DALL-E/Stable diffusion: text to image generation(졸업 작품 전시회 배경 제작)
+
- 엄격 모드를 설정할 경우, 미션이 수행되지 않을 경우 계속해서 알람이 반복된다. 엄격 모드를 설정한 경우, 반복적인 알람 발생을 위해 알람 반복 시간을 설정해야만 한다.
  
 +
- 불편한 사용자 경험을 최소화하기 위해 엄격모드를 사용하더라도 3회 이상 반복되는 경우, 알람을 종료할 수 있는 기능을 제공한다.
  
*특허조사 및 특허 전략 분석
+
5. 리포트
  
(1) 특허조사
+
- 리포트는 혈당 관리 / 혈압 관리 / 식사 관리의 미션에 한해서만 제공된다.
 
- 온라인 전시공간 제공 방법(Online exhibition space delivery method): 제3자가 온라인을 통하여 사이버엑스포에 접속하여 직접 전시회에 가지 않고도 유튜브 또는 네이버TV의 자동접속으로 다양한 기업체 정보를 얻을 수 있도록 한 것이다.
 
   
 
- 공모 작품 관리 시스템(Competition work management system): 업체 계정과 학생 계정, 전문가 계정, 프리랜서 계정 간 데이터 정보를 중개
 
  
- 가상공간 아카이브를 이용한 가상공간 임대차 서비스 제공 시스템(SYSTEM FOR PROVIDING VIRTUAL SPACE RENTING SERVICE USING VIRTUAL SPACE ARCHIVE): 가상공간 아카이브를 이용한 가상공간 임대차 서비스 제공 시스템이 제공되며, 적어도 하나의 종류의 가상공간 데이터를 업로드하고, 적어도 하나의 종류의 가상공간이 임차되는 경우, 임차된 임차기간 및 임차된 가상공간의 종류에 기 매핑되어 저장된 기 설정된 임대료를 정산한다.
+
- 혈당 관리와 혈압 관리는 기존에 수행한 미션을 검증하는 과정에서 추출된 데이터를 활용하여 차트를 제공한다. 해당 미션들은 최대 한달까지 제공받을 리포트의 기한을 설정할 수 있다.
  
 
+
- 식사 관리의 경우, 당일 식사 미션에 대해서만 리포트 제공이 가능하다. 컴퓨터 비전을 통해 추출한 음식 데이터와 백엔드에 저장된 1인분 기준 음식 데이터를 기준으로 사용자의 나이와 성별을 감안하여 데이터를 제공한다.
(2) 특허전략
 
  
- 졸업 작품으로 한정하여 질적 성장
+
6. 보호자 알람 생성
- 가상 공간 아카이빙을 활용한 작품 전시 공간 임대 서비스 제공
 
  
 +
- 보호자는 시니어를 추가하고, 알람을 생성해줄 수 있다. 이를 통하여 시니어에게 미션 수행을 어느정도 강제할 수 있다.
  
*기술 로드맵
+
- 다만, 보호자가 생성해준 알람도 시니어가 삭제할 수 있도록 하여 불편한 사용자 경험을 최소화하고자 한다.
  
[[파일:미니언즈_기술로드맵.png]]
+
7. 프리미엄 업그레이드
  
====시장상황에 대한 분석====
+
- 일반 회원과 프리미엄 회원으로 구분하여 어플리캐이션이 동작한다. 일반 회원의 경우 알람의 생성을 최대 3개로 제한하여 동작하도록 한다. 또한, 보호자 기능을 사용할 수 없다.
*경쟁제품 조사 비교
 
[[파일:미니언즈_경쟁제품.png]]
 
  
 +
- 프리미엄 회원의 경우 알람 생성에 제한을 두지 않으며, 보호자 기능을 사용할 수 있다. 보호자와 시니어의 관계는 1:N의 관계를 형성하기 때문에 이러한 비즈니스 모델이 수익 창출을 극대화할 수 있을거라고 판단한다.
  
*마케팅 전략 제시
+
===관련 기술의 현황===
 +
====관련 기술의 현황 및 분석(State of art)====
 +
*전 세계적인 기술현황
 +
◇ 알람 앱의 발전
 +
- 인터랙티브 알람 앱: 최근 사용자 참여를 유도하는 다양한 알람 앱들이 등장하고 있다. 예를 들어, 수학 문제를 풀거나, 특정 장소로 이동해야만 알람이 꺼지는 앱 등이 있다. 이러한 앱들은 사용자의 적극적인 행동을 유도하여 수면 관성(sleep inertia)을 줄이는 데 도움을 준다.- 사진 기반 알람 앱: 사용자가 특정 사물이나 장소의 사진을 찍어야 알람이 꺼지는 앱들이 있다. 이는사용자가 침대에서 벗어나 특정 행동을 취하도록 유도하여 기상 습관을 개선한다.
  
검색엔진 최적화(SEO)를 통한 플랫폼 상단 노출
+
◇ 비전 기술과 건강 관리
 +
- 이미지 인식 기술의 발전: 딥러닝과 머신러닝의 발전으로 이미지 인식 기술이 크게 향상되었다. 의료분야에서는 피부 질환 진단, 식품의 영양 성분 분석 등 다양한 응용이 이루어지고 있다.- 모바일 기기의 비전 기술 적용: 스마트폰의 카메라 성능 향상과 함께 모바일 앱에서 실시간 이미지 분석이 가능해졌다. 이는 사용자의 편의성을 높이고, 건강 관리에 직접적인 도움을 줄 수 있다.
  
플랫폼 소개 YouTube 영상 제작
+
◇ 건강 모니터링 및 리포트
 +
- 헬스케어 앱의 대중화: 다양한 건강 모니터링 앱들이 사용자들의 활동량, 심박수, 수면 패턴 등을 추적하여 건강 관리를 지원하고 있다.- 데이터 시각화 및 분석: 수집된 데이터를 기반으로 사용자에게 이해하기 쉬운 리포트를 제공하여 자기관리에 대한 동기부여를 높이고 있다.
  
교내 소식지에 보도 자료 요청
 
  
각 대학의 미술 관련 학과(디자인과, 순수미술과 등)에 홍보 요청
+
*기술 로드맵
 +
 
 +
====시장상황에 대한 분석====
 +
*경쟁제품 조사 비교
 +
내용
 +
*마케팅 전략 제시
 +
내용
  
 
===개발과제의 기대효과===
 
===개발과제의 기대효과===
 
====기술적 기대효과====
 
====기술적 기대효과====
아카이빙 서비스 제공으로 단발성으로 끝나는 졸업 작품에 대한 생명 연장
+
내용
 
 
 
====경제적, 사회적 기대 및 파급효과====
 
====경제적, 사회적 기대 및 파급효과====
졸업생이 자신의 작품을 더 간편하게 홍보할 기회를 얻음
+
내용
 
 
졸업 작품에 담긴 이야기를 대중에게 더 효과적으로 전달할 수 있음
 
 
 
예비 졸업생들이 참고할 수 있음
 
 
 
졸업 사진과 같은 추억 저장소에 기능을 수행할 수 있음
 
  
 
===기술개발 일정 및 추진체계===
 
===기술개발 일정 및 추진체계===
 
====개발 일정====
 
====개발 일정====
[[파일:미니언즈_개발일정.png]]
+
내용
 
 
 
====구성원 및 추진체계====
 
====구성원 및 추진체계====
김민서: PM, Backend(채팅), AI
+
내용
 
 
고수: Backend(전시, 인증/인가, 유저 관리, 알림)
 
 
 
김태현: Backend(커뮤니티, 알림)
 
 
 
조서영: Frontend
 
  
 
==설계==
 
==설계==
 
===설계사양===
 
===설계사양===
 
====제품의 요구사항====
 
====제품의 요구사항====
[[파일:제품요구사항_1.png]]
+
내용
[[파일:제품요구사항_2.png]]
 
[[파일:제품요구사항_3.png]]
 
 
 
 
====설계 사양====
 
====설계 사양====
◇ Frontend - React 환경에서의 개발 - AWS EC2 + Nginx를 사용한 배포
+
내용
 
 
◇ Backend - Spring Boot 3.xx - JAVA 17 - AWS EC2 + Docker를 통한 배포
 
 
 
◇ AI - FastAPI 환경에서의 개발 - AWS EC2(인스턴스: G4dn) + Nginx를 사용한 배포 - AWS S3를 활용하여 반환 이미지 저장
 
  
 
===개념설계안===
 
===개념설계안===
① 유즈케이스도
+
내용
 
 
[[파일:유즈케이스도.png]]
 
 
 
[Student]
 
 
 
• Upload Project
 
 
 
[[파일:전시회생성.png]]
 
 
 
 
 
• Upload Diary
 
 
 
[[파일:일기장등록.png]]
 
 
 
 
 
• Create Invitation
 
 
 
[[파일:초대장생성.png]]
 
 
 
 
 
• Upload Group Project
 
 
 
 
 
 
 
[User]
 
 
 
• Verify Studnet
 
 
 
[[파일:학생인증.png]]
 
 
 
 
 
 
 
[Common]
 
 
 
• Register
 
 
 
[[파일:회원가입.png]]
 
 
 
 
 
• Login & Logout
 
 
 
[[파일:졸브르로그인.png]]
 
 
 
 
 
• FInd ID & PW
 
 
 
[[파일:졸브르아이디찾기.png]]
 
 
 
 
 
• FAQ
 
 
 
[[파일:졸브르faq.png]]
 
 
 
 
 
• Trade Chat
 
 
 
[[파일:거래채팅.png]]
 
 
 
 
 
• Community
 
 
 
[[파일:졸브르커뮤니티.png]]
 
 
 
 
 
• Watch Artwork
 
 
 
[[파일:졸브르작품관람.png]]
 
 
 
 
 
 
 
② 액티비티도
 
 
 
[[파일:액티비티도.png]]
 
 
 
일반적인 흐름은 다음과 같다.
 
 
 
• 사용자는 메인 화면에 접속한다. [Main Page]
 
 
 
• 상단 바의 ‘로그인’ 버튼을 눌러 로그인 화면에 접속한다. [Login Page]
 
 
 
• 로그인 화면의 ‘회원가입’ 버튼을 눌러 본인 인증을 수행하고 개인정보를 입력해 회원가입한다. [Register]
 
 
 
• 다시 로그인 화면으로 돌아와 아이디와 비밀번호를 입력해 로그인한다. [Login]
 
 
 
• 아이디 또는 비밀번호를 모르는 경우, 로그인 화면에서 ‘아이디 찾기’ 또는 ‘비밀번호 찾기’ 버튼을 눌러 아이디 또는 비밀번호를 찾는다. [Find ID & PW]
 
 
 
• 상단 바의 ‘마이페이지’ 버튼을 눌러 마이페이지 - ‘내 정보’ 화면에 접속한다. [MyPage]
 
 
 
• 학생 인증 여부에서 ‘인증하기’ 버튼을 눌러 학생 인증을 수행한다. [Verify Student]
 
 
 
• 좌측 바의 ‘내 프로젝트’ 버튼을 눌러 마이페이지 - ‘내 프로젝트’ 화면에 접속한다.
 
 
 
'새로 만들기' 버튼을 누른 후 작품 이름, 대표 사진, 전시회 배경, 부가 사진, 판매 여부, 판매가, 작품 소개, 작가의 한마디를 입력 및 설정해 작품(전시회)을 등록한다. [Upload Project]
 
 
 
 
 
• 마이페이지 - ‘내 프로젝트’ 화면으로 돌아와 생성한 프로젝트를 클릭한 후, 하단의 ‘일기장’ 버튼을 눌러 일기장 화면에 접속한다.
 
 
 
'작성하기' 버튼을 눌러 제작 기록이 담긴 글과 이미지를 업로드 해 새 일기를 생성한다. [Upload Diary]
 
 
 
 
 
• 프로젝트가 완성되면 해당 프로젝트 클릭한 후, 하단의 ‘배포’ 버튼을 눌러 전체 게시한다.
 
 
 
좌측 바의 '초대장 만들기; 버튼을 눌러 마이페이지 - ‘초대장 만들기’ 화면에 접속한다. 초대장을 만들 프로젝트를 선택해 초대장을 만들고 타 플랫폼으로 공유한다. [Create Invitation]
 
 
 
 
 
• 좌측바의 ‘단체 전시관’ 버튼을 눌러 마이페이지-‘단체 전시관’ 화면에 접속한다.
 
 
 
'새로 만들기' 버튼을 누른 후, 단체 전시관 이름을 정하고 인원을 초대해 개설을 요청한다.
 
 
 
결제 후 단체 전시관 개설이 완료되면, 단체 전시관에 올릴 작품을 선택해 등록한다. [Upload Group Project]
 
 
 
 
 
• 상단 바의 ‘FAQ’ 버튼을 눌러 FAQ 화면에 접속한다. 자주 묻는 질문과 그에 대한 답변을 확인한다.[FAQ]
 
 
 
• 상단 바의 ‘커뮤니티’ 버튼을 눌러 커뮤니티 화면에 접속한다. ‘글쓰기’ 버튼을 눌러 글을 작성해 새 게시글을 생성한다. [Community]
 
 
 
• 메인 화면 또는 단체 전시관 화면[Group Exhibition Page]에서 개별 작품을 클릭해 작품 전시회를 관람한다. [Watch Artwork]
 
 
 
• 전시회 사진 우측에 배치된 네 가지 토글을 통해 작품 소개와 일기장을 확인하고, ‘거래 채팅’ 버튼을 눌러 작가와 대화한다. [Trade Chat]
 
 
 
• 페이지의 Footer에 있는 ‘로그아웃’ 버튼을 눌러 로그아웃한다. [Logout]
 
  
 
===이론적 계산 및 시뮬레이션===
 
===이론적 계산 및 시뮬레이션===
 +
내용
  
 
===상세설계 내용===
 
===상세설계 내용===
① 아키텍쳐 다이어그램
+
내용
 
 
[[파일:아키텍쳐도.png]]
 
 
 
▶ Client 시스템
 
- 뷰를 제공한다.
 
 
 
▶ Server 시스템
 
- Client 시스템으로부터 요청을 받아 비즈니스 로직을 수행하고 결과를 반환한다.
 
 
 
▶ Controller 시스템
 
- Client 시스템에게 요청을 받고 결과를 반환한다.
 
 
 
▶ Service 시스템
 
- 게시, 사용자, 작품(전시회), 거래 채팅과 같은 주요 비즈니스 로직을 수행한다.
 
▶ Domain 시스템
 
- 비즈니스 규칙, 실질적인 도메인 정보를 가지고 있으며 이를 책임진다.
 
- 게시글, 사용자, 작품(전시회), 거래 채팅 관련 도메인이 있다.
 
 
 
▶ Repository 시스템
 
- 엔티티를 DB에 저장한다.
 
 
 
▶ Infra 시스템
 
- DB, WebSocket 등과의 통신을 담당한다.
 
 
 
 
 
② 클래스도
 
 
 
[[파일:클래스도.png]]
 
  
 
==결과 및 평가==
 
==결과 및 평가==
 
===완료 작품의 소개===
 
===완료 작품의 소개===
 +
====프로토타입 사진 혹은 작동 장면====
 +
- '''메인화면'''
 +
<br>
 +
[[파일:메인화면1.png]]
 +
* 어플리케이션을 실행하면 가장 먼저 볼 수 있는 화면이다.
 +
* 아이디와 비밀번호, 그리고 보호자 여부를 체크하여 로그인을 진행한다.
  
가. 프로토타입 사진 (대표 기능 화면)
 
  
 +
- '''회원가입'''
 +
<br>
 +
[[파일:회원가입1.png]] [[파일:회원가입2.png]] [[파일:회원가입3.png]]
 +
<br>
 +
[[파일:회원가입4.png]] [[파일:회원가입5.png]] [[파일:회원가입6.png]]
 +
* 회원가입을 진행하는 UI이다.
 +
* 아이디, 비밀번호, 전화번호를 차례로 입력한다.
 +
* 전화번호를 입력하면 인증번호를 받을 수 있다. 이 인증번호를 입력하여 전화번호 인증을 완료한다.
 +
* 보호자 여부를 체크한다.
 +
* 리포트 분석에 사용될 나이, 성별을 입력한다.
 +
* 닉네임을 입력하여 회원가입을 마친다.
  
  
3.2 설치 (configuration)
+
- '''알람 기능'''
 +
<br>
 +
[[파일:알람_기능1.png]] [[파일:알람_기능2.png]] [[파일:알람_기능3.png]]
 +
* 알람 메인 페이지에서는 현재 설정해놓은 알람을 조회할 수 있다.
 +
* 하나의 알람은 반드시 하나의 미션을 포함하여야 한다.
 +
* 아래 종을 누르면 새로운 알람을 설정할 수 있다.
 +
* 알람 설정 페이지에서 알람 시각, 반복 여부, 엄격모드 여부, 미션, 진동 여부, 알람 볼륨, 반복 간격을 설정하여 새 알람을 만들 수 있다.
  
  
 +
- '''알려줘 페이지 - 할 일 확인하기'''
 +
<br>
 +
[[파일:알려줘_페이지_-_할_일_확인하기1.png]] [[파일:알려줘_페이지_-_할_일_확인하기2.png]] [[파일:알려줘_페이지_-_할_일_확인하기3.png]] [[파일:알려줘_페이지_-_할_일_확인하기4.png]]
 +
* 할 일 확인하기 페이지에서는 알람 이외에 잊지 않고 해야 할 일들을 등록할 수 있다.
  
  
가. 설치 방법 (단계에 따른 화면 포함)
 
  
- 브라우저 내 검색창에서 사이트 주소 입력을 통해 사이트 접속
+
[[파일:알려줘_페이지_-_할_일_확인하기5.png]]
 +
* 할 일의 날짜와 시간, 제목, 추가 설명을 입력하여 할 일 등록을 마친다.
  
  
 +
- '''알려줘 페이지 – 미션 모아보기'''
 +
<br>
 +
[[파일:알려줘_페이지_–_미션_모아보기1.png]]
 +
* 미션 모아보기 탭에서는 현재 수행 중인 미션을 한 눈에 확인할 수 있다.
 +
* 매일 울리는 알람의 명우 ‘매일’ 탭에서, 그 외의 경우 ‘매주’ 탭에서 확인할 수 있다.
  
나. SW/HW 구성 방법
 
  
◇ Frontend
+
- '''알려줘 페이지 – 미션 확인하기'''
- React 환경에서의 개발
+
<br>
- AWS EC2 + Nginx를 사용한 배포
+
[[파일:알려줘_페이지_–_미션_확인하기1.png]]
- 사이트 주소: http://13.208.139.6
+
* 미션 확인하기 탭에서는 알람이 발생하였지만 인증을 바로 진행하지 않았을 때의 알람을 확인할 수 있다.
 +
* ‘인증하기’ 버튼을 눌러 해당 알람에 대한 미션 수행 결과를 인증할 수 있다.
  
◇ Backend
 
- Spring Boot 3.xx
 
- JAVA 17
 
- AWS EC2 + Docker를 통한 배포
 
- End – Point : http://15.168.106.131:8081/
 
  
◇ AI
+
- '''알람 발생'''
- FastAPI 환경에서의 개발
+
<br>
- AWS EC2(인스턴스: G4dn) + Nginx를 사용한 배포
+
[[파일:알람_발생1.png]] [[파일:알람_발생2.png]] [[파일:알람_발생3.png]]
- AWS S3를 활용하여 반환 이미지 저장
+
* 알람이 발생했을 때의 화면이다.
 +
* ‘사진 찍기’ 버튼을 눌러 미션 인증을 진행할 수 있다.
 +
* ‘알람 종료’ 버튼을 클릭하면 ‘알려줘 페이지 – 미션 확인하기’ 탭에서 확인할 수 있다.
  
  
 +
- '''리포트'''
 +
<br>
 +
[[파일:리포트1.png]] [[파일:리포트2.png]] [[파일:리포트3.png]]
 +
* 리포트를 조회할 수 있는 화면이다.
 +
* 수행한 적이 있는 미션을 선택한 후 기간을 선택하면 해당 미션에 대한 분석을 받을 수 있다.
  
  
 +
[[파일:리포트4.png]] [[파일:리포트5.png]] [[파일:리포트6.png]] [[파일:리포트7.png]]
 +
* 리포트 조회 화면이다.
 +
* 혈당 미션의 경우 미션 성공률과 기준 혈당과의 비교를 확인할 수 있다.
 +
* 혈압 미션의 경우 미션 성공률과 수축기/이완기 혈압 변화, 그리고 고혈압 기준치와의 비교를 확인할 수 있다.
 +
* 식사 미션의 경우 그 날 섭취한 식사 메뉴와 영양소, 그리고 하루 영양소 권장 섭취량과의 비교를 확인할 수 있다.
  
  
 +
- '''보호자'''
 +
<br>
 +
[[파일:보호자1.png]] [[파일:보호자2.png]]
 +
* 보호자로 로그인하였을 경우 볼 수 있는 화면이다.
 +
* 보호자는 노인의 알람을 설정해줄 수 있다. 알람 세팅 과정은 노인과 동일하다.
 +
* 보호자가 설정해 준 알람에 대한 리포트를 조회할 수 있다. 조회되는 내용은 노인의 리포트 조회 내용과 동일하다.
  
 +
===완료 작품의 평가===
 +
{| class="wikitable"
 +
! 평가항목 !! 평가방법 !! 적용기준 !! 개발 목표치 !! 비중 (%)
 +
|-
 +
| 1. 기능 구현의 충실도 || 모든 기능이 정상적으로 잘 동작하는지 확인한다. || 명세에 포함되어 있는 기능이 동작하지 않을 때마다 –1점, 미흡하게 동작하면 –0.5점 || 33점 || 50 
 +
|-
 +
| 2. AI 검증 로직의 정확도 || 테스트 셋을 활용하여 검증 로직의 정확도를 확인한다. || 목표 정확도 95% 이상, 1% 미달마다 –1점 || 30점 || 50
 +
|}
 +
====기능 구현의 충실도====
 +
○: 모든 기능이 의도대로 동작함<br>
 +
△: 기능은 동작하나 다소 미흡한 부분이 있음 (-0.5점)<br>
 +
❌: 기능이 동작하지 않거나 구현하지 못함 (-1점)<br>
 +
<br>
 +
{| class="wikitable" style="text-align:center; vertical-align:middle; background-color:#FFF;"
 +
|- style="font-weight:bold; background-color:#F2F2F2;"
 +
! 분류
 +
! 평가 기능
 +
! 평가 기준
 +
! 평가
 +
! 비고
 +
|-
 +
| rowspan="4" style="font-weight:bold;" | 회원가입
 +
| style="text-align:left;" | 유저  회원가입
 +
| style="text-align:left;" | 유저  회원가입 과정이 원활하게 진행된다.
 +
| style="color:#00F;" | ○
 +
|
 +
|-
 +
| style="text-align:left;" | 보호자 회원가입
 +
| style="text-align:left;" | 보호자  회원가입 과정이 원활하게 진행된다.
 +
| style="color:#00F;" | ○
 +
|
 +
|-
 +
| style="text-align:left;" | 전화번호 문자 인증
 +
| style="text-align:left;" | 전화번호  문자 인증이 원활하게 진행된다.
 +
| style="color:#00F;" | ○
 +
|
 +
|-
 +
| style="text-align:left;" | 아이디 중복 체크
 +
| style="text-align:left;" | 아이디  중복 없이 가입이 가능하다. 아이디가 중복된 경우 적절한 피드백이 주어진다.
 +
| style="color:#00F;" | ○
 +
|
 +
|-
 +
| rowspan="3" style="font-weight:bold;" | 로그인
 +
| style="text-align:left;" | 유저 로그인
 +
| style="text-align:left;" | 오류 없이 로그인이 진행된다.
 +
| style="color:#00F;" | ○
 +
|
 +
|-
 +
| style="text-align:left;" | 보호자 로그인
 +
| style="text-align:left;" | 오류  없이 로그인이 진행된다.
 +
| style="color:#00F;" | ○
 +
|
 +
|-
 +
| style="text-align:left;" | 아이디/비밀번호 찾기
 +
| style="text-align:left;" | 아이디/비밀번호  찾기 기능을 사용할 수 있다.
 +
| style="color:#F00;" | ❌
 +
|
 +
|-
 +
| rowspan="5" style="font-weight:bold;" | 알람 설정
 +
| style="text-align:left;" | 시간  설정
 +
| style="text-align:left;" | 알람의  시간이 잘 설정된다.
 +
| style="color:#00F;" | ○
 +
|
 +
|-
 +
| style="text-align:left;" | 엄격 모드
 +
| style="text-align:left;" | 엄격  모드가 설정된다.
 +
| style="color:#00F;" | ○
 +
|
 +
|-
 +
| style="text-align:left;" | 반복 설정
 +
| style="text-align:left;" | 알람  반복 설정이 원활하게 동작한다.
 +
| style="color:#00F;" | ○
 +
|
 +
|-
 +
| style="text-align:left;" | 미션 추가
 +
| style="text-align:left;" | 네  가지 미션 모두 잘 선택되고 반영된다.
 +
| style="color:#00F;" | ○
 +
|
 +
|-
 +
| style="text-align:left;" | 세부 알람 설정
 +
| style="text-align:left;" | 진동,  알람 볼륨, 반복 간격이 잘 설정된다.
 +
| △
 +
| 알람  볼륨이 잘 작동되지 않는다는 테스트 결과 존재
 +
|-
 +
| rowspan="3" style="font-weight:bold;" | 알람 발생
 +
| style="text-align:left;" | 알람  발생 페이지
 +
| style="text-align:left;" | 알람이  발생한 경우 사용자에게 적절한 피드백을 제공한다.
 +
| style="color:#00F;" | ○
 +
|
 +
|-
 +
| style="text-align:left;" | 사진 찍기
 +
| style="text-align:left;" | 사진  찍기 기능이 잘 동작한다.
 +
| style="color:#00F;" | ○
 +
|
 +
|-
 +
| style="text-align:left;" | 알람 종료 기능
 +
| style="text-align:left;" | 알람  종료 시 종료된 알람이 알려줘 페이지에 반영된다. 알람 종료 시 알람이 다시 울리지 않는다.
 +
| style="color:#00F;" | ○
 +
|
 +
|-
 +
| rowspan="8" style="font-weight:bold;" | 알려줘 페이지
 +
| style="text-align:left;" | 할 일 확인하기
 +
| style="text-align:left;" | 사용자에게 적절한 UI를  제공한다.
 +
| style="color:#00F;" | ○
 +
|
 +
|-
 +
| style="text-align:left;" | 할 일 추가
 +
| style="text-align:left;" | 할  일이 원활하게 추가된다.
 +
| style="color:#00F;" | ○
 +
|
 +
|-
 +
| style="text-align:left;" | 할 일 수정
 +
| style="text-align:left;" | 할  일이 원활하게 수정된다.
 +
| style="color:#00F;" | ○
 +
|
 +
|-
 +
| style="text-align:left;" | 할 일 삭제
 +
| style="text-align:left;" | 할  일이 원활하게 삭제된다.
 +
| style="color:#00F;" | ○
 +
| <br />
 +
|-
 +
| style="text-align:left;" | 미션 모아보기
 +
| style="text-align:left;" | 진행 중인 미션이 잘 표시된다.
 +
| style="color:#00F;" | ○
 +
|
 +
|-
 +
| style="text-align:left;" | 미션 모아보기 UI
 +
| style="text-align:left;" | 사용자에게  적절한 UI를 제공한다.
 +
| style="color:#00F;" | ○
 +
|
 +
|-
 +
| style="text-align:left;" | 미션 확인하기
 +
| style="text-align:left;" | 알람  종료된 미션이 잘 표시된다.
 +
| style="color:#00F;" | ○
 +
|
 +
|-
 +
| style="text-align:left;" | 미션 확인하기 - 인증
 +
| style="text-align:left;" | 인증하기  버튼이 잘 동작한다.
 +
| △
 +
| 인증  과정에서 오류가 발생했다는 테스트 결과 존재
 +
|-
 +
| rowspan="5" style="font-weight:bold;" | 리포트
 +
| style="text-align:left;" | 리포트  항목 선택
 +
| style="text-align:left;" | 리포트  미션과 기간이 원활하게 설정된다.
 +
| style="color:#00F;" | ○
 +
|
 +
|-
 +
| style="text-align:left;" | 혈압 리포트 조회
 +
| style="text-align:left;" | 혈압  미션 리포트가 원활하게 조회된다.
 +
| style="color:#00F;" | ○
 +
|
 +
|-
 +
| style="text-align:left;" | 혈당 리포트 조회
 +
| style="text-align:left;" | 혈당  미션 리포트가 원활하게 조회된다.
 +
| style="color:#00F;" | ○
 +
|
 +
|-
 +
| style="text-align:left;" | 식사 리포트 조회
 +
| style="text-align:left;" | 식사  미션 리포트가 원활하게 조회된다.
 +
| style="color:#00F;" | ○
 +
|
 +
|-
 +
| style="text-align:left;" | 복약 리포트 조회
 +
| style="text-align:left;" | 복약  미션 리포트가 원활하게 조회된다.
 +
| style="color:#F00;" | ❌
 +
|
 +
|-
 +
| rowspan="5" style="font-weight:bold;" | 보호자
 +
| style="text-align:left;" | 관리하는  유저 추가
 +
| style="text-align:left;" | 유저의  전화번호를 입력하여 ‘관리하는 유저’로 등록할 수 있다.
 +
| style="color:#00F;" | ○
 +
|
 +
|-
 +
| style="text-align:left;" | 유저 알람 추가
 +
| style="text-align:left;" | 보호자의  유저 알람 추가 기능이 원활하게 잘 진행된다.
 +
| style="color:#00F;" | ○
 +
|
 +
|-
 +
| style="text-align:left;" | 유저 알람 수정
 +
| style="text-align:left;" | 보호자의  유저 알람 수정 기능이 원활하게 잘 진행된다.
 +
| style="color:#00F;" | ○
 +
|
 +
|-
 +
| style="text-align:left;" | 유저 알람 삭제
 +
| style="text-align:left;" | 보호자의  유저 알람 삭제 기능이 원활하게 잘 진행된다.
 +
| style="color:#00F;" | ○
 +
|
 +
|-
 +
| style="text-align:left;" | 유저 리포트 조회
 +
| style="text-align:left;" | 관리하는  유저의 리포트를 조회할 수 있다.
 +
| style="color:#00F;" | ○
 +
| <br />
 +
|}
  
 +
====AI 검증 로직의 정확도====
 +
- 식사 관리 AI<br>
 +
주요 성능 지표는 아래와 같다. 이때, Accuracy는 전체 데이터에서 올바르게 예측한 비율, Precision은양성 예측 중 실제 양성의 비율, Recall은 실제 양성 중 올바르게 예측한 비율, F1-Score는 Precision과 Recall의 균형을 나타내는 지표이다.
 +
<br>
 +
{| class="wikitable" style="text-align:center;"
 +
|- style="font-weight:bold; vertical-align:middle;"
 +
! 성능 지표
 +
! 수치
 +
|-
 +
| Accuracy (정확도)
 +
| 0.9
 +
|-
 +
| Precision (정밀도)
 +
| 0.986
 +
|-
 +
| Recall (재현율, Sensitivity)
 +
| 0.901
 +
|-
 +
| F1-Score (조화 평균)
 +
| 0.941
 +
|}
  
  
 +
- 복약 관리 AI<br>
 +
주요 성능 지표는 아래와 같다. 이때, AP(Average Precision)는 한 클래스에서 Precision-Recall 곡선을 기반으로 계산된 단일 값이며, mAP(Mean Average Precision)는 여러 클래스에 대해 AP를 평균낸 값을 의미한다.
 +
<br>
 +
{| class="wikitable" style="text-align:center;"
 +
|- style="font-weight:bold; vertical-align:middle;"
 +
! 성능 지표
 +
! 수치
 +
! 비고
 +
|-
 +
| mAP@.5
 +
| 0.996
 +
| IoU(Intersection over Union)가 0.5일 때의 평균 정밀도
 +
|-
 +
| mAP@.5:.95
 +
| 0.867
 +
| style="vertical-align:middle;" | 더  엄격한 기준을 포함해 다양한 IoU 조건에서 모델의 성능을 평가  <br />
 +
|}
  
  
 +
- 종합<br>
 +
{| class="wikitable" style="text-align:center; background-color:#FFF;"
 +
|- style="font-weight:bold; vertical-align:middle; background-color:#F2F2F2;"
 +
! 분류
 +
! 평가 기능
 +
! 평가 기준
 +
! 평가
 +
! 비고  <br />
 +
|-
 +
| rowspan="3" style="font-weight:bold;" | AI 검증
 +
| style="vertical-align:middle; text-align:left;" | 식사 관리 AI
 +
| style="vertical-align:middle; text-align:left;" | 음식 포함 여부를 잘 구분한다.
 +
| 5
 +
| style="vertical-align:middle;" | 목표 정확도인 95%보다 5%  작음
 +
|-
 +
| style="vertical-align:middle; text-align:left;" | 복약 관리 AI
 +
| style="vertical-align:middle; text-align:left;" | 알약의  위치를 잘 탐지한다.
 +
| 10
 +
| style="vertical-align:middle;" |
 +
|-
 +
| style="vertical-align:middle; text-align:left;" | 혈압/혈당 관리 AI
 +
| style="vertical-align:middle; text-align:left;" | 혈압,  혈당 수치를 잘 인식한다.
 +
| 10
 +
| style="vertical-align:middle;" | <br />
 +
|}
  
 +
===향후계획===
 +
====어려웠던 내용들====
 +
- '''김*령'''
 +
* 프로젝트 설계 과정에서 기능의 정확한 명세를 작성하지 못했다. 따라서 개발 과정 중에 설계가 빈번하게 수정되고, 구현했던 내용을 다시 갈아엎는 경우가 몇 번 있었다.
 +
* 사용해본 적 없는 기술들을 (스프링 시큐리티, JWT, DB 마이그레이션 등) 학습하고 이를 프로젝트에 적용시키는 데에 어려움을 겪었다.
 +
** JWT를 활용한 로그인 인증 과정에서, 유저와 보호자를 분리해서 로그인 구현하는 부분이 상당히 어려웠다. 스프링 시큐리티는 디폴트로 한 개의 로그인 관련 구현체만을 요구하지만, UserDetails 관련 클래스와 GuardianDetails 관련 클래스를 분리하여 따로따로 구현하는 부분이 어려웠다.
 +
** 테스트 개발 환경에서는 MySQL로 진행하였지만, 배포 과정에서 MariaDB로 마이그레이션하는 부분이 조금 헷갈렸다.
 +
** 전반적인 스프링 시큐리티 환경 이해가 어려웠다. 필터 체인, 각 필터의 기능 및 이를 상속받아 구현하는 등, 적절히 이해하고 응용하는 부분이 어려웠다.
  
  
 +
- '''정*엽'''
 +
* 단순히 푸쉬알람으로 구현을 진행할 수도 있었으나, 푸쉬 알람의 경우 로컬 환경에서 인터넷 연결 상태에 따른 알람 시간 정확도가 떨어지는 문제가 발생할 수 있다.
 +
* 이러한 문제점을 극복하기 위해 실제 알람처럼 구현을 진행해야 했고, 이 과정에서 안드로이드 알람 모듈을 처음부터 직접 개발하여 기기의 내장 타이머를 사용할 수 있도록 해야 했다.
 +
* 모듈을 직접 구현하면서, 안드로이드 모듈과 React Native를 연결하는 브릿지 과정에서 오류가 많이 발생했고, 이를 해결하는데 시간을 많이 할애했다.
 +
* 유동적으로 어플리케이션을 구현하기 위해서는 API 명세를 깔끔하게 진행해야 한다. 관점의 차이는 있겠으나, 본 프로젝트에서는 BE와 API 통신을 진행할 때에는 최대한 데이터를 그대로 가져오도록 했다. BE에서 받아온 데이터를 FE쪽에서 적재적소에 맞게 데이터를 파싱하여 사용하는 방법을 채택했다.
 +
* 이러한 방법을 채택하여 명세의 변경이 발생하더라도 API 수정을 최소화하도록 노력했지만, FE에서는 파싱 메서드가 길어지는 문제가 있었다. 하지만, 이러한 방법이 옳다고 생각한다.
  
3.3 실행 (run)
 
  
 +
- '''이*규'''
 +
* 이전까지는 AI 모델 서비스들이 어떤 식으로 제공되고, 배포되는지에 대한 고민 없이 AI의 아키텍처와 성능을 올리는 부분에 대해서만 공부하였다. 하지만 이번 프로젝트의 어플리케이션은 AI 서비스를 필요로 하기 때문에, 구현된 AI 모델에 대한 배포까지 요구하였다. 이전까지는 고민해 본 적 없는 비교적 새로운 분야의 지식을 익히는 부분이 비교적 어려웠다.
 +
* 이번 어플리케이션은 다양한 모델을 필요로 하였다. 크게 3가지의 컴퓨터 비전 task를 수행하는 AI 모델(음식 사진인지 아닌지 분류하는 모델, 알약 사진인지 아닌지 분류하는 모델, 사진에 있는 디지털 숫자의 위치를 확인한 뒤 숫자를 인식하는 모델)을 구성해야 했다.
 +
* 특히, 음식 사진을 분류하는 모델의 경우에는 어플리케이션의 기능 명세가 수정되면서, 어떤 음식인지까지 구분하는 것을 필요로 하게 되었고, 결국 오픈소스 멀티모달 모델과 OpenAI API를 활용하는 방식으로 진행하게 되었다.
  
  
. SW 실행 방법 (단계에 따른 화면 포함)
+
- '''잘*** ***늠'''
 +
* 복약 관리 AI 모델 개발 과정에서 가장 큰 어려움은 적절한 데이터셋의 부재였다. 기존의 공개된 데이터셋이나 모델이 없었기 때문에, 약 사진 5000장을 수동으로 라벨링해야 했다. 데이터 라벨링 작업은 시간과 노력이 많이 소요되었으며, 이 데이터를 기반으로 YOLOv7 모델을 학습시켰다. 모델 학습에는 약 7시간이 걸렸고, 이후 결과를 평가하면서 다양한 평가 방법(mAP, Precision, Recall 등)을 적용해 성능을 확인했다. 이러한 과정은 번거로웠지만, 직접 데이터를 구축하고 검증해본 경험은 의미 있는 도전이었다.
 +
* 식사 관리 AI 모델 또한 어려움이 많았다. 초기 목표는 음식 사진을 분류해 "식사 여부"만 판단하는 단순한 기능을 구현하는 것이었지만, 성능이 예상보다 저조했다. 특히 여러 개의 데이터셋 수집과 정리에 많은 시간이 소요되었으며, 데이터의 다양성과 질을 확보하는 데 한계가 있었다. 결국 자체 학습 모델 대신 API 사용으로 전환했지만, 이 과정에서 얻은 실패 경험을 통해 AI 모델 구축의 한계와 현실적 해결책을 배우게 되었다.
 +
* AI API 활용은 처음 시도해본 영역이어서 초기 시행착오가 많았다. 처음에는 Google Vision API를 사용해보았으나 비전 관련 작업에서 성능이 만족스럽지 못했고, OpenAI API를 시도했지만 초기에는 잘 동작하지 않았다. 특히 비전 모델을 무료 플랜으로 사용했을 때 결과가 제대로 반환되지 않았고, 유료 플랜으로 전환하면서 비로소 원하는 결과를 얻을 수 있었다. 이 과정에서 AI API의 비용 효율성과 성능 최적화에 대한 실질적인 경험을 쌓을 수 있었다.
 +
* 모델 학습과 검증의 반복도 쉽지 않았다. 학습된 모델의 성능이 기대에 미치지 못하면 원인을 분석하고 데이터를 다시 정리하거나 하이퍼파라미터를 조정하는 작업을 반복해야 했다. 이러한 반복적인 작업 속에서 시간 관리와 효율적인 작업 흐름의 중요성을 체감하게 되었다.
 +
* 전반적으로 AI 파트를 맡으면서 단순히 모델 구현에 그치지 않고 데이터셋 구축, 모델 학습, 성능 평가, 그리고 실제 배포를 경험했다는 점이 가장 큰 도전이었다. 특히 처음 접한 AI API의 활용과 실제 애플리케이션에 적용하는 과정에서 실무적 역량을 한 단계 높일 수 있었다.
  
1. 메인 화면
+
====차후 구현할 내용====
 +
- FCM 서버 구현
 +
* FCM 서버를 구현함으로써, 유저 및 보호자에게 적절한 푸시 알람을 제공하는 기능
  
시작화면이자 메인화면이다.
 
상단바에서는 ‘단체 전시관’, ‘개인 전시관’, ‘FAQ’, ‘커뮤니티’, ‘마이페이지’, ‘로그인’ 화면으로 이동할 수 있고, ‘알림’ 기능을 사용할 수 있다. 로그인을 하지 않은 상태에서는 ‘커뮤니티’와 ‘마이페이지’ 화면으로 이동할 수 없다.
 
배너를 통해 홍보비를 지불한 단체 전시와 개인 전시의 홍보 포스터를 보여준다. 배너 내 포스터는 10초마다 전환되고, 관심 있는 포스터를 클릭하면 해당 단체 전시관 또는 작품 전시 화면으로 이동할 수 있다.
 
최근 업로드 된 단체 전시와 개인 전시를 3개씩 확인할 수 있고, 더보기(+) 버튼을 통해 ‘단체 전시관’/‘개인 전시관’ 화면으로 이동할 수 있다.
 
하단에서는 ‘로그아웃’ 버튼을 통해 로그아웃할 수 있고, 졸브르 개발자 팀의 연락처와 SNS를 확인할 수 있다.
 
상단바와 하단 부분은 레이아웃으로 항상 존재한다.
 
2. 로그인
 
  
이메일과 비밀번호를 입력해 로그인한다.
+
- 리포트 기능 보충
우측에는 광고비를 지불한 광고를 띄운다.
+
* 식사 미션 리포트에서 좀 더 다양한 영양소에 대한 정보 제공
‘회원가입’, ‘비밀번호 찾기’ 버튼을 통해 해당 화면으로 이동할 수 있다.
 
로그인이 완료되면 상단바의 ‘로그인’ 버튼은 로그인한 계정의 ‘닉네임’과 ‘프로필 사진’이 담긴 컨테이너로 변한다.
 
 
 
2-1. 로그인 > 회원가입
 
 
 
이메일, 비밀번호, 이름, 닉네임, 나이, 도시, 학교를 입력해 회원가입한다.
 
이메일은 로그인 시 아이디로 사용되기 때문에 고유한 값이어야 하므로 ‘중복 확인’을 진행한다. 이후 실제 존재하는 메일인지 확인하기 위해 인증번호를 해당 메일로 전송하고, 입력받아 확인하는 ‘메일 인증’ 과정을 거친다.
 
닉네임은 다른 사용자들에게 보여지는 사이트 내 이름이기 때문에 고유한 값이어야 하므로 ‘중복 확인’을 진행한다.
 
  
  
 +
- 보편적인 건강정보 제공
 +
* 노인 건강 관리 어플리케이션이라는 목적에 부합하게, 어플리케이션의 여러 요소에서 추가적인 건강 정보 제공
  
  
 +
- 보호자 기능 강화
 +
* 시니어 케어 어플리케이션 특성상, 보호자 - 시니어 사이의 '관리 체계'를 조금 더 다듬을 필요가 있다.
 +
* 보호자가 생성해준 알람 수락/거절 기능
  
  
 +
- 재미 요소 추가
 +
* 어플리케이션에 재미 요소를 추가할 필요가 있다.
 +
* 매달 완료한 미션 수 혹은 특정 조건에 맞춰 성장하는 캐릭터 추가
  
 +
===관련사업비 내역서===
 +
====구성원 및 추진체계====
 +
=====구성원=====
 +
{| class="wikitable" style="text-align:center;"
 +
|- style="font-weight:bold; vertical-align:middle; background-color:#FFFFCB;"
 +
! 이름
 +
! 담당 업무
 +
|- style="background-color:#FFF;"
 +
| style="vertical-align:middle;" | 잘*** *늠
 +
| AI 기능 구현
 +
|- style="background-color:#FFF;"
 +
| style="vertical-align:middle;" | 김*령
 +
| BE, DBA
 +
|- style="background-color:#FFF;"
 +
| style="vertical-align:middle;" | 정*엽
 +
| FE, 앱 디자인
 +
|-
 +
| style="vertical-align:middle;" | 이*규
 +
| AI 기능 구현  <br />
 +
|}
  
  
 +
=====추진체계=====
 +
{| class="wikitable" style="text-align:center;"
 +
|- style="font-weight:bold; vertical-align:middle; background-color:#FFFFCB;"
 +
! 추진 내용
 +
! 추진 기간
 +
! 세부 내용
 +
|-
 +
| style="vertical-align:middle; background-color:#FFF;" | 기획
 +
| style="background-color:#FFF;" | 2024.09.01. ~ 2024.09.30.
 +
| style="vertical-align:middle;" | 프로젝트 제안서, 경쟁력 분석 보고서 작성, 프로젝트 방향성 확정 및 주요 명세 확립
 +
|-
 +
| style="vertical-align:middle; background-color:#FFF;" | 프로젝트 설계
 +
| style="background-color:#FFF;" | 2024.10.01. ~ 2024.10.23.
 +
| style="vertical-align:middle;" | 각 도메인 세부 설계, 중간설계보고서 작성
 +
|-
 +
| style="vertical-align:middle; background-color:#FFF;" | 프로젝트 구현
 +
| style="background-color:#FFF;" | 2024.10.24. ~ 2024.11.13.
 +
| style="vertical-align:middle;" | 각 도메인 기능 구현
 +
|-
 +
| style="vertical-align:middle;" | 도메인 통합 및 프로토타입 발표
 +
| 2024.11.14. ~ 2024.11.20.
 +
| FE, BE, AI 통합, 프로토타입 완성 및 발표
 +
|-
 +
| style="vertical-align:middle;" | 통합 테스트 및 최종 수정
 +
| 2024.11.21. ~ 2024.12.18.
 +
| style="vertical-align:middle;" | 통합 테스트, 사용자 테스트, 최종보고서 작성
 +
|}
  
 
+
====개발사업비 내역서====
 
+
{| class="wikitable" style="text-align:center; background-color:#FFF;"
2-2. 로그인 > 비밀번호 찾기
+
|- style="font-weight:bold; vertical-align:middle; background-color:#F2F2F2;"
      
+
! rowspan="2" colspan="2" | 항 목<br />    (품명, 규격)
 
+
! rowspan="2" |
모달창에서 이메일 작성을 통해 인증번호를 해당 메일로 전송하고, 입력받아 가입한 메일인지 확인하는 ‘메일 인증’ 과정을 거친다. 인증이 완료되면 새로운 비밀번호를 입력해 비밀번호를 수정한다.
+
! rowspan="2" | 단 가
 
+
! colspan="2" | 금 액
 
+
! rowspan="2" | 비 고
3. 마이페이지
+
|- style="font-weight:bold; vertical-align:middle; background-color:#F2F2F2;"
① 내 정보
+
| 계
 
+
| 현금
개인 정보(이메일, 이름, 닉네임, 나이, 도시, 학교, 프로필 사진)를 확인한다.
+
|-
‘수정’ 버튼을 눌러 개인 정보 수정 화면으로 이동할 있다.
+
| rowspan="9" style="vertical-align:middle;" | 직 접 개 발 비
①-1. 내 정보 > 수정
+
| style="text-align:left;" | openAI chatGPT 구독료
 
+
| 3
개인 정보(닉네임, 나이, 도시)를 수정하고, 프로필 사진을 추가 및 수정한다.
+
| 31
 
+
| 94
② 내 프로젝트
+
| 94
 
+
| style="vertical-align:middle; text-align:left;" | 단가는  세 달 분을 3으로 나누고 소수점을 절삭함
생성한 프로젝트를 확인한다.
+
|-
‘새로 만들기’ 버튼을 눌러 새 프로젝트를 생성할 수 있다.
+
| style="text-align:left;" | claude 구독료
각 프로젝트를 누르면 프로젝트의 상세 화면으로 이동할 수 있다.
+
| 3
 
+
| 31
-1. 내 프로젝트 > 생성
+
| 94
 
+
| 94
 
+
| style="vertical-align:middle; text-align:left;" | 단가는  세 달 분을 3으로 나누고 소수점을 절삭함
 
+
|-
전시의 제목, 판매 여부, 가격, 종류, 크기, 제작 방식, 작품 소개, 작가의 한마디를 입력한다.
+
| style="text-align:left;" | openAI API 구독료
썸네일(전시회의 대표 사진이자 가상 전시회에 배치될 사진)과 추가 사진들을 첨부하고, 썸네일의 3D 모델 생성 여부를 선택한다. 만약 3D 모델 생성 여부에 체크를 하지 않았다면 2D 전시회의 배경을 선택하고, 3D 모델 생성 여부에 체크했다면 3D 전시회의 배경을 선택해 등록한다.
+
| 1
 
+
| 7
-2. 내 프로젝트 > 상세
+
| 7
 
+
| 7
 
+
| style="vertical-align:middle; text-align:left;" | 소수점  절삭함
각 프로젝트의 정보를 확인한다.
+
|-
‘배포’ 버튼을 클릭하면 ‘개인 전시관’에 전체 게시된다. 배포가 되면 ‘배포’ 버튼은 ‘배포 완료’ 컨테이너로 변한다. ‘배포’ 버튼을 누르기 전까지는 작품 정보를 작성자(작가)만 확인할 수 있다.
+
| style="vertical-align:middle; text-align:left;" | 프런트엔드 개발을 위한 테스트 입문
‘수정’, ‘일기장’ 버튼을 눌러 해당 화면으로 이동할 수 있다.
+
| 1
‘삭제’ 버튼을 눌러 프로젝트를 삭제할 수 있다.
+
| 25
 
+
| 25
-3. 내 프로젝트 > 상세 > 수정
+
| 25
 
+
| style="vertical-align:middle; text-align:left;" |
프로젝트 정보를 수정한다.
+
|-
-4. 내 프로젝트 > 상세 > 일기장
+
| style="vertical-align:middle; text-align:left;" | 프런트엔드 개발을 위한 보안 입문
 
+
| 1
 
+
| 23
게시판 형식의 일기장에서 생성한 일기를 확인한다.
+
| 23
‘글쓰기’ 버튼을 눌러 새 일기를 작성할 수 있다.
+
| 23
각 일기를 누르면 일기의 상세 화면으로 이동할 수 있다.
+
| style="vertical-align:middle; text-align:left;" |
‘파노라마 보기(파노라마 닫기)’ 버튼을 눌러 각 일기에 첨부한 사진을 모아 볼 수 있다. 작품의 시작부터 끝까지 완성되어 가는 과정을 사진으로 한눈에 모아 볼 수 있다. 스크롤을 올리거나 내리면 가로로 스크롤되어 파노라마가 좌우로 움직인다.
+
|-
 
+
| style="vertical-align:middle; text-align:left;" | 이것이 자바다
-5. 내 프로젝트 > 상세 > 일기장 > 생성
+
| 1
 
+
| 32
제목, 내용을 입력하고 사진을 첨부해 등록한다.
+
| 32
 
+
| 32
 
+
| style="vertical-align:middle; text-align:left;" |
 
+
|-
 
+
| style="vertical-align:middle; text-align:left;" | 만들면서 배우는 클린 아키텍처
 
+
| 1
 
+
| 16
 
+
| 16
-6. 내 프로젝트 > 상세 > 일기장 > 상세
+
| 16
 
+
| style="vertical-align:middle; text-align:left;" |
각 일기의 제목, 작성 시간, 내용, 사진을 확인한다.
+
|-
‘수정’ 버튼을 눌러 해당 화면으로 이동할 수 있다.
+
| style="vertical-align:middle; text-align:left;" | 프로그래밍 대회에서 배우는 알고리즘 문제 해결 전략
‘삭제’ 버튼을 눌러 일기를 삭제할 수 있다.
+
| 1
 
+
| 45
-7. 내 프로젝트 > 상세 > 일기장 > 상세 > 수정
+
| 45
 
+
| 45
일기의 제목, 내용, 사진을 수정한다.
+
| style="vertical-align:middle; text-align:left;" |
 
+
|- style="vertical-align:middle;"
③ 내 단체 전시관
+
| 합 계
 
+
|
생성하거나 참여하고 있는 단체 전시관을 확인한다.
+
|
‘새로 만들기’ 버튼을 눌러 새 단체 전시관을 생성할 수 있다.
+
|
‘단체 전시 초대 현황’ 버튼을 눌러 해당 화면으로 이동할 수 있다.
+
|
각 전시관을 누르면 전시관의 상세 화면으로 이동할 수 있다.
+
| style="text-align:left;" | <br />
-1. 내 단체 전시관 > 생성
+
|}
 
 
단체 전시관 이름, 소개를 입력하고, 상품과 개최 기간을 선택하고, 썸네일(대표 사진)을 첨부해 등록한다.
 
 
 
-2. 내 단체 전시관 > 상세
 
 
 
각 단체 전시관의 정보와 멤버들을 확인한다.
 
단체 전시관을 생성한 ‘매니저’의 경우, ‘초대(+)’ 버튼을 눌러 모달창에서 초대할 멤버의 닉네임을 입력해 새 멤버를 초대할 수 있다. ‘매니저’의 초대를 받아 단체 전시관에 참여한 ‘일반 멤버’의 경우, 새 멤버를 초대할 수 없다.
 
단체 전시관을 생성한 ‘매니저’의 경우, ‘수정’ 버튼을 눌러 해당 화면으로 이동할 수 있다. ‘일반 멤버’의 경우, ‘수정’ 버튼이 존재하지 않는다.
 
단체 전시관을 생성한 ‘매니저’의 경우, ‘삭제’ 버튼을 눌러 단체 전시관을 삭제할 수 있다. ‘일반 멤버’의 경우, ‘삭제’ 버튼이 존재하지 않는다.
 
‘프로젝트 추가’ 버튼을 눌러 해당 화면으로 이동할 수 있다.
 
 
 
-3. 내 단체 전시관 > 상세 > 수정
 
 
 
단체 전시관 정보를 수정한다.
 
 
 
-4. 내 단체 전시관 > 상세 > 프로젝트 추가
 
 
 
해당 단체 전시관에 업로드 할 내 프로젝트를 골라 등록한다.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
-5. 내 단체 전시관 > 단체 전시 초대 현황
 
 
 
초대받은 단체 전시관 목록을 확인한다.
 
각 초대를 ‘수락’ 또는 ‘거절’할 수 있다.
 
‘수락’할 경우, ‘내 단체 전시관’에 추가되고, 해당 단체 전시관의 멤버들에 ‘일반 멤버’로 추가된다.
 
 
 
④ 초대장 만들기
 
 
 
내 프로젝트 중 배포한 프로젝트들과 내 단체 전시관들 중 주변인에게 공유하고 싶은 것을 고른다.
 
 
 
-1. 초대장 만들기 > 만들기
 
 
 
 
 
 
 
공유하려는 전시의 제목(이름), 소개, 썸네일을 확인한다.
 
‘Gmail로 공유하기’ 버튼을 눌러 수신인의 이름과 이메일을 작성하고 초대장 메일을 보낸다. 수신인은 초대장 메일에서 발신인의 닉네임과 전시의 제목(이름), 소개, 썸네일을 확인할 수 있다. 그리고 접속 링크를 통해 4-1 화면으로 접속할 수 있다.
 
‘카카오톡으로 공유하기’ 버튼을 눌러 카카오톡을 실행하고 친구 목록에서 수신인을 골라 초대장 톡을 보낸다. 수신인은 초대장 톡을 통해 4-1 화면으로 접속할 수 있다.
 
모바일에서 초대장을 통해 4-1 화면으로 접속할 경우, 가로 모드로 돌리면 전시를 잘 감상할 수 있도록 따로 UI를 구현했다.
 
 
 
4. 개인 전시관
 
 
 
개인 전시를 관람한다.
 
‘메인 화면’의 배너에 홍보되는 개인 전시는 ‘이번 달 추천’ 탭에서 따로 확인할 수 있다.
 
회화, 디자인, 사진, 조각 등 종류에 따른 전시만 분류할 수 있고, 제목을 검색할 수 있다.
 
썸네일과 제목이 표시된 각 전시를 누르면 전시 상세 화면으로 이동할 수 있다.
 
 
 
 
 
 
 
 
 
4-1. 개인 전시관 > 상세
 
 
 
 
 
가상 전시회에 배치된 작품을 감상한다.
 
작가가 3D 모델 생성 여부에 체크했다면, 3D 전시회를 감상할 수 있다. 썸네일(전시회의 대표 사진)로 생성된 입체 모형이 3D 배경 안에 위치한 모습을 감상한다. 마우스를 통해 다양한 각도로 돌려 볼 수 있다.
 
작가가 3D 모델 생성 여부에 체크하지 않았다면, 2D 전시회를 감상할 수 있다. 2D 배경을 바탕으로 액자에 담긴 썸네일(전시회의 대표 사진)을 감상한다.
 
전시의 제목, 판매 여부를 확인한다.
 
우측의 ‘작가’ 버튼을 눌러 간단한 작가 소개를 확인하고, ‘소개’, ‘일기장’, ‘채팅’ 버튼을 눌러 해당 화면으로 이동할 수 있다. 작가 본인의 전시회의 채팅은 불가능하다.
 
하단의 ‘리뷰 보기(리뷰 닫기)’ 버튼을 눌러 전시의 리뷰를 작성/삭제 및 확인할 수 있다.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4-2. 개인 전시관 > 상세 > 작가
 
 
 
작가의 닉네임과 학교를 확인한다.
 
 
 
4-3. 개인 전시관 > 상세 > 소개
 
 
 
전시의 썸네일과 추가 사진을 감상한다.
 
전시의 제목, 작가, 크기, 종류, 제작 방식, 가격, 작품 소개, 작가 소개, 작가의 한마디를 확인한다.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4-4. 개인 전시관 > 상세 > 일기장
 
 
 
 
 
게시판 형식의 일기장에서 작가가 생성한 일기를 확인한다.
 
각 일기를 누르면 일기의 상세 화면으로 이동할 수 있다.
 
‘파노라마 보기(파노라마 닫기)’ 버튼을 눌러 각 일기에 첨부한 사진을 모아 볼 수 있다. 작품의 시작부터 끝까지 완성되어 가는 과정을 사진으로 한눈에 모아 볼 수 있다.
 
전시회의 작가는 ‘글쓰기’ 버튼을 눌러 새 일기를 작성할 수 있다(3. 마이페이지의 ②-5). 작가가 아닌 다른 모든 사용자들에게는 ‘글쓰기’ 버튼이 존재하지 않는다.
 
 
 
4-5. 개인 전시관 > 상세 > 일기장 > 상세
 
 
 
각 일기의 제목, 작성 시간, 내용, 사진을 확인한다.
 
전시회의 작가는 ‘수정’ 버튼을 눌러 해당 화면(3. 마이페이지의 ②-7)으로 이동할 수 있고, ‘삭제’ 버튼을 눌러 일기를 삭제할 수 있다. 작가가 아닌 다른 모든 사용자들에게는 ‘수정’과 ‘삭제’ 버튼이 존재하지 않는다.
 
 
 
 
 
 
 
 
 
4-6. 개인 전시관 > 상세 > 채팅
 
 
 
전시회의 작가와 채팅을 한다.
 
작품의 판매 여부 및 상태에 상관없이 채팅을 나눌 수 있고, 거래뿐만 아니라 다양한 이야기를 주고받을 수 있다.
 
이전 채팅 내용과 채팅을 보낸 시각을 확인할 수 있다.
 
 
 
5. 단체 전시관
 
 
 
단체 전시를 관람한다.
 
‘메인 화면’의 배너에 홍보되는 단체 전시는 ‘이번 달 추천’ 탭에서 따로 확인할 수 있다.
 
썸네일과 이름이 표시된 각 전시관을 누르면 단체 전시관 상세 화면으로 이동할 수 있다.
 
전시관 이름을 검색할 수 있다.
 
 
 
 
 
 
 
 
 
5-1. 단체 전시관 > 상세
 
 
 
단체 전시관의 이름과 소개를 확인하고, 단체 전시관에 등록된 개인 전시들을 관람한다.
 
회화, 디자인, 사진, 조각 등 종류에 따른 전시만 분류할 수 있다.
 
썸네일과 제목이 표시된 각 전시를 누르면 전시 상세 화면으로 이동할 수 있다. 그 이후는 4-1 ~ 4-6 화면과 동일하다.
 
 
 
6. FAQ
 
 
 
자주하는 질문과 그에 대한 답변을 확인한다.
 
 
 
 
 
 
 
 
 
7. 커뮤니티
 
 
 
게시판 형식의 커뮤니티에서 게시글들을 확인한다. 사용자들은 졸업 작품, 예술 활동, 친목 등 다양한 주제의 글을 작성 및 공유할 수 있다.
 
‘글쓰기’ 버튼을 눌러 새 게시글을 작성할 수 있다.
 
자유게시판, 질문게시판에 따른 게시글만 분류할 수 있고, 제목과 작성자를 검색할 수 있다.
 
각 게시글을 누르면 게시글의 상세 화면으로 이동할 수 있다.
 
각 페이지 별로 10개의 게시글을 확인할 수 있다.
 
 
 
7-1. 커뮤니티 > 생성
 
 
 
게시판 분류를 선택하고, 제목, 내용을 입력하고, 사진을 첨부해 등록한다.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
7-2. 커뮤니티 > 상세
 
 
 
각 게시글의 게시판 분류, 제목, 작성 시간, 내용, 사진을 확인한다.
 
하단에서 댓글을 작성/삭제 및 확인할 수 있다. 각 페이지 별로 5개의 댓글을 확인할 수 있다.
 
게시글의 작성자는 ‘수정’ 버튼을 눌러 해당 화면으로 이동할 수 있고, ‘삭제’ 버튼을 눌러 게시글을 삭제할 수 있다. 작성자가 아닌 다른 모든 사용자들에게는 ‘수정’과 ‘삭제’ 버튼이 존재하지 않는다.
 
 
 
7-3. 커뮤니티 > 상세 > 수정
 
 
 
게시글의 게시판 분류, 제목, 내용, 사진을 수정한다.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
+ 알림
 
   
 
‘채팅’ 섹션에서 채팅을 주고받은 채팅방을 확인할 수 있다. 각 채팅방을 누르면 이전 채팅 내용과 채팅을 보낸 시각을 확인할 수 있고, 상대에게 채팅을 보낼 수 있다.
 
 
 
===완료작품의 평가===
 
내용
 
 
 
 
 
 
 
===구성원 및 추진 체계===
 
 
 
◇ 김민서
 
- PM
 
- API 명세서 설계
 
- DB 스키마 설계
 
- Backend 개발(채팅)
 
- AI 개발
 
- AI 서버 배포
 
 
 
◇ 고수
 
- API 명세서 설계
 
- DB 스키마 설계
 
- Backend 개발(전시, 인증/인가, 유저 관리, 알림)
 
- Backend 서버 배포
 
 
 
◇ 김태현
 
- API 명세서 설계
 
- DB 스키마 설계
 
- Backend 개발(커뮤니티, 알림)
 
 
 
◇ 조서영
 
- UI 설계
 
- Frontend 개발(전체)
 
- Frontend 서버 배포
 
 
 
===향후계획===
 
 
 
가. 어려웠던 내용들
 
 
 
- 이전 채팅 읽음 처리 및 읽지 않은 메시지 카운팅 기능을 RDB로 구현하려고 시도했으나, 효율적이지 않다는 점을 뒤늦게 발견하였다. 
 
- 모델 해상도가 낮아 복잡한 이미지의 경우 3D 변환이 다소 불안정하였다.
 
- 모델 서버 구축
 
- 모델 서버와 기존 서버와의 싱크 방법
 
- JWT 토큰을 통한 다른 사용자의 로그인 여부 판별이 불가능해 FCM을 통한 실시간 푸쉬알림 구현이 불가능했다.
 
 
 
 
 
나. 차후 구현할 내용
 
 
 
- 인메모리 기반 데이터베이스인 Redis를 활용하여 실시간 채팅 메시지 카운팅과 채팅 읽음 처리를 구현한다.
 
- 모델 파라미터 수정을 통해 모델 해상도를 높이고, 모델 실행에 따른 메모리 사용량을 줄여 더욱 최적화된 결과를 제공한다.
 
- 실시간 알림 기능
 
- React Native를 통한 모바일 애플리케이션 제작
 
  
 
===부록===
 
===부록===
A-1 참고문헌 및 참고사이트
+
====소프트웨어 프로그램 소스====
model-viewer: https://modelviewer.dev/
+
https://github.com/orgs/UOS-capstone-design/repositories
카카오톡 공유: https://developers.kakao.com/docs/latest/ko/message/js-link
 
 
 
 
 
A-2 관련특허
 
X
 
 
 
 
 
A-3 소프트웨어 프로그램 소스
 
https://github.com/Jolvre
 

2024년 12월 19일 (목) 04:31 판

프로젝트 개요

기술개발 과제

국문 : 알람 모니터링 서비스 ‘알려줘’

영문 : Alarm Monitoring Service ‘Allyojo’

과제 팀명

알려줘

지도교수

이경재 교수님

개발기간

2024년 9월 ~ 2024년 12월 (총 4개월)

구성원 소개

서울시립대학교 컴퓨터과학부 2021920046 잘리너바 아이가늠(팀장)

서울시립대학교 컴퓨터과학부 2020920009 김성령

서울시립대학교 컴퓨터과학부 2018920054 정성엽

서울시립대학교 수학과 2020540023 이명규

서론

개발 과제의 개요

개발 과제 요약

본 프로젝트는 시니어 케어를 위한 알람 애플리케이션이다. 일반적인 알람 앱과 달리 '미션 수행'과 '보호자 관리' 기능을 통해 시니어의 일상생활을 체계적으로 관리한다.

알람은 단순 알림을 넘어 식사, 복약, 혈당관리 등의 시니어 맞춤 활동을 미션으로 제시하며, 카메라를 통한 비전 기술로 미션 수행 여부를 자동으로 검증한다.

또한 가족이나 보호자가 시니어의 일상 활동을 모니터링하고 관리할 수 있는 보호자 연동 시스템을 갖추고 있다. 이러한 기능들이 유기적으로 연결되어 시니어의 건강한 생활 관리와 보호자의 효율적인 케어를 동시에 실현한다.

개발 과제의 배경

우리는 더 건강한 삶을 위해 매일 수행해야 하는 필수적인 일들이 있다. 규칙적인 운동처럼 자발적으로 실천해야 하는 일들이 있는 반면, 약 복용이나 혈압 및 혈당 체크처럼 절대 놓쳐서는 안 되는 일들 도 있다.

질병관리청의 노인 만성질환 실태조사에 따르면, 65세 이상 노인의 59%가 고혈압을, 30%가 고지혈증을, 23%가 당뇨를 앓고 있다.

더불어 노인 10명 중 4명 이상이 5가지 이상의 약을 복용하고 있어, 정기적인 약 복용의 중요성이 매우 크다. 실제로 당뇨를 앓고 있는 필자의 할머니도 정시 복약을 잊어 질환이 악화된 경험이 있다.

이러한 상황에서 시니어 케어 어플리케이션의 필요성은 분명하다. 그러나 현재 시장의 알람 어플리케이션들은 대부분 수면과 기상에만 초점이 맞춰져 있다. 따라서 시니어의 건강 관리에 특화된 알람 어플리케이션은 이러한 시장의 수요를 충족시킬 수 있을 것으로 기대된다.

개발 과제의 목표 및 내용

1. 미션 알람

- 본 프로젝트의 어플리케이션은 단순한 알람을 제공하는 것이 아닌, 미션이 동반되는 '미션 알람'을 제공한다. 따라서 4가지 미션(혈당 관리, 혈압 관리, 복약 관리, 식사 관리)이 할당된 알람을 사용자는 등록할 수 있다.

- 알람은 정해진 시간에 Alert되며, 백그라운드에서도 동작할 수 있다. 알람이 Alert되면 어떤 미션인지를 알려주고, 바로 카메라를 사용할 수 있는 UI를 제공한다.

2. 미션 검증

- 정해진 미션을 제대로 수행했는지 확인하기 위해 컴퓨터 비전 기술을 사용한다. 이를 통해 미션 수행 여부를 판별한다.

- 미션 수행 여부를 판별함과 동시에 리포트에 제공할 데이터를 컴퓨터 비전 기술을 활용하여 추출한다. 혈당 / 혈압 미션의 경우 기기의 수치를 추출하고, 식사 관리의 경우 먹은 사진의 영양소를 1인분 기준으로 추출한다.

3. Todo 기능

- 어떤 날짜에 어떤 일을 수행해야하는지 사용자가 기록하고 관리할 수 있는 Todo 기능을 제공한다.

4. 엄격 모드

- 엄격 모드를 통해 미션 수행을 더욱 강제할 수 있다. 엄격 모드를 설정하지 않으면 미션 수행이 강제되지 않는다.

- 엄격 모드를 설정할 경우, 미션이 수행되지 않을 경우 계속해서 알람이 반복된다. 엄격 모드를 설정한 경우, 반복적인 알람 발생을 위해 알람 반복 시간을 설정해야만 한다.

- 불편한 사용자 경험을 최소화하기 위해 엄격모드를 사용하더라도 3회 이상 반복되는 경우, 알람을 종료할 수 있는 기능을 제공한다.

5. 리포트

- 리포트는 혈당 관리 / 혈압 관리 / 식사 관리의 미션에 한해서만 제공된다.

- 혈당 관리와 혈압 관리는 기존에 수행한 미션을 검증하는 과정에서 추출된 데이터를 활용하여 차트를 제공한다. 해당 미션들은 최대 한달까지 제공받을 리포트의 기한을 설정할 수 있다.

- 식사 관리의 경우, 당일 식사 미션에 대해서만 리포트 제공이 가능하다. 컴퓨터 비전을 통해 추출한 음식 데이터와 백엔드에 저장된 1인분 기준 음식 데이터를 기준으로 사용자의 나이와 성별을 감안하여 데이터를 제공한다.

6. 보호자 알람 생성

- 보호자는 시니어를 추가하고, 알람을 생성해줄 수 있다. 이를 통하여 시니어에게 미션 수행을 어느정도 강제할 수 있다.

- 다만, 보호자가 생성해준 알람도 시니어가 삭제할 수 있도록 하여 불편한 사용자 경험을 최소화하고자 한다.

7. 프리미엄 업그레이드

- 일반 회원과 프리미엄 회원으로 구분하여 어플리캐이션이 동작한다. 일반 회원의 경우 알람의 생성을 최대 3개로 제한하여 동작하도록 한다. 또한, 보호자 기능을 사용할 수 없다.

- 프리미엄 회원의 경우 알람 생성에 제한을 두지 않으며, 보호자 기능을 사용할 수 있다. 보호자와 시니어의 관계는 1:N의 관계를 형성하기 때문에 이러한 비즈니스 모델이 수익 창출을 극대화할 수 있을거라고 판단한다.

관련 기술의 현황

관련 기술의 현황 및 분석(State of art)

  • 전 세계적인 기술현황

◇ 알람 앱의 발전 - 인터랙티브 알람 앱: 최근 사용자 참여를 유도하는 다양한 알람 앱들이 등장하고 있다. 예를 들어, 수학 문제를 풀거나, 특정 장소로 이동해야만 알람이 꺼지는 앱 등이 있다. 이러한 앱들은 사용자의 적극적인 행동을 유도하여 수면 관성(sleep inertia)을 줄이는 데 도움을 준다.- 사진 기반 알람 앱: 사용자가 특정 사물이나 장소의 사진을 찍어야 알람이 꺼지는 앱들이 있다. 이는사용자가 침대에서 벗어나 특정 행동을 취하도록 유도하여 기상 습관을 개선한다.

◇ 비전 기술과 건강 관리 - 이미지 인식 기술의 발전: 딥러닝과 머신러닝의 발전으로 이미지 인식 기술이 크게 향상되었다. 의료분야에서는 피부 질환 진단, 식품의 영양 성분 분석 등 다양한 응용이 이루어지고 있다.- 모바일 기기의 비전 기술 적용: 스마트폰의 카메라 성능 향상과 함께 모바일 앱에서 실시간 이미지 분석이 가능해졌다. 이는 사용자의 편의성을 높이고, 건강 관리에 직접적인 도움을 줄 수 있다.

◇ 건강 모니터링 및 리포트 - 헬스케어 앱의 대중화: 다양한 건강 모니터링 앱들이 사용자들의 활동량, 심박수, 수면 패턴 등을 추적하여 건강 관리를 지원하고 있다.- 데이터 시각화 및 분석: 수집된 데이터를 기반으로 사용자에게 이해하기 쉬운 리포트를 제공하여 자기관리에 대한 동기부여를 높이고 있다.


  • 기술 로드맵

시장상황에 대한 분석

  • 경쟁제품 조사 비교

내용

  • 마케팅 전략 제시

내용

개발과제의 기대효과

기술적 기대효과

내용

경제적, 사회적 기대 및 파급효과

내용

기술개발 일정 및 추진체계

개발 일정

내용

구성원 및 추진체계

내용

설계

설계사양

제품의 요구사항

내용

설계 사양

내용

개념설계안

내용

이론적 계산 및 시뮬레이션

내용

상세설계 내용

내용

결과 및 평가

완료 작품의 소개

프로토타입 사진 혹은 작동 장면

- 메인화면
메인화면1.png

  • 어플리케이션을 실행하면 가장 먼저 볼 수 있는 화면이다.
  • 아이디와 비밀번호, 그리고 보호자 여부를 체크하여 로그인을 진행한다.


- 회원가입
회원가입1.png 회원가입2.png 회원가입3.png
회원가입4.png 회원가입5.png 회원가입6.png

  • 회원가입을 진행하는 UI이다.
  • 아이디, 비밀번호, 전화번호를 차례로 입력한다.
  • 전화번호를 입력하면 인증번호를 받을 수 있다. 이 인증번호를 입력하여 전화번호 인증을 완료한다.
  • 보호자 여부를 체크한다.
  • 리포트 분석에 사용될 나이, 성별을 입력한다.
  • 닉네임을 입력하여 회원가입을 마친다.


- 알람 기능
알람 기능1.png 알람 기능2.png 알람 기능3.png

  • 알람 메인 페이지에서는 현재 설정해놓은 알람을 조회할 수 있다.
  • 하나의 알람은 반드시 하나의 미션을 포함하여야 한다.
  • 아래 종을 누르면 새로운 알람을 설정할 수 있다.
  • 알람 설정 페이지에서 알람 시각, 반복 여부, 엄격모드 여부, 미션, 진동 여부, 알람 볼륨, 반복 간격을 설정하여 새 알람을 만들 수 있다.


- 알려줘 페이지 - 할 일 확인하기
알려줘 페이지 - 할 일 확인하기1.png 알려줘 페이지 - 할 일 확인하기2.png 알려줘 페이지 - 할 일 확인하기3.png 알려줘 페이지 - 할 일 확인하기4.png

  • 할 일 확인하기 페이지에서는 알람 이외에 잊지 않고 해야 할 일들을 등록할 수 있다.


알려줘 페이지 - 할 일 확인하기5.png

  • 할 일의 날짜와 시간, 제목, 추가 설명을 입력하여 할 일 등록을 마친다.


- 알려줘 페이지 – 미션 모아보기
알려줘 페이지 – 미션 모아보기1.png

  • 미션 모아보기 탭에서는 현재 수행 중인 미션을 한 눈에 확인할 수 있다.
  • 매일 울리는 알람의 명우 ‘매일’ 탭에서, 그 외의 경우 ‘매주’ 탭에서 확인할 수 있다.


- 알려줘 페이지 – 미션 확인하기
알려줘 페이지 – 미션 확인하기1.png

  • 미션 확인하기 탭에서는 알람이 발생하였지만 인증을 바로 진행하지 않았을 때의 알람을 확인할 수 있다.
  • ‘인증하기’ 버튼을 눌러 해당 알람에 대한 미션 수행 결과를 인증할 수 있다.


- 알람 발생
알람 발생1.png 알람 발생2.png 알람 발생3.png

  • 알람이 발생했을 때의 화면이다.
  • ‘사진 찍기’ 버튼을 눌러 미션 인증을 진행할 수 있다.
  • ‘알람 종료’ 버튼을 클릭하면 ‘알려줘 페이지 – 미션 확인하기’ 탭에서 확인할 수 있다.


- 리포트
리포트1.png 리포트2.png 리포트3.png

  • 리포트를 조회할 수 있는 화면이다.
  • 수행한 적이 있는 미션을 선택한 후 기간을 선택하면 해당 미션에 대한 분석을 받을 수 있다.


리포트4.png 리포트5.png 리포트6.png 리포트7.png

  • 리포트 조회 화면이다.
  • 혈당 미션의 경우 미션 성공률과 기준 혈당과의 비교를 확인할 수 있다.
  • 혈압 미션의 경우 미션 성공률과 수축기/이완기 혈압 변화, 그리고 고혈압 기준치와의 비교를 확인할 수 있다.
  • 식사 미션의 경우 그 날 섭취한 식사 메뉴와 영양소, 그리고 하루 영양소 권장 섭취량과의 비교를 확인할 수 있다.


- 보호자
보호자1.png 보호자2.png

  • 보호자로 로그인하였을 경우 볼 수 있는 화면이다.
  • 보호자는 노인의 알람을 설정해줄 수 있다. 알람 세팅 과정은 노인과 동일하다.
  • 보호자가 설정해 준 알람에 대한 리포트를 조회할 수 있다. 조회되는 내용은 노인의 리포트 조회 내용과 동일하다.

완료 작품의 평가

평가항목 평가방법 적용기준 개발 목표치 비중 (%)
1. 기능 구현의 충실도 모든 기능이 정상적으로 잘 동작하는지 확인한다. 명세에 포함되어 있는 기능이 동작하지 않을 때마다 –1점, 미흡하게 동작하면 –0.5점 33점 50
2. AI 검증 로직의 정확도 테스트 셋을 활용하여 검증 로직의 정확도를 확인한다. 목표 정확도 95% 이상, 1% 미달마다 –1점 30점 50

기능 구현의 충실도

○: 모든 기능이 의도대로 동작함
△: 기능은 동작하나 다소 미흡한 부분이 있음 (-0.5점)
❌: 기능이 동작하지 않거나 구현하지 못함 (-1점)

분류 평가 기능 평가 기준 평가 비고
회원가입 유저 회원가입 유저 회원가입 과정이 원활하게 진행된다.
보호자 회원가입 보호자 회원가입 과정이 원활하게 진행된다.
전화번호 문자 인증 전화번호 문자 인증이 원활하게 진행된다.
아이디 중복 체크 아이디 중복 없이 가입이 가능하다. 아이디가 중복된 경우 적절한 피드백이 주어진다.
로그인 유저 로그인 오류 없이 로그인이 진행된다.
보호자 로그인 오류 없이 로그인이 진행된다.
아이디/비밀번호 찾기 아이디/비밀번호 찾기 기능을 사용할 수 있다.
알람 설정 시간 설정 알람의 시간이 잘 설정된다.
엄격 모드 엄격 모드가 설정된다.
반복 설정 알람 반복 설정이 원활하게 동작한다.
미션 추가 네 가지 미션 모두 잘 선택되고 반영된다.
세부 알람 설정 진동, 알람 볼륨, 반복 간격이 잘 설정된다. 알람 볼륨이 잘 작동되지 않는다는 테스트 결과 존재
알람 발생 알람 발생 페이지 알람이 발생한 경우 사용자에게 적절한 피드백을 제공한다.
사진 찍기 사진 찍기 기능이 잘 동작한다.
알람 종료 기능 알람 종료 시 종료된 알람이 알려줘 페이지에 반영된다. 알람 종료 시 알람이 다시 울리지 않는다.
알려줘 페이지 할 일 확인하기 사용자에게 적절한 UI를 제공한다.
할 일 추가 할 일이 원활하게 추가된다.
할 일 수정 할 일이 원활하게 수정된다.
할 일 삭제 할 일이 원활하게 삭제된다.
미션 모아보기 진행 중인 미션이 잘 표시된다.
미션 모아보기 UI 사용자에게 적절한 UI를 제공한다.
미션 확인하기 알람 종료된 미션이 잘 표시된다.
미션 확인하기 - 인증 인증하기 버튼이 잘 동작한다. 인증 과정에서 오류가 발생했다는 테스트 결과 존재
리포트 리포트 항목 선택 리포트 미션과 기간이 원활하게 설정된다.
혈압 리포트 조회 혈압 미션 리포트가 원활하게 조회된다.
혈당 리포트 조회 혈당 미션 리포트가 원활하게 조회된다.
식사 리포트 조회 식사 미션 리포트가 원활하게 조회된다.
복약 리포트 조회 복약 미션 리포트가 원활하게 조회된다.
보호자 관리하는 유저 추가 유저의 전화번호를 입력하여 ‘관리하는 유저’로 등록할 수 있다.
유저 알람 추가 보호자의 유저 알람 추가 기능이 원활하게 잘 진행된다.
유저 알람 수정 보호자의 유저 알람 수정 기능이 원활하게 잘 진행된다.
유저 알람 삭제 보호자의 유저 알람 삭제 기능이 원활하게 잘 진행된다.
유저 리포트 조회 관리하는 유저의 리포트를 조회할 수 있다.

AI 검증 로직의 정확도

- 식사 관리 AI
주요 성능 지표는 아래와 같다. 이때, Accuracy는 전체 데이터에서 올바르게 예측한 비율, Precision은양성 예측 중 실제 양성의 비율, Recall은 실제 양성 중 올바르게 예측한 비율, F1-Score는 Precision과 Recall의 균형을 나타내는 지표이다.

성능 지표 수치
Accuracy (정확도) 0.9
Precision (정밀도) 0.986
Recall (재현율, Sensitivity) 0.901
F1-Score (조화 평균) 0.941


- 복약 관리 AI
주요 성능 지표는 아래와 같다. 이때, AP(Average Precision)는 한 클래스에서 Precision-Recall 곡선을 기반으로 계산된 단일 값이며, mAP(Mean Average Precision)는 여러 클래스에 대해 AP를 평균낸 값을 의미한다.

성능 지표 수치 비고
mAP@.5 0.996 IoU(Intersection over Union)가 0.5일 때의 평균 정밀도
mAP@.5:.95 0.867 더 엄격한 기준을 포함해 다양한 IoU 조건에서 모델의 성능을 평가


- 종합

분류 평가 기능 평가 기준 평가 비고
AI 검증 식사 관리 AI 음식 포함 여부를 잘 구분한다. 5 목표 정확도인 95%보다 5% 작음
복약 관리 AI 알약의 위치를 잘 탐지한다. 10
혈압/혈당 관리 AI 혈압, 혈당 수치를 잘 인식한다. 10

향후계획

어려웠던 내용들

- 김*령

  • 프로젝트 설계 과정에서 기능의 정확한 명세를 작성하지 못했다. 따라서 개발 과정 중에 설계가 빈번하게 수정되고, 구현했던 내용을 다시 갈아엎는 경우가 몇 번 있었다.
  • 사용해본 적 없는 기술들을 (스프링 시큐리티, JWT, DB 마이그레이션 등) 학습하고 이를 프로젝트에 적용시키는 데에 어려움을 겪었다.
    • JWT를 활용한 로그인 인증 과정에서, 유저와 보호자를 분리해서 로그인 구현하는 부분이 상당히 어려웠다. 스프링 시큐리티는 디폴트로 한 개의 로그인 관련 구현체만을 요구하지만, UserDetails 관련 클래스와 GuardianDetails 관련 클래스를 분리하여 따로따로 구현하는 부분이 어려웠다.
    • 테스트 개발 환경에서는 MySQL로 진행하였지만, 배포 과정에서 MariaDB로 마이그레이션하는 부분이 조금 헷갈렸다.
    • 전반적인 스프링 시큐리티 환경 이해가 어려웠다. 필터 체인, 각 필터의 기능 및 이를 상속받아 구현하는 등, 적절히 이해하고 응용하는 부분이 어려웠다.


- 정*엽

  • 단순히 푸쉬알람으로 구현을 진행할 수도 있었으나, 푸쉬 알람의 경우 로컬 환경에서 인터넷 연결 상태에 따른 알람 시간 정확도가 떨어지는 문제가 발생할 수 있다.
  • 이러한 문제점을 극복하기 위해 실제 알람처럼 구현을 진행해야 했고, 이 과정에서 안드로이드 알람 모듈을 처음부터 직접 개발하여 기기의 내장 타이머를 사용할 수 있도록 해야 했다.
  • 모듈을 직접 구현하면서, 안드로이드 모듈과 React Native를 연결하는 브릿지 과정에서 오류가 많이 발생했고, 이를 해결하는데 시간을 많이 할애했다.
  • 유동적으로 어플리케이션을 구현하기 위해서는 API 명세를 깔끔하게 진행해야 한다. 관점의 차이는 있겠으나, 본 프로젝트에서는 BE와 API 통신을 진행할 때에는 최대한 데이터를 그대로 가져오도록 했다. BE에서 받아온 데이터를 FE쪽에서 적재적소에 맞게 데이터를 파싱하여 사용하는 방법을 채택했다.
  • 이러한 방법을 채택하여 명세의 변경이 발생하더라도 API 수정을 최소화하도록 노력했지만, FE에서는 파싱 메서드가 길어지는 문제가 있었다. 하지만, 이러한 방법이 옳다고 생각한다.


- 이*규

  • 이전까지는 AI 모델 서비스들이 어떤 식으로 제공되고, 배포되는지에 대한 고민 없이 AI의 아키텍처와 성능을 올리는 부분에 대해서만 공부하였다. 하지만 이번 프로젝트의 어플리케이션은 AI 서비스를 필요로 하기 때문에, 구현된 AI 모델에 대한 배포까지 요구하였다. 이전까지는 고민해 본 적 없는 비교적 새로운 분야의 지식을 익히는 부분이 비교적 어려웠다.
  • 이번 어플리케이션은 다양한 모델을 필요로 하였다. 크게 3가지의 컴퓨터 비전 task를 수행하는 AI 모델(음식 사진인지 아닌지 분류하는 모델, 알약 사진인지 아닌지 분류하는 모델, 사진에 있는 디지털 숫자의 위치를 확인한 뒤 숫자를 인식하는 모델)을 구성해야 했다.
  • 특히, 음식 사진을 분류하는 모델의 경우에는 어플리케이션의 기능 명세가 수정되면서, 어떤 음식인지까지 구분하는 것을 필요로 하게 되었고, 결국 오픈소스 멀티모달 모델과 OpenAI API를 활용하는 방식으로 진행하게 되었다.


- 잘*** ***늠

  • 복약 관리 AI 모델 개발 과정에서 가장 큰 어려움은 적절한 데이터셋의 부재였다. 기존의 공개된 데이터셋이나 모델이 없었기 때문에, 약 사진 5000장을 수동으로 라벨링해야 했다. 데이터 라벨링 작업은 시간과 노력이 많이 소요되었으며, 이 데이터를 기반으로 YOLOv7 모델을 학습시켰다. 모델 학습에는 약 7시간이 걸렸고, 이후 결과를 평가하면서 다양한 평가 방법(mAP, Precision, Recall 등)을 적용해 성능을 확인했다. 이러한 과정은 번거로웠지만, 직접 데이터를 구축하고 검증해본 경험은 의미 있는 도전이었다.
  • 식사 관리 AI 모델 또한 어려움이 많았다. 초기 목표는 음식 사진을 분류해 "식사 여부"만 판단하는 단순한 기능을 구현하는 것이었지만, 성능이 예상보다 저조했다. 특히 여러 개의 데이터셋 수집과 정리에 많은 시간이 소요되었으며, 데이터의 다양성과 질을 확보하는 데 한계가 있었다. 결국 자체 학습 모델 대신 API 사용으로 전환했지만, 이 과정에서 얻은 실패 경험을 통해 AI 모델 구축의 한계와 현실적 해결책을 배우게 되었다.
  • AI API 활용은 처음 시도해본 영역이어서 초기 시행착오가 많았다. 처음에는 Google Vision API를 사용해보았으나 비전 관련 작업에서 성능이 만족스럽지 못했고, OpenAI API를 시도했지만 초기에는 잘 동작하지 않았다. 특히 비전 모델을 무료 플랜으로 사용했을 때 결과가 제대로 반환되지 않았고, 유료 플랜으로 전환하면서 비로소 원하는 결과를 얻을 수 있었다. 이 과정에서 AI API의 비용 효율성과 성능 최적화에 대한 실질적인 경험을 쌓을 수 있었다.
  • 모델 학습과 검증의 반복도 쉽지 않았다. 학습된 모델의 성능이 기대에 미치지 못하면 원인을 분석하고 데이터를 다시 정리하거나 하이퍼파라미터를 조정하는 작업을 반복해야 했다. 이러한 반복적인 작업 속에서 시간 관리와 효율적인 작업 흐름의 중요성을 체감하게 되었다.
  • 전반적으로 AI 파트를 맡으면서 단순히 모델 구현에 그치지 않고 데이터셋 구축, 모델 학습, 성능 평가, 그리고 실제 배포를 경험했다는 점이 가장 큰 도전이었다. 특히 처음 접한 AI API의 활용과 실제 애플리케이션에 적용하는 과정에서 실무적 역량을 한 단계 높일 수 있었다.

차후 구현할 내용

- FCM 서버 구현

  • FCM 서버를 구현함으로써, 유저 및 보호자에게 적절한 푸시 알람을 제공하는 기능


- 리포트 기능 보충

  • 식사 미션 리포트에서 좀 더 다양한 영양소에 대한 정보 제공


- 보편적인 건강정보 제공

  • 노인 건강 관리 어플리케이션이라는 목적에 부합하게, 어플리케이션의 여러 요소에서 추가적인 건강 정보 제공


- 보호자 기능 강화

  • 시니어 케어 어플리케이션 특성상, 보호자 - 시니어 사이의 '관리 체계'를 조금 더 다듬을 필요가 있다.
  • 보호자가 생성해준 알람 수락/거절 기능


- 재미 요소 추가

  • 어플리케이션에 재미 요소를 추가할 필요가 있다.
  • 매달 완료한 미션 수 혹은 특정 조건에 맞춰 성장하는 캐릭터 추가

관련사업비 내역서

구성원 및 추진체계

구성원
이름 담당 업무
잘*** *늠 AI 기능 구현
김*령 BE, DBA
정*엽 FE, 앱 디자인
이*규 AI 기능 구현


추진체계
추진 내용 추진 기간 세부 내용
기획 2024.09.01. ~ 2024.09.30. 프로젝트 제안서, 경쟁력 분석 보고서 작성, 프로젝트 방향성 확정 및 주요 명세 확립
프로젝트 설계 2024.10.01. ~ 2024.10.23. 각 도메인 세부 설계, 중간설계보고서 작성
프로젝트 구현 2024.10.24. ~ 2024.11.13. 각 도메인 기능 구현
도메인 통합 및 프로토타입 발표 2024.11.14. ~ 2024.11.20. FE, BE, AI 통합, 프로토타입 완성 및 발표
통합 테스트 및 최종 수정 2024.11.21. ~ 2024.12.18. 통합 테스트, 사용자 테스트, 최종보고서 작성

개발사업비 내역서

항 목
(품명, 규격)
수 량 단 가 금 액 비 고
현금
직 접 개 발 비 openAI chatGPT 구독료 3 31 94 94 단가는 세 달 분을 3으로 나누고 소수점을 절삭함
claude 구독료 3 31 94 94 단가는 세 달 분을 3으로 나누고 소수점을 절삭함
openAI API 구독료 1 7 7 7 소수점 절삭함
프런트엔드 개발을 위한 테스트 입문 1 25 25 25
프런트엔드 개발을 위한 보안 입문 1 23 23 23
이것이 자바다 1 32 32 32
만들면서 배우는 클린 아키텍처 1 16 16 16
프로그래밍 대회에서 배우는 알고리즘 문제 해결 전략 1 45 45 45
합 계

부록

소프트웨어 프로그램 소스

https://github.com/orgs/UOS-capstone-design/repositories