프로젝트 활동 보고서_8w - GraduationDku/tastyHub GitHub Wiki

8W 기능명세서

주제 : 좋아요
기능 제목 주 기능 상세 기능 상호 작용 사용자 인터페이스
좋아요 상태 변경(레시피) 좋아요 체크 기능 좋아요 누르기 및 취소하기 인스타그램의 좋아요와 같은 방식 1. 사용자는 각자 해당 레시피에 버튼을 눌러서 상호작용할 수 있다. 2. 해당 버튼을 클릭시 사용자는 해당 레시피에 존재하는 like 숫자를 증가시킬 수 있다. 2-1. 해당 버튼을 다시 누르면 사용자는 이전의 좋아요를 누른 상호작용을 취소할 수 있다.
주제 : 스크랩
기능 제목 주 기능 상세 기능 상호 작용 사용자 인터페이스
레시피 스크랩 추가하기 레시피 스크랩 추가하기 관심이 있는 레시피를 스크랩한다. 1. 사용자는 각자 해당 레시피에 버튼을 눌러서 상호작용할 수 있다. 2. 해당 버튼을 클릭시 사용자는 해당 레시피를 스크랩할 수 있다. 3. 스크랩을 하면 사용자의 선호 레시피 항목으로 해당 레시피가 저장이 된다.
레시피 스크랩 삭제하기 레시피 스크랩 삭제하기 스크랩했던 레시피를 목록에서 삭제한다. 1. 사용자는 각자 해당 레시피에 버튼을 눌러서 상호작용할 수 있다. 2. 해당 버튼을 클릭시 사용자는 스크랩을 진행한 레시피를 삭제할 수 있다. 3. 스크랩을 하면 사용자의 선호 레시피 항목으로 저장된 해당 레시피가 삭제된다.
스크랩 목록 가져오기 스크랩 목록 가져오기 유저의 스크랩 목록을 조회한다. 1. 사용자의 마이페이지에서 기능한다. 2. 사용자가 스크랩 목록 불러오기를 누르면 사용자가 스크랩한 레시피의 목록이 불러와진다.
주제 : 리뷰
기능 제목 주 기능 상세 기능 상호 작용 사용자 인터페이스
레시피 리뷰 작성하기 레시피 리뷰 작성 사용자가 해당 레시피에 대한 리뷰를 작성할 수 있다. 1. 사용자는 본인이 조리했던 레시피에 대한 평가를 남기려고 한다. 2. 해당 레시피에 리뷰 작성하기 버튼을 눌러 리뷰를 작성할 수 있다. 3. 사진 기입은 자유이고 별점과 코멘트를 남길 수 있다. 4. 작성이 완료되면 완료하기 버튼을 누른다.
레시피 리뷰 조회하기 레시피 리뷰 조회 사용자가 작성했던 레시피 리뷰를 조회한다. 1. 사용자는 본인이 작성했던 레시피 리뷰를 조회하려고 한다. 2. 해당 레시피에 들어가서 직접 작성한 리뷰를 확인할 수 있다. 3. 마이페이지에 들어가서 본인이 작성한 글들을 모아볼 수 있다.
레시피 리뷰 삭제하기 레시피 리뷰 삭제 사용자 본인이 작성한 레시피 리뷰를 삭제한다. 1. 사용자는 본인이 작성했던 리뷰를 수정하려고 한다. 2. 해당 레시피에 들어가서 직접 작성한 리뷰를 수정하기 버튼을 통하여 수정할 수 있다. 3. 마이페이지에 들어가서 본인이 작성한 글 중에 수정할 리뷰를 선택하여 수정한다.
레시피 리뷰 수정하기 레시피 리뷰 수정 사용자 본인이 작성한 레시피 리뷰를 수정한다. 1. 사용자는 본인이 작성했던 리뷰를 삭제하려고 한다. 2. 해당 레시피에 들어가서 직접 작성한 리뷰를 삭제하기 버튼을 통하여 삭제할 수 있다. 3. 마이페이지에 들어가서 본인이 작성한 근 줄에 삭제할 리뷰를 선택하여 삭제하기 버튼을 누른다.
사용자 리뷰 작성하기 사용자 리뷰 작성 사용자가 다른 사용자에 대한 리뷰를 작성할 수 있다. 1. 사용자는 본인과 커뮤니케이션이 있었던 다른 사용자에 대해 리뷰를 작성하려고 한다. 2. 해당 유저의 리뷰 작성하기 버튼을 눌러 리뷰를 작성할 수 있다. 3. 별점과 코멘트를 남길 수 있다. 4. 작성이 완료되면 완료하기 버튼을 누른다.
사용자 리뷰 조회하기 사용자 리뷰 조회 사용자가 작성했던 리뷰를 조회할 수 있다. 1. 사용자는 본인이 작성했거나 본인에게 작성된 사용자 리뷰를 조회하려고 한다. 2. 해당 사용자의 프로필에 들어가서 직접 작성한 리뷰를 확인할 수 있다. 3. 마이페이지에 들어가서 본인이 작성한 글들을 모아볼 수 있다.
사용자 리뷰 수정하기 사용자 리뷰 수정 사용자가 작성했던 리뷰를 수정할 수 있다. 1. 사용자는 본인이 작성했던 리뷰를 수정하려고 한다. 2. 해당 사용자 프로필에 들어가서 직접 작성한 리뷰를 수정하기 버튼을 통하여 수정할 수 있다. 3. 마이페이지에 들어가서 본인이 작성한 글 중에 수정할 리뷰를 선택하여 수정한다.
사용자 리뷰 삭제하기 사용자 리뷰 삭제 사용자가 작성했던 리뷰를 삭제할 수 있다. 1. 사용자는 본인이 작성했던 리뷰를 삭제하려고 한다. 2. 해당 사용자 프로필에 들어가서 직접 작성한 리뷰를 삭제하기 버튼을 통하여 삭제할 수 있다. 3. 마이페이지에 들어가서 본인이 작성한 근 줄에 삭제할 리뷰를 선택하여 삭제하기 버튼을 누른다.
주제 : 채팅
기능 제목 주 기능 상세 기능 상호 작용 사용자 인터페이스
채팅방 생성하기 채팅방 생성 재료 공유를 위한 채팅방 개설 1. 재료 공유 게시물에서 채팅을 시작하기 위한 채팅방 생성하기 버튼을 누른다. 2. 재료 구매를 원하는 사용자는 해당 채팅방에 참여할 수 있는 구조이다.
채팅방 목록 조회하기 채팅방 목록 채팅했던 목록 전체 조회 1. 상단 채팅 버튼을 누른다. 2. 과거에 대화했던 내용을 모두 조회할 수 있다. 3. 대화 내용 중 재 참여를 위해 다시 채팅방에 입장할 수 있다.
채팅방 입장하기 채팅방 입장 채팅할 채팅방 입장하기 1. 상단 채팅 버튼을 누른다. 2. 과거에 대화했던 채팅방의 리스트가 모두 조회되면, 재확인하고 싶은 채팅창을 클릭하면 들어갈 수 있다.
채팅방 신규 입장하기 채팅방 신규 입장 새로 만들어진 채팅방 입장하기 1. 대화하지 않았던, 즉 새로 만들어진 채팅방에 입장을 하려고 한다. 2. 게시물을 통하여 채팅창에 입장할 수 있다.
채팅방 삭제하기 채팅방 삭제 대화 완료한 채팅방 지우기 1. 상단 채팅 버튼을 누른다. 2. 삭제하려고 하는 채팅방에 입장한다. 3. 채팅방 상단에 삭제하기 버튼을 누른다.
채팅 보내기 채팅 보내기 대화 내용 전송하기 1. 채팅방에 입장한다. 2. 하단 입력 칸에 전송하려는 대화 내용을 입력한다. 3. 우측 하단 전송 버튼을 누른다.
채팅 받기 채팅 받기 상대방으로부터 대화 내용 전달 받기 1. 대화하려는 채팅방에 입장한다. 2. 상대방의 답장이 오게 되면 좌측에 대화 내용이 노출된다. 3. 대화 내용을 확인하고 반응한다.
주제 : 이미지
레시피 이미지 저장 레시피 작성 시 이미지 저장 사용자가 레시피를 작성 할 때 레시피 이미지를 첨부해 저장 할 수 있다. 1. 레시피 작성 페이지에서 이미지 추가 하기 버튼을 누른다. 2. 사용자의 기기에서 원하는 이미지를 선택해 첨부 한다. 3. 다른 레시피 정보를 입력 한 뒤 저장하기 버튼을 누른다. 4. 본인이 저장한 레시피가 이미지와 함께 저장된 것을 확인할 수 있다.
프로필 정보 이미지 저장 프로필 정보 작성 시 이미지 저장 사용자가 프로필 정보를 작성 할 때 프로필 이미지를 첨부해 저장 할 수 있다. 1. 회원가입 페이지에서 이미지 추가 하기 버튼을 누른다. 2-1. 사용자의 기기에서 원하는 이미지를 선택해 첨부 한다. 2-2. 이미지를 첨부 하지 않을 시에는 기본 프로필 이미지로 저장된다. 3. 회원 가입 정보를 입력 한 뒤 저장하기 버튼을 누른다. 4. 본인이 저장한 프로필 이미지를 확인할 수있다.
레시피 이미지 수정 레시피 수정 시 이미지 수정 사용자가 레시피를 수정 할 때 레시피 이미지를 첨부해 수정 할 수 있다. 1. 레시피 수정 페이지에서 이미지 수정 하기 버튼을 누른다. 2. 사용자의 기기에서 원하는 이미지를 선택해 첨부 한다. 3. 다른 레시피 정보를 입력 한 뒤 수정하기 버튼을 누른다. 4. 본인이 수정한 레시피가 이미지와 함께 수정된 것을 확인할 수 있다.
프로필 정보 이미지
수정 프로필 정보 수정 시 이미지 수정 사용자가 프로필 정보를 수정 할 때 프로필 이미지를 첨부해 수정 할 수 있다. 1. 프로필 정보 수정하기 페이지에서 이미지 수정 하기 버튼을 누른다. 2. 사용자의 기기에서 원하는 이미지를 선택해 첨부 한다. 3. 회원 가입 정보를 입력 한 뒤 수정하기 버튼을 누른다. 4. 본인이 수정한 프로필 이미지를 확인할 수있다.

