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

7W 기능명세서

주제 : 좋아요
기능 제목 주 기능 상세 기능 상호 작용 사용자 인터페이스
좋아요 상태 변경(레시피) 좋아요 체크 기능 좋아요 누르기 및 취소하기 인스타그램의 좋아요와 같은 방식 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. 마이페이지에 들어가서 본인이 작성한 근 줄에 삭제할 리뷰를 선택하여 삭제하기 버튼을 누른다.

7W-기술명세서

프론트엔드


레시피

기능 제목 레시피 수정하기
구현 기간 24.05.17. ~ 24.05.20.
담당 팀원 박승은
구현 단계 표시 개발 완료
알고리즘 1. 레시피 전체 조회, 마이페이지에서 레시피 수정하기로 접근할 수 있다. 2. 서버와의 연결을 위해 await fetch PATCH 유형을 사용한다. 3. 응답이 승인되면 토큰을 불러와 설정한다. 4. 응답이 승인되지 않으면 에러를 띄운다. 5. 사용자는 수정할 내용을 수정하고 수정하기 버튼을 클릭한다. 6. 서버에게 데이터를 전송한다.
기능 제목 레시피 삭제하기
구현 기간 24.05.17. ~ 24.05.20.
담당 팀원 박승은
구현 단계 표시 개발 완료
알고리즘 1. 사용자는 본인이 작성한 레시피를 지우려면 레시피 삭제하기 버튼을 누른다. 2. 사전에 정의한 url에 recipeId를 첨부하여 서버와의 연결을 진행한다. 3. 서버와 연결을 성공하면 토큰을 설정한다. 4. 삭제하기 버튼을 누르면 await fetch DELETE 유형을 이용하여 레시피 삭제를 진행한다.

게시물

기능 제목 게시물 수정하기
구현 기간 24.05.17. ~ 24.05.20.
담당 팀원 박승은
구현 단계 표시 개발 완료
알고리즘 1. 게시물 전체 조회, 마이페이지에서 레시피 수정하기로 접근할 수 있다. 2. 서버와의 연결을 위해 await fetch PATCH 유형을 사용한다. 3. 응답이 승인되면 토큰을 불러와 설정한다. 4. 응답이 승인되지 않으면 에러를 띄운다. 5. 사용자는 수정할 내용을 수정하고 수정하기 버튼을 클릭한다. 6. 서버에게 데이터를 전송한다.
기능 제목 게시물 삭제하기
구현 기간 24.05.17. ~ 24.05.20.
담당 팀원 박승은
구현 단계 표시 개발 완료
알고리즘 1. 사용자는 본인이 작성한 게시물을 지우려면 게시물 삭제하기 버튼을 누른다. 2. 사전에 정의한 url에 postId를 첨부하여 서버와의 연결을 진행한다. 3. 서버와 연결을 성공하면 토큰을 설정한다. 4. 삭제하기 버튼을 누르면 await fetch DELETE 유형을 이용하여 게시물 삭제를 진행한다.

채팅

기능 제목 채팅 전송하기
구현 기간 24.05.17. ~ 24.05.20.
담당 팀원 박승은
구현 단계 표시 개발 진행 중
알고리즘 1. 방장이 개설한 채팅방에 입장한다. 2. 웹 소켓과 Stomp를 이용하여 채팅을 진행한다. 3. 사전에 정의한 url을 이용하여 서버와 연결을 한 후, 사전에 정의한 변수를 통하여 데이터를 전송한다. 4. 사용자가 대화 내용 입력 후 전송 버튼을 누르면 데이터를 전송한다. 5. 상대방이 답장을 보내게 되면 서버를 통해 대화 내용을 받게 된다. 6. 대화를 진행한다.
기능 제목 채팅 목록 조회하기
구현 기간 24.05.17. ~ 24.05.20.
담당 팀원 박승은
구현 단계 표시 개발 진행 중
알고리즘 1. 내비게이션 바에서 채팅을 누르면 채팅 목록을 조회할 수 있다. 2. 서버와의 연결을 위해 사전에 정의한 url과 변수명을 통하여 데이터를 불러온다. 3. 응답이 승인되면 토큰을 설정한다. 4. 채팅방 제목과 내용을 띄우기 위한 UI/UX를 구성한다.
기능 제목 채팅방 삭제하기
구현 기간 24.05.17. ~ 24.05.20.
담당 팀원 박승은
구현 단계 표시 개발 진행 중
알고리즘 1. 사용자는 과거에 채팅했던 채팅방을 지우려면 채팅방 삭제하기 버튼을 누른다. 2. 사전에 정의한 url에 recipeId를 첨부하여 서버와의 연결을 진행한다. 3. 서버와 연결을 성공하면 토큰을 설정한다. 4. 삭제하기 버튼을 누르면 await fetch DELETE 유형을 이용하여 레시피 삭제를 진행한다.

