forked from codesquad-members-2023/be-java-cafe-max
-
Notifications
You must be signed in to change notification settings - Fork 0
요구사항분석
YongHwan Kim edited this page May 3, 2023
·
52 revisions
-
회원
- 회원 추가
- 전체 회원 조회
- 특정 회원 조회
- 특정 회원 수정
-
질문 게시글
- 특정 질문 추가
- 전체 질문 목록 조회
- 특정 질문 조회
- 특정 질문 수정
- 특정 질문 삭제
-
댓글
- 댓글 추가
- 댓글 삭제
-
로그인
- 로그인
- 로그아웃
-
페이징
- 게시글 페이징
- 댓글 페이징
-
회원가입
- 회원가입을 완료한후 전체 회원 조회 페이지로 이동합니다.
- 사용자가 전달한 값을 객체를 생성해 저장합니다.
- 회원가입 시 아이디 또는 이메일이 중복시 다시 입력하도록 합니다.
- 회원가입 요청시 입력 형식에 맞지 않은 경우 다시 입력하도록 합니다.
- 회원가입 정보 형식
- 아이디 : 5~20자의 영문 소문자, 숫자와 특수기호(_),(-)만 사용 가능합니다.
- 비밀번호 : 8~16자 영문 대 소문자, 숫자, 특수문자만 사용 가능합니다.
- 이름 : 1~20자 영문 소문자, 한글만 사용 가능합니다.
- 이메일 : (something)@(some_domain).(some_toplevel_domain)
-
전체 회원 조회
- 가입한 회원들의 목록을 출력합니다.
- 가입한 특정 회원의 이름 클릭시 특정 회원 프로필 조회 페이지로 이동합니다.
-
특정 회원 조회
- 요청한 회원의 정보들을 출력합니다.
- 조회하고자 하는 회원이 없는 경우 전체 회원 조회 페이지로 이동합니다.
-
특정 회원 수정
- 회원 정보 수정 페이지 이동 전에 비밀번호 확인 페이지로 이동하여 비밀번호가 맞으면 회원 수정 페이지로 이동합니다.
- 이름, 이메일을 수정합니다. 단, 회원 아이디는 수정할 수 없습니다.
- 비밀번호가 일치하는 경우에만 수정 가능합니다.
- 회원 수정 완료시 로그인 페이지로 이동합니다.
- 비밀번호, 이름, 이메일 입력 형식은 회원가입의 입력 형식을 따릅니다.
-
회원 URL
기능 | URL | HTTP 메소드 |
---|---|---|
전체 회원 조회 | /users | GET |
특정 회원 추가 | /users | POST |
특정 회원 조회 | /users/{id} | GET |
특정 회원 수정 | /users/{id} | PUT |
- 회원 페이지
기능 | URL | HTTP 메소드 |
---|---|---|
회원 가입 페이지 | /user/new | GET |
회원 수정 페이지 | /user/{id}/edit | GET |
-
특정 질문 추가
- 질문 추가 페이지로 이동하려면 로그인 된 상태여야 합니다.
- 질문 추가 화면에서 글쓴이 입력 필드가 없어야 합니다.
- 질문 추가 페이지 입장시 비 로그인 상태라면 로그인 페이지로 이동해야 합니다.
- 질문 글쓰기 완료되면 전체 질문 조회 페이지("redirect:/")로 이동합니다.
- 저장되는 질문에는 id값이 존재하고 사용자들이 글이 저장될 때마다 1씩 증가합니다.
- 부적절한 질문 글쓰기 입력 형식 제출시 경고 메시지를 받고 다시 입력하도록 합니다.
- 특정 질문 추가 입력 형식
- 작성자 : 로그인한 회원의 이름
- 제목 : 제목의 길이는 100자 이내여야 합니다.
-
전체 질문 목록 조회
- 전체 질문 목록 조회는 비 로그인 상태여도 확인할 수 있습니다.
- 작성된 질문 목록들을 출력합니다.
- 작성된 질문은 최근에 작성된 것일수록 앞쪽으로 출력되어야 합니다.
- 작성된 질문 게시글 제목 클릭시 특정 질문 조회 페이지로 이동합니다.
-
특정 질문 조회
- 특정 질문 조회는 로그인한 사람만 조회할 수 있습니다.
- 비 로그인 상태에서 질문 조회 페이지 접속시 로그인 페이지로 이동합니다.
- 작성된 질문의 내용을 출력합니다.
- 조회하고자 하는 질문이 없는 경우 전체 질문 조회 목록 페이지로 이동합니다.
-
특정 질문 수정
- 질문 게시글을 작성한 로그인된 상태의 글쓴이는 작성된 질문 게시글의 내용을 수정합니다.
- 특정 질문 수정 페이지는 로그인한 사용자가 자기 질문을 수정하는 경우에만 가능합니다.
- 다른 사람의 질문 게시글을 수정하려고 할때 에러 메시지를 전달받고 에러 페이지로 이동합니다.
- 질문 게시글 입력 형식은 특정 질문 게시글 추가 입력 형식을 따릅니다.
- 질문 게시글 수정 완료시 수정한 질문 게시글의 특정 질문 조회 화면으로 이동합니다.
-
특정 질문 삭제
- 로그인 상태의 질문 게시글 본인이 삭제할 수 있습니다.
- 게시글의 데이터를 완전히 삭제하는 것이 아닌 데이터 상태를 삭제 상태(boolean 타입)로 변경합니다.
- 특정 질문 게시글 삭제시 댓글 또한 삭제되며 댓글의 삭제 또한 삭제 상태(deleted)로 변경됩니다.
- 다른 사람의 글을 삭제하려고 할때 에러 메시지를 전달받고 에러 페이지로 이동합니다.
- 질문 게시글 삭제 완료시 전체 질문 조회 목록 페이지로 이동합니다.
-
질문 URL
기능 | URL | HTTP 메소드 |
---|---|---|
전체 질문 목록 조회 | /qna, / | GET |
특정 질문 추가 | /qna | POST |
특정 질문 조회 | /qna/{id} | GET |
특정 질문 수정 | /qna/{id} | PUT |
특정 질문 삭제 | /qna/{id} | DELETE |
- 질문 페이지
기능 | URL | HTTP 메소드 |
---|---|---|
질문 추가 페이지 | /qna/new | GET |
질문 수정 페이지 | /qna/{id}/edit | GET |
-
댓글 추가
- 로그인 상태에서 댓글을 추가할 수 있습니다.
- 댓글 입력 형식
- 내용 : 내용의 길이는 3000글자 이내여야 합니다.
-
댓글 삭제
- 자신의 댓글만을 삭제할 수 있습니다.
-
댓글 수정
- 자신의 댓글만을 수정할 수 있습니다.
- 댓글 입력 형식은 댓글 추가의 입력 형식을 따릅니다.
-
댓글 URL
기능 | URL | HTTP 메소드 |
---|---|---|
댓글 목록 | /qna/{questionId}/comments | GET |
댓글 추가 | /qna/{questionId}/comments | POST |
댓글 수정 | /qna/{questionId}/comments/{id} | PUT |
댓글 삭제 | /qna/{questionId}/comments/{id} | DELETE |
- 댓글 페이지
기능 | URL | HTTP 메소드 |
---|---|---|
댓글 수정 페이지 | /qna/{questionId}/comments/{id}/edit | GET |
-
로그인
- 로그인 성공시 전체 질문 목록 조회 페이지로 이동합니다.
- 현재 상태가 로그인 상태라면 상단 메뉴에서 "로그아웃", "개인정보수정"이 표시되어야 합니다.
- 현재 상태가 로그인 상태가 아니라면 상단 메뉴에서 "로그인", "회원가입"이 표시되어야 합니다.
- 부적절한 입력 형식으로 로그인 요청이나 로그인 실패시 로그인 실패 페이지로 이동하여 에러 메시지를 출력하고 다시 입력하도록 합니다.
- 로그인 정보 형식
- 아이디 : 5~20자의 영문 소문자, 숫자와 특수기호(_),(-)만 사용 가능합니다.
- 비밀번호 : 8~16자 영문 대 소문자, 숫자, 특수문자만 사용 가능합니다.
-
로그아웃
- 로그아웃 버튼 클릭시 세션 저장소에 회원 정보가 사라집니다.
- 로그아웃 성공시 로그인 페이지로 이동합니다.
-
로그인 URL
기능 | URL | HTTP 메소드 |
---|---|---|
로그인 | /login | POST |
로그아웃 | /logout | POST |
- 로그인 페이지
기능 | URL | HTTP 메소드 |
---|---|---|
로그인 페이지 | /login | GET |
- 게시글을 한 페이지에 15개씩 가져오도록 구현합니다.
- 게시글은 생성일 기준 내림차순으로 구현합니다.
- 한 화면에 보이는 페이지 수는 최대 5개입니다. 6개가 넘어가는 경우 다음 페이지 그룹으로 이동할 수 있는 버튼이 나타나야 합니다.
- 예를 들어 총 페이지 수가 8인 경우 다음 페이지 그룹으로 이동하면 6,7,8 페이지가 보이고 좌측 페이지 그룹으로 이동할 수 있는 버튼이 나와야 합니다.
- 페이지 이동시 페이지 범위를 벗어나는 경우 다음과 같이 동작합니다.
- 입력받은 페이지가 최대 페이지보다 큰 경우 최대 페이지로 이동합니다.
- 입력받은 페이지가 0 이하인 경우 첫번째 페이지로 이동합니다.
- 입력받은 페이지가 숫자가 아닌 경우 첫번째 페이지로 이동합니다.
- 한 게시글에 댓글은 작성일 기준으로 15개씩 보여줍니다.
- 댓글 더보기 버튼을 누르면 +15개씩 댓글을 추가해서 보여줍니다.
- 화면에 표시되지 않은 댓글이 남았을 경우 '더보기' 버튼이 표시됩니다. 더보기 버튼을 클릭하면 남은 댓글을 화면에 추가로 표시합니다.