8W 기술명세서

프론트엔드


기능 제목 채팅방 만들기
구현 기간 24.05.24. ~ 24.05.28.
담당 팀원 박승은
구현 단계 표시 개발 완료
알고리즘 1. 사용자는 함께 구매할 사용자를 찾기 위하여 채팅방을 만든다. 2. 내비게이션 바에서 채팅을 누르면 채팅 목록을 전체 조회할 수 있으며 게시물을 생성하는 버튼을 누른다. 3. 게시물 작성 페이지로 화면이 전환된다. 4. 사용자가 제목과 내용을 입력하면 서버에게 await fetch를 이용하여 사전에 정의한 url과 정확한 변수명을 입력하여 서버에게 데이터를 전송한다. 5. 오류가 발생하면 오류 팝업을 띄운다.
기능 제목 채팅방 조회하기
구현 기간 24.05.24. ~ 24.05.28.
담당 팀원 박승은
구현 단계 표시 개발 완료
알고리즘 1. 사용자들은 재료 공유를 위하여 내비게이션 바에 있는 채팅에 접근한다. 2. await fetch의 GET 유형을 이용하여 채팅 목록을 전체 조회한다. 3. 서버와 사전에 정의한 url과 변수명을 사용하여 채팅 했던 기록을 모두 조회할 수 있다.
기능 제목 채팅방 입장하기
구현 기간 24.05.24. ~ 24.05.28.
담당 팀원 박승은
구현 단계 표시 개발 완료
알고리즘 1. 사용자들은 재료 공유를 위하여 내비게이션 바에 있는 채팅에 접근한다. 2. await fetch의 GET 유형을 이용하여 채팅 목록을 전체 조회한다. 3. 서버와 사전에 정의한 url과 변수명을 사용하여 채팅 했던 기록을 모두 조회할 수 있다. 4. 채팅방에 입장하여 이전 대화를 모두 띄울 수 있도록 roomId를 지정하여 관리한다. 5. 해당 roodId를 url과 함께 전송하여 대화내용을 모두 받아올 수 있도록 한다.
기능 제목 채팅하기
구현 기간 24.05.24. ~ 24.05.28.
담당 팀원 박승은
구현 단계 표시 개발 완료
알고리즘 1. 웹소켓과 Stomp를 이용하여 진행한다. 2. 상태변수를 초기화한다. 3. 웹 소켓 클라이언트를 생성하고 설정한 후 클라이언트가 연결되었을 때 실행될 함수들을 작성한다. 4. 클라이언트와 연결 상태를 확인하여 메세지 객체를 생성하고 웹 소켓을 통해 서버로 전송한 후 입력 필드를 초기화한다. 5. 전송 버튼을 누르면 (엔터키를 누르면) 메세지를 전송한다.