백엔드


채팅

기능 제목 채팅방 만들기
구현 기간 24.05.11. ~
담당 팀원 김민수
구현 단계 표시 개발 진행중
알고리즘 1. 사용자는 주어진 사용자들을 포함하여 채팅방을 만든다. 2. 사용자는 서버에 본인의 토큰과 사용자들의 닉네임 리스트, 해당 게시글의 아이디를 전송한다. 3. 주어진 데이터는 HTTP POST 요청과 컨트롤러로 넘어온다. 4. 넘어온 데이터를 바탕으로 채팅방 서비스에 전달한다. 5. 사용자들의 정보와 게시글의 번호를 바탕으로 채팅방을 만든다. 6. 해당 채팅방을 레포지토리를 통해 저장한다. 7. 생성이 완료되면 사용자에게 status code 200을 전송한다.
기능 제목 채팅방 조회하기
구현 기간 24.05.11. ~
담당 팀원 김민수
구현 단계 표시 개발 진행중
알고리즘 1. 사용자는 본인이 가지고 있는 채팅방을 조회하려고 한다. 2. 사용자는 본인이 가진 채팅방 조회를 위해 해당 버튼을 클릭한다. 3. 버튼에 연결된 HTTP 요청이 서버로 전송된다. 4. 요청과 사용자의 토큰이 서버로 전송된다. 5. 요청에 맞게 서비스, 레포지토리 레이어에서는 사용자의 채팅방 아이디를 담은 리스트를 반환한다. 6. 사용자는 해당 리스트를 통해 채팅방을 확인한다.
기능 제목 채팅방 삭제하기
구현 기간 24.05.11. ~
담당 팀원 김민수
구현 단계 표시 개발 진행중
알고리즘 1. 사용자는 해당 HTTP 요청과 roomId를 서버로 전송한다. 2. 서버는 해당 토큰의 값을 받아 사용자를 식별한다. 3. 식별된 사용자가 해당 채팅방에 존재 시 사용자를 제거한다. 4. HTTP status code를 반환한다.
기능 제목 채팅방 입장하기
구현 기간 24.05.11. ~
담당 팀원 김민수
구현 단계 표시 개발 진행중
알고리즘 1. 사용자는 해당 채팅방을 입장하기 위해 채팅방 목록에서 해당 채팅방을 클릭해야한다. 2. 사용자가 해당 채팅방을 클릭하면 사용자 정보를 서버에 요청값으로 넘긴다. 3. 서버에서는 해당 사용자의 아이디가 채팅방에 접근할 수 있는 지 확인한다. 4. 사용자 확인 후 해당 사용자가 접근 권한이 있으면 RESPONES_OK를, 권한이 없으면 Exception을 반환한다.
기능 제목 채팅하기
구현 기간 24.05.11. ~
담당 팀원 김민수
구현 단계 표시 개발 진행중
알고리즘 1. 사용자는 채팅방 입장 시 웹소켓에 연결된다. 2. 사용자는 메시지를 작성한다. 3. 사용자는 작성한 메시지를 send로 보낸다. 4. 작성된 메시지는 서버에서 처리후 “/topic/**”의 url을 가진 현 채팅방에 반환된다.

이미지

기능 제목 레시피 이미지 저장하기
구현 기간 24.05.11. ~24.05.18.
담당 팀원 임세현
구현 단계 표시 개발 완료
알고리즘 1. 사용자가 레시피 작성을 마친 뒤 레시피 정보를 담은 JSON과 이미지파일을 mutipartfile 형태로 보내준다. 2. 받은 파일의 파일명을 형식에 알맞게 생성 한다. 3. 생성한 파일명과 파일을 통해 S3의 image/recipeImg 디렉토리에 저장한다. 4. 저장이 완료되면 해당 이미지의 URL을 반환해 저장한다.
기능 제목 레시피 이미지 수정하기
구현 기간 24.05.11. ~
담당 팀원 임세현
구현 단계 표시 개발 진행중
알고리즘 1. 사용자가 레시피 작성을 마친 뒤 레시피 정보를 담은 JSON과 이미지파일을 mutipartfile 형태로 보내준다. 2. 받은 파일의 파일명을 형식에 알맞게 생성 한다. 3. 생성한 파일명과 파일을 통해 S3의 image/recipeImg 디렉토리에 저장한고 기존의 이미지를 삭제한다. 4. 저장이 완료되면 해당 이미지의 URL을 반환해 저장한다.
기능 제목 레시피 이미지 삭제하기
구현 기간 24.05.11. ~24.05.18.
담당 팀원 임세현
구현 단계 표시 개발 완료
알고리즘 1. 사용자가 삭제 버튼을 눌러 레시피 삭제를 요청한다. 2. 해당 레시피의 이미지 URL을 통해 S3 image/recipeImg 디렉토리에서 이미지를 찾아 삭제한다.
기능 제목 프로필 이미지 저장하기
구현 기간 24.05.11. ~24.05.18.
담당 팀원 임세현
구현 단계 표시 개발 완료
알고리즘 1. 사용자가 레시피 작성을 마친 뒤 레시피 정보를 담은 JSON과 이미지파일을 mutipartfile 형태로 보내준다. 2. 받은 파일의 파일명을 형식에 알맞게 생성 한다. 3. 생성한 파일명과 파일을 통해 S3의 image/profileImg 디렉토리에 저장한다. 4. 저장이 완료되면 해당 이미지의 URL을 반환해 저장한다.
기능 제목 프로필 이미지 수정하기
구현 기간 24.05.11 ~
담당 팀원 임세현
구현 단계 표시 개발 진행중
알고리즘 1. 사용자가 레시피 작성을 마친 뒤 레시피 정보를 담은 JSON과 이미지파일을 mutipartfile 형태로 보내준다. 2. 받은 파일의 파일명을 형식에 알맞게 생성 한다. 3. 생성한 파일명과 파일을 통해 S3의 image/recipeImg 디렉토리에 저장한고 기존의 이미지를 삭제한다. 4. 저장이 완료되면 해당 이미지의 URL을 반환해 저장한다.
기능 제목 프로필 이미지 삭제하기
구현 기간 24.05.11. ~24.05.18.
담당 팀원 임세현
구현 단계 표시 개발 완료
알고리즘 1. 사용자가 레시피 작성을 마친 뒤 레시피 정보를 담은 JSON과 이미지파일을 mutipartfile 형태로 보내준다. 2. 받은 파일의 파일명을 형식에 알맞게 생성 한다. 3. 생성한 파일명과 파일을 통해 S3의 image/profileImg 디렉토리에 저장한다. 4. 저장이 완료되면 해당 이미지의 URL을 반환해 저장한다.

CICD (gitAction 활용)

기능 제목 CI - 지속적 통합 (Continuous Integration)
구현 기간 24.05.18. ~ 24.05.19
담당 팀원 김민수
구현 단계 표시 개발 완료
알고리즘 1. 개발자는 git cli, 소스트리 등의 툴을 사용하여 작성한 코드를 push한다. 2. 작성이 된 코드를 PR 진행한다. 3. PR을 진행하면 깃액션에서 작성된 작업이 실행이 된다. 3-1. 작성된 프로젝트를 gradle을 사용해서 빌드한다. 3-2. 작성된 프로젝트의 테스트 코드를 체크한다. 3-3. jar 파일이 만들어지는지 확인한다. 4. 해당 과정이 통과가 되면 merge, PR을 진행할 조건이 된다고 판단한다.
기능 제목 CD - 지속적 통합 (Continuous Deployment) - dev
구현 기간 24.05.18. ~
담당 팀원 김민수
구현 단계 표시 개발 진행중
알고리즘 1. merge를 통한 dev 브런치에 push가 진행이 된다. 2. push가 진행되면 해당 이벤트에 맞는 CD 작업이 진행된다. 2-1. 주어진 코드를 기반으로 빌드를 진행한다. 2-2. 도커에 로그인을 진행한다. 2-3. 해당 도커 레지스트리에 빌드파일을 올려 진행한다. 2-4. 개발자는 로컬에서 docker compose를 진행하면 해당 레포지토리에서 최신 이미지를 받아와서 사용한다.