| A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | ||||||||||||||||||||||||||
2 | ||||||||||||||||||||||||||
3 | 백엔드 | 프론트 | ||||||||||||||||||||||||
4 | 구분 | 내용 | 비고 | 질문 | 답 | |||||||||||||||||||||
5 | 1 | 로그인 | - id/pwd로 회원 로그인 가능, or 구글/깃헙 인증 후 회원 로그인 가능 - id 저장 체크하여 id 값 자동으로 입력될 수 있도록 처리 -> id저장 체크 후 로그인 시 id를 저장할 수 있도록 처리(백) or 로그인 성공/실패 관계없이 id 저장할지 선택필요(백) - id/pwd 찾기 기능 -> 구글/깃헙 인증하여 id/pwd 찾기 가능하도록 처리 - 자동로그인 체크하여 자동로그인 가능하도록 처리(선택) | - id/pwd로 회원정보 반환, 구글키로 회원정보 반환용 url 필요(백) -> id/pwd나 해당구글키로 조회되는 유저가 있다면 해당 유저의 정보들 모두 반환해줄 예정인데 또 별도로 필요한 값이 있다면 요청해주세요 - 구글 또는 깃허브로 로그인을 진행했다면, 관련된 이미지도 클라이언트로 전송해주세요. | 1. 구글 인증 후 로그인이 가능한 것인지, 구글 인증으로 로그인이 되는 건지 헷갈립니다. 구글 인증을 한 후에 로그인이 가능하다면, 사용자 입장에서 불편할 것 같아서요. | 1. 구글/깃헙인증으로 바로 로그인가능하도록 처리하면 좋을 것 같아요 | ||||||||||||||||||||
6 | 2 | 회원가입 | - 구글 인증 후 회원가입 가능 -> 이미 회원가입한 구글 계정이라면 회원가입되어있다는 알림메세지 노출 및 로그인 페이지로 이동 - 회원가입 시 사용자 입력이 필요한 항목 -> id(중복확인 체크 필요), pwd, 개발언어(미입력 가능), 멘토여부(Y/N 선택필수), 자기소개(미입력가능) , 닉네임(중복확인 체크 필요) -> id 중복확인체크 필요, id 제한글자 설정필요, id에 특수문자 입력불가하도록 처리 -> pwd 정합성체크 (ex. 8자리이상 한글 영어 숫자 포함한 형식 등), pwd확인란 필요 - 필수 입력 항목들 입력 및 id 중복체크, pwd 정합성체크 모두 완료 후 회원가입 가능 | - 회원가입을 위해 회원정보 백단으로 보낼때 구글 또는 깃허브 인증키, 키 종류 꼭 포함하여 보낼것 - id, pwd , 개발언어, 자기소개용 db 컬럼에 설정할 총 글자 길이 필요 | 구글, 깃허브 사용자 이미지를 저장해야 될것 같습니다. 회원가입을 할 때는 이미지를 추가하지 않지만 구글, 깃허브 API를 받아오면 이미지 주소도 받아올 수 있어서 없는 것 보다는 있는게 나을 것 같은 생각이 듭니다. - 자기소개란에 깃허브페이지로 이동 가능한 url 삽입해주는건 어떤지, 사용자에게 따로 입력을 받아 이용할 수 있도록 처리하면 좋을 듯 - 회원가입 페이지를 처음 로드할 때 전체 사용자의 ID목록만을 받을 수 있을까요? 그러면 중복 ID 처리가 쉬울 것 같습니다. 그런데 서버에 부담이 되거나 동시에 추가하는 경우에 충돌나서 문제가 있을 수도 있으니 안되시면 이 질문 지우셔도 됩니다. | -> api id 값이라는 것이 인증키와는 다른 값인가요? : 네 api key와 api의 id값은 다른 값입니다. api id(google, github)는 사용자를 구분하기 위한 유일한 값이라고 생각하시면 됩니다. -> api key와 api id 두가지 다 저장시켜서 사용해야하는건가요? : 넵 맞습니다. | ||||||||||||||||||||
7 | 3 | 내정보 변경 | 1 | 내정보변경 | - 회원정보 변경 가능한 메뉴 - 기존 pwd 확인 후 pwd 변경 가능 - 닉네임 중복확인 체크 후 변경 가능 - 자기소개 내용 변경 가능 - 개발언어 변경 가능 - 멘토여부 변경 가능 -> 멘토에서 멘티로 변경한 경우 변경후 1주일간 다시 멘토로 변경 불가 - 회원탈퇴 가능(3-2 회원탈퇴란 참조) - 깃허브 계정 인증후 계정연동 가능 -> 계정인증 후 연동된 깃허브 바로가기 기능 노출 가능 -> 깃허브로 회원가입한 유저라면 위 내용 생략 | - 본인 깃허브 페이지로 이동가능한 url을 삽입하기로 했다면 해당 url 변경 기능 추가 | ||||||||||||||||||||
8 | 2 | 회원탈퇴(삭제) | - pwd 입력 후 회원 탈퇴 가능하도록 처리 - 회원탈퇴시 14일 후 정보삭제되며 그 이전에 로그인할 경우 회원탈퇴 취소 - 회원 삭제 시 해당 회원이 의뢰했던 의뢰서 모두 삭제 - 회원 삭제 시 해당 회원이 받았던 의뢰엔 멘토란 "알수없음"(선택)으로 표시 | - 탈퇴상태인 회원 상태를 로그인시 다시 일반상태로 돌리는 로직 앞단에서 처리할지 뒷단에서 처리할지 논의 필요 - 멘토가 탈퇴했을 시 멘토란에 표시하던 아이디 값 대신 들어갈 문구 필요 db상엔 null 값으로 들어갈 것임 -> 리뷰란에도 null 값 대신 표시할 내용 필요함 - 탈퇴후 14일이 지난 회원삭제는 매일 특정 시간에 삭제 자동화시킬예정 | ||||||||||||||||||||||
9 | 4 | 의뢰 | 1 | 의뢰요청 | - 멘티가 멘토를 골라 코드리뷰 의뢰 요청 가능한 메뉴 - 본인이 멘토로 등록되어있어도 의뢰 요청 가능하도록 처리 -> 받은의뢰와 보낸 의뢰 확인용 메뉴 각각 확인가능하도록 처리 - 코드파일 등록(필수), 제목(필수), 의뢰내용(필수) 작성하여 멘토 선택(필수) 후 의뢰요청 가능 | - 멘토 선택시 주력 언어별로 멘토 검색 가능하도록 필터선택 기능 필요 - 멘토 나열 기준 의뢰 많이 받은 순, 가입일자(먼)순 | ||||||||||||||||||||
10 | 2 | 의뢰서 | - 코드파일, 제목, 의뢰내용, 의뢰일, 멘토, 멘티, 댓글(=코드리뷰) 표시 -> 멘토/멘티 표시시 간단하게 id만 표시 or id클릭 시 간단한 프로필 표시 (선택) -> 만약 프로필을 표시하게된다면 해당 유저가 받은 의뢰건 중 진행중/완료건수 같이 표시해주면 좋을듯(선택) - 등록된 코드파일 내려받기 기능(선택) - 의뢰상태가 진행중일경우 멘토/멘티 자유롭게 댓글 등록/수정/삭제 가능 - 완료상태가 아닌 의뢰건은 멘토가 취소 가능, - 진행상태가 아닌 의뢰건은 멘티가 삭제 가능 | - 댓글 달리는 형식을 시간순으로 나열할지, 대댓글과 같은 형식으로 특정 댓글에 다시 댓글을 달 수도 있게 할건지 선택 필요 | ||||||||||||||||||||||
11 | 3 | 의뢰목록 | - 받은의뢰와 보낸의뢰 각 리스트 확인용 메뉴 - 제목, 멘티/멘토로 의뢰 검색 가능 | - 받은의뢰일경우 멘토가 본인일것이고 보낸의뢰일경우 멘티가 본인일 것이므로 각 메뉴에 따라 멘티/멘토로 검색 되도록 처리해야함 -> 키워드와 검색종류 같이 백단으로 전송해야함 | ||||||||||||||||||||||
12 | 4 | 상태 | - 대기중 : 의뢰 요청 후 아직 의뢰 수락되기 전 상태 -> 의뢰 내용은 모두 확인가능하되 수락하기 전까진 댓글 등록 불가하도록 처리 - 진행 : 의뢰 수락 후 진행중인 상태 -> 진행중엔 등록한 댓글수정 가능 - 완료 : 멘토가 해당 의뢰에 대해 완료를 찍은 상태 -> 추가적인 댓글 추가 불가, 수정 불가 - 취소 : 멘토가 해당 의뢰를 취소한 상태 -> 취소된 의뢰는 다시 멘토를 선택하여 재전송(복사되는개념)가능, 내용도 수정하여 재전송 가능하도록 처리 -> 추후 서비스가 유료화된다면 진행중인 건에 대해서는 함부로 취소 불가능하게 막아야할듯(환불 후 취소 가능하다던지 추가적인 대응필요) | |||||||||||||||||||||||
13 | 5 | 관리자 | 1 | 유저관리 | - 유저 리스트 조회 - 유저 검색 기능 -> 유저 id로 검색 가능하도록 처리 - 유저 상세조회 기능 - 유저 차단/차단해제 기능 -> 유저 상세조회 화면에서 차단/차단해제 도 가능하도록 처리 | - 유저 리스트 표시시 표시할 정보 정립 필요 ex) 아이디, 가입일 등 - 추가적으로 유저 정보 변경 기능을 넣고싶다면 자유롭게 추가해주세요 | ||||||||||||||||||||
14 | 2 | 의뢰관리 | - 의뢰 리스트 확인 - 의뢰 검색기능 -> 유저 id로 의뢰 리스트 검색 가능하도록 처리 -> 멘토id, 멘티id 별로 검색할지 둘이 통합하여 보여주게할지 선택 필요 - 의뢰 상세조회 기능 - 의뢰 강제 삭제 기능 -> 의뢰 상세조회 화면에서 삭제도 가능하도록 처리 | |||||||||||||||||||||||
15 | ||||||||||||||||||||||||||
16 | ||||||||||||||||||||||||||
17 | ||||||||||||||||||||||||||
18 | ||||||||||||||||||||||||||
19 | ||||||||||||||||||||||||||
20 | 프론트 | |||||||||||||||||||||||||
21 | 기능 | 내용 | 공통 기능 | |||||||||||||||||||||||
22 | 로그인 기능 | 1. 로그인 검증 - 아이디, 비밀번호 공백 작성 시 "아이디 | 비밀번호를 입력해주세요" 출력 - 성공 : 사용자의 정보를 받아와서 indexedDB에 저장 - 실패 : 간단히 "아이디나 비밀번호가 틀렸다"는 정보 출력 | 모든 정보의 validation이 통과 시 데이터를 redux가 관리하도록 일임하고, IndexedDB에 저장 | |||||||||||||||||||||||
23 | 회원가입 | 1. 아이디 중복 체크 - 실패 : 중복되었다는 정보 출력 - 성공 : 아무런 정보 출력하지 않고 스타일로 통과했다는 표현 2. 비밀번호 정규식 검사 및 랜덤 생성 적용 - 실패 : ex) "규칙에 맞도록 입력하세요"라고 출력 - 통과 : 아무런 정보 출력하지 않고 스타일로 통과했다는 표현 - 한 번 더 입력 기능 추가 3. 언어 입력 선택 목록 - 사용자가 질문하고자 하는 언어 선택할 수 있도록, 서버에서 목록 받기 4. 멘토여부 - boolean 형식 5. 자기소개(선택) 6. 닉네임 (중복 체크) - 실패 : 중복되었습니다. 출력 - 성공 : 아무런 정보 출력 X | ||||||||||||||||||||||||
24 | 메인 페이지 | 1. 의뢰 목록(멘토, 멘티) - 상태별로 의뢰 필터링 가능 - 대기 : 멘토 수락 대기 -> 댓글 등록 불가 - 진행 : 멘토 수락 완료 -> 댓글 추가, 수정 가능 - 완료 : 멘토 의뢰 완료 -> 댓글 추가, 수정 불가 - 취소 : 멘토 의뢰 취소 -> 의뢰 내용을 그대로 진행하거나 수정 후, 멘토를 다시 선택해서 의뢰 재진행 및 유료화 됐을 때 함부로 취소 불가능하도록 방지 2. 코드리뷰 요청 메뉴(멘토, 멘티) 3. | ||||||||||||||||||||||||
25 | IndexedDB | 1. 사용자 정보 저장(실제 DB와 연동) 2. redux와 연결 | ||||||||||||||||||||||||
26 | ||||||||||||||||||||||||||
27 | ||||||||||||||||||||||||||
28 | ||||||||||||||||||||||||||
29 | ||||||||||||||||||||||||||
30 | ||||||||||||||||||||||||||
31 | ||||||||||||||||||||||||||
32 | ||||||||||||||||||||||||||
33 | ||||||||||||||||||||||||||
34 | ||||||||||||||||||||||||||
35 | ||||||||||||||||||||||||||
36 | ||||||||||||||||||||||||||
37 | ||||||||||||||||||||||||||
38 | ||||||||||||||||||||||||||
39 | ||||||||||||||||||||||||||
40 | ||||||||||||||||||||||||||
41 | ||||||||||||||||||||||||||
42 | ||||||||||||||||||||||||||
43 | ||||||||||||||||||||||||||
44 | ||||||||||||||||||||||||||
45 | ||||||||||||||||||||||||||
46 | ||||||||||||||||||||||||||
47 | ||||||||||||||||||||||||||
48 | ||||||||||||||||||||||||||
49 | ||||||||||||||||||||||||||
50 | ||||||||||||||||||||||||||
51 | ||||||||||||||||||||||||||
52 | ||||||||||||||||||||||||||
53 | ||||||||||||||||||||||||||
54 | ||||||||||||||||||||||||||
55 | ||||||||||||||||||||||||||
56 | ||||||||||||||||||||||||||
57 | ||||||||||||||||||||||||||
58 | ||||||||||||||||||||||||||
59 | ||||||||||||||||||||||||||
60 | ||||||||||||||||||||||||||
61 | ||||||||||||||||||||||||||
62 | ||||||||||||||||||||||||||
63 | ||||||||||||||||||||||||||
64 | ||||||||||||||||||||||||||
65 | ||||||||||||||||||||||||||
66 | ||||||||||||||||||||||||||
67 | ||||||||||||||||||||||||||
68 | ||||||||||||||||||||||||||
69 | ||||||||||||||||||||||||||
70 | ||||||||||||||||||||||||||
71 | ||||||||||||||||||||||||||
72 | ||||||||||||||||||||||||||
73 | ||||||||||||||||||||||||||
74 | ||||||||||||||||||||||||||
75 | ||||||||||||||||||||||||||
76 | ||||||||||||||||||||||||||
77 | ||||||||||||||||||||||||||
78 | ||||||||||||||||||||||||||
79 | ||||||||||||||||||||||||||
80 | ||||||||||||||||||||||||||
81 | ||||||||||||||||||||||||||
82 | ||||||||||||||||||||||||||
83 | ||||||||||||||||||||||||||
84 | ||||||||||||||||||||||||||
85 | ||||||||||||||||||||||||||
86 | ||||||||||||||||||||||||||
87 | ||||||||||||||||||||||||||
88 | ||||||||||||||||||||||||||
89 | ||||||||||||||||||||||||||
90 | ||||||||||||||||||||||||||
91 | ||||||||||||||||||||||||||
92 | ||||||||||||||||||||||||||
93 | ||||||||||||||||||||||||||
94 | ||||||||||||||||||||||||||
95 | ||||||||||||||||||||||||||
96 | ||||||||||||||||||||||||||
97 | ||||||||||||||||||||||||||
98 | ||||||||||||||||||||||||||
99 | ||||||||||||||||||||||||||
100 | ||||||||||||||||||||||||||