백엔드


기능 제목 채팅방 만들기
구현 기간 24.05.11. ~ 24.05.24.
담당 팀원 김민수
구현 단계 표시 개발 완료
알고리즘 1. 사용자는 주어진 사용자들을 포함하여 채팅방을 만든다. 2. 사용자는 서버에 본인의 토큰과 사용자들의 닉네임 리스트, 해당 게시글의 아이디를 전송한다. 3. 주어진 데이터는 HTTP POST 요청과 컨트롤러로 넘어온다. 4. 넘어온 데이터를 바탕으로 채팅방 서비스에 전달한다. 5. 사용자들의 정보와 게시글의 번호를 바탕으로 채팅방을 만든다. 6. 해당 채팅방을 레포지토리를 통해 저장한다. 7. 생성이 완료되면 사용자에게 status code 200을 전송한다.
기능 제목 채팅방 조회하기
구현 기간 24.05.11. ~ 24.05.24.
담당 팀원 김민수
구현 단계 표시 개발 진행중
알고리즘 1. 사용자는 본인이 가지고 있는 채팅방을 조회하려고 한다 2. 사용자는 본인이 가진 채팅방 조회를 위해 해당 버튼을 클릭한다. 3. 버튼에 연결된 HTTP 요청이 서버로 전송된다. 4. 요청과 사용자의 토큰이 서버로 전송된다. 5. 요청에 맞게 서비스, 레포지토리 레이어에서는 사용자의 채팅방 아이디를 담은 리스트를 반환한다. 6. 사용자는 해당 리스트를 통해 채팅방을 확인한다.
기능 제목 채팅방 삭제하기
구현 기간 24.05.11. ~ 24.05.25.
담당 팀원 김민수
구현 단계 표시 개발 진행중
알고리즘 1. 사용자는 해당 HTTP 요청과 roomId를 서버로 전송한다. 2. 서버는 해당 토큰의 값을 받아 사용자를 식별한다. 3. 식별된 사용자가 해당 채팅방에 존재 시 사용자를 제거한다. 4. HTTP status code를 반환한다.
기능 제목 채팅방 입장하기
구현 기간 24.05.11. ~ 24.05.25.
담당 팀원 김민수
구현 단계 표시 개발 진행중
알고리즘 1. 사용자는 해당 채팅방을 입장하기 위해 채팅방 목록에서 해당 채팅방을 클릭해야한다. 2. 사용자가 해당 채팅방을 클릭하면 사용자 정보를 서버에 요청값으로 넘긴다. 3. 서버에서는 해당 사용자의 아이디가 채팅방에 접근할 수 있는 지 확인한다. 4. 사용자 확인 후 해당 사용자가 접근 권한이 있으면 RESPONES_OK를, 권한이 없으면 Exception을 반환한다.
기능 제목 채팅하기
구현 기간 24.05.11. ~ 24.05.25.
담당 팀원 김민수
구현 단계 표시 개발 진행중
알고리즘 1. 사용자는 채팅방 입장 시 웹소켓에 연결된다. 2. 사용자는 메시지를 작성한다. 3. 사용자는 작성한 메시지를 send로 보낸다. 4. 작성된 메시지는 서버에서 처리후 “/topic/**”의 url을 가진 현 채팅방에 반환된다.
기능 제목 API 문서 자동화 - Spring Rest Docs
구현 기간 24.05.25. ~
담당 팀원 김민수
구현 단계 표시 작성 진행 중
작성범위 1. User 2. Post 3. Comment 4. Recipe 및 etc 통합 작성 예정
알고리즘 1. 각 기능에 맞는 컨트롤러 단위 테스트 코드를 작성한다. 2. 작성된 단위테스트 코드에 맞춰서 각 필드의 Request, Response 필드에 무슨 변수가 들어오는 지 추가 작성을 진행한다. 3. build.gradle에 세팅한 Spring Rest Docs 설정에 맞춰서 각 단위 테스트의 스니펫이 생성이 된다. 4. 생성된 스니펫을 사용하여 API 문서를 생성한다. 5. 각 로직, 변수, 필드값이 변경되면 테스트코드도 필수적으로 변경을 진행해야한다. 6. 변경된 내용을 바탕으로 새로운 API 문서가 반영이 되면서 작성이 된다.
기능 제목 좋아요 기능
구현 기간 24.05.24. ~ 24.05.25.
담당 팀원 임세현
구현 단계 표시 개발 완료
알고리즘 1. 사용자가 좋아요 요청을 한다. 2. 좋아요 요청을 받으면 서비스단에서 해당 레시피와 요청한 사용자에 해당하는 좋아요가 데이터베이스에 있는지 확인한다. 3-1. 존재 하는 경우 데이터베이스에서 좋아요를 삭제한다. 3-2. 존재하지 않는 경우 좋아요를 데이터베이스에 저장한다.
기능 제목 스크랩 기능
구현 기간 24.05.24. ~ 24.05.25.
담당 팀원 임세현
구현 단계 표시 개발 완료
알고리즘 1. 사용자가 스크랩 요청을 한다. 2. 스크랩 요청을 받으면 서비스단에서 해당 레시피와 요청한 사용자에 해당하는 스크랩이 데이터베이스에 있는지 확인한다. 3-1. 존재 하는 경우 데이터베이스에서 스크랩을 삭제한다. 3-2. 존재하지 않는 경우 스크랩을 데이터베이스에 저장한다.
기능 제목 레시피 리뷰 작성하기
구현 기간 24.05.26. ~ 24.05.27.
담당 팀원 임세현
구현 단계 표시 개발 완료
알고리즘 1. 클라이언트에서 pathvariable을 통해 레시피 아이디를 받아오고 레시피 리뷰에 대한 정보를 RequestBody로 전달 2. Controller에서 요청을 받아오고 서비스레이어의 서비스 로직 호출 3. 서비스 로직에서 레시피 리뷰 저장
기능 제목 레시피 리뷰 조회하기
구현 기간 24.05.26. ~ 24.05.27.
담당 팀원 임세현
구현 단계 표시 개발 완료
알고리즘 1. 클라이언트에서 pathvariable을 통해 레시피 아이디를 전달한다 2. Controller에서 요청을 받아오고 서비스레이어의 서비스 로직 호출 3. 서비스 로직에서 레시피에 해당되는 레시피 리뷰 리스트를 반환한다. 4. 반환된 레시피 리뷰 리스트를 정해진 DTO에 매핑 해 클라이언트에 전달한다.
기능 제목 레시피 리뷰 수정하기
구현 기간 24.05.26. ~ 24.05.27.
담당 팀원 임세현
구현 단계 표시 개발 완료
알고리즘 1. 클라이언트에서 pathvariable을 통해 레시피 아이디를 받아오고 레시피 리뷰에 대한 정보를 RequestBody로 전달 2. Controller에서 요청을 받아오고 서비스레이어의 서비스 로직 호출 3. 서비스 로직에서 레시피 리뷰 수정
기능 제목 레시피 리뷰 삭제하기
구현 기간 24.05.26. ~ 24.05.27.
담당 팀원 임세현
구현 단계 표시 개발 완료
알고리즘 1. 클라이언트에서 pathvariable을 통해 삭제하고 싶은 레시피 아이디를 받아온다. 2. Controller에서 요청을 받아오고 서비스레이어의 서비스 로직 호출 3. 서비스 로직에서 해당하는 레시피 리뷰를 삭제한다
기능 제목 사용자 리뷰 작성하기
구현 기간 24.05.26. ~ 24.05.27.
담당 팀원 임세현
구현 단계 표시 개발 완료
알고리즘 1. 클라이언트에서 pathvariable을 통해 사용자 아이디를 받아오고 사용자 리뷰에 대한 정보를 RequestBody로 전달 2. Controller에서 요청을 받아오고 서비스레이어의 서비스 로직 호출 3. 서비스 로직에서 사용자 리뷰 저장
기능 제목 사용자 리뷰 조회하기
구현 기간 24.05.26. ~ 24.05.27.
담당 팀원 임세현
구현 단계 표시 개발 완료
알고리즘 1. 클라이언트에서 pathvariable을 통해 사용자 아이디를 전달한다 2. Controller에서 요청을 받아오고 서비스레이어의 서비스 로직 호출 3. 서비스 로직에서 사용자에 해당되는 사용자 리뷰 리스트를 반환한다. 4. 반환된 사용자 리뷰 리스트를 정해진 DTO에 매핑 해 클라이언트에 전달한다.
기능 제목 사용자 리뷰 수정하기
구현 기간 24.05.26. ~ 24.05.27.
담당 팀원 임세현
구현 단계 표시 개발 완료
알고리즘 1. 클라이언트에서 pathvariable을 통해 사용자 아이디를 받아오고 사용자 리뷰에 대한 정보를 RequestBody로 전달 2. Controller에서 요청을 받아오고 서비스레이어의 서비스 로직 호출 3. 서비스 로직에서 사용자 리뷰 수정
기능 제목 사용자 리뷰 삭제하기
구현 기간 24.05.26. ~ 24.05.27.
담당 팀원 임세현
구현 단계 표시 개발 완료
알고리즘 1. 클라이언트에서 pathvariable을 통해 삭제하고 싶은 사용자 아이디를 받아온다. 2. Controller에서 요청을 받아오고 서비스레이어의 서비스 로직 호출 3. 서비스 로직에서 해당하는 사용자 리뷰를 삭제한다.