필요 기능
접속
- 접속 시 인터넷에 연결되어 있는지 확인 (front)
- 인터넷에 연결되어 있다면 Hugging Face API를 통한 얼굴인식 시작
- 연결되어 있지 않다면 ‘네트워크에 연결되어 있지 않아 얼굴인식을 사용할 수 없어요. 네트워크를 연결한 후 다시 시도해주세요.’ 라는 문구와 함께 refresh 버튼, 직접 선택 버튼을 제공 ⇒ 직접선택으로 감정을 선택할 수도 있음
- 인식된 감정을 오늘의 감정에 저장. 디바이스 내부 Storage를 사용하여 저장해야 함. 매일매일에 날짜에 맞게 하나씩 저장 가능하고.. 일주일 단위로 내용을 get할 수 있어야 함
- 감정에 맞는 문구를 띄워줌. 해당 문구는 직접 감정별 10~20개씩 긁어서 resource 폴더에 따로 보관 (문구들 누가 구해줘야함)
홈 상단부 (캘린더)
- 홈 상단부엔 캘린더로 월, 일, 요일, 감정, 일기작성여부, 현재날짜를 띄워줘야 함
- 캘린더의 카메라 아이콘이 있는 여기어때 버튼을 누르면 감정을 다시 선택할 수 있음 (앱 접속 창으로 간다고 생각하면 됨)
- 이미 감정이 등록되어 있다면 감정 별 문구를 출력해 준 뒤, 메인화면으로 이동 버튼을 누를 때 감정을 변경하시겠습니까? 라고 물어봄. (예 하면 바뀌고 아니오 하면 그냥 안바뀌고 메인화면으로 이동)
- Ai 아이콘이 있는 일기요약 버튼을 누르면 주차별 감정요약을 볼 수 있는 창을 제공
- 네트워크가 연결되어 있지 않으면 ‘네트워크에 연결되어 있지 않아 해당 기능을 사용할 수 없어요…’와 같은 문구와 refresh 버튼 제공.
- 각 주차별 일기 요약 버튼을 눌렀을 때 해당 주차에 있는 일기들(최대 7개)을 가져와 OpenAI API에게 입력하여 요약을 요청
홈 하단부
- 홈 하단부엔 선택된 날짜에 대한 일기 (작성 안했으면 작성하는 버튼 제공) 띄워 줌
- Storage에 일기가 존재 ⇒ 일기를 가져와서 보여줌, 존재 X ⇒ ‘일기 쓰기’ 버튼
- 일기 쓰기를 누르면 Modal창이 나타나며 200 글자 내로 일기를 작성하게 됨. 작성 완료를 누르면 해당 글의 내용이 해당 날짜 기준으로 Storage에 저장
- 일기요약에서 요약한 결과와 AI의 한줄평을 해당 창에 제공, 일주일치의 감정을 평균적으로 요약하여 날씨와같은 요소로 나타내어 주차별 요약 아이콘으로 등록해줌 (내부 Storage에 저장)
- 작성된 일기는 수정 혹은 삭제할 수 있음.
음악추천
- 선택사항 (우울 ⇒ 우울한노래? 기분개선 노래?)과 함께 감정값을 서버에 보내기. (front)
- Open AI api를 사용하여 감정에 맞는 노래를 10개 정도 추천 받음. (back)
- 이왕이면 해당 노래 가수+제목을 유튜브 검색을 통해 나온 링크를 제공받으면 좋을듯 (근데 이거 되나?)
방명록 (채팅방)
- 네트워크 연결 안되면 작동 X
- 본인만 구분할 수 있다면 좋을듯. ( 근데 어떻게 구현??? )
- 방명록에 접속할 때 AsyncStorage에 username이 저장되어있는지 Check. 존재하면 해당 Username 사용, 존재안하면 첫 username 지정 (default값은 익명)
- 익명으로 선택하면 서버에서 해당 user에게 익명1, 익명15처럼 생성된 user의 id값을 붙여서(가입한 순서) 반환해주고, 해당 username (익명15)을 AsyncStorage에 저장함
- 첫 username 지정시 Username을 입력받고 서버에 중복확인, 중복이 아닌 Username을 지정 성공했다면 AsyncStorage에 본인의 Username을 저장.
- 이후 방명록에서 글을 작성할때 본인의 username을 담아서 내용과 함께 서버에 전송. 서버에서 해당 username으로 방명록을 작성해줌.
- 방명록을 불러올 때, 본인 asyncStorage의 username과 동일한 방명록이면 화면 본인 방명록임을 화면에도 표시해줌 (파란배경, 오른쪽) / 본인 아니면 그냥 흰배경,왼쪽
- 혹여나 username을 변경하고 싶다면 본인의 username값을 포함한 new name을 서버에 보내주면 해당 username을 update해줌.