-
Notifications
You must be signed in to change notification settings - Fork 4
06 ‐ 01 ‐ Board Wiki
Ryu(Paul) edited this page Nov 9, 2023
·
1 revision
- 비즈니스 요구사항
- 아키텍처 설계
- API 엔드포인트 설계
- 다른 모듈과 상호작용 포인트
- 팀 게시판으로 게시글을 생성, 관리, 삭제할 수 있는 REST 기능을 구현한다.
- 팀 게시판으로 게시판을 생성, 관리, 삭제할 수 있는 REST 기능을 구현한다.
- 모집 게시판으로 스터디 및 프로젝트 모집글 작성, 관리, 삭제 기능과 옵션을 통해 조회할 수 있는 REST 기능을 구현한다.
- 모집 게시글 작성시 작성자가 모집을 위한 인터뷰를 작성, 수정, 편집하고 지원자가 응답을 작성할 수 있는 REST 기능을 구현한다.
팀 게시판
- 팀 리더는 팀 게시판을 생성할 수 있다.
- 게시판 생성시 게시판의 제목을 설정할 수 있다.
- 게시글의 제목과 내용은 반드시 존재해야 한다.
- 공지사항과 게시물은 팀내부에서 공개를 원칙으로 하되 전체공개를 선택할 수 있다.
- 게시판은 생성 개수에는 제한이 없다.
- 팀 구성원은 각 게시판에 게시물을 작성할 수 있다.
- 게시물의 작성자는 게시물을 수정, 삭제할 수 있다.
- 클라이언트 요청에 따라 게시물 페이지를 전달한다.(페이지네이션)
- 게시물의 제목, 내용, 작성자 컬럼을 기준으로 검색이 가능하다.
- 게시판 삭제시 포함된 모든 게시물 및 파일이 함께 삭제된다.
모집 게시판
- 유저는 모집게시글을 작성할 수 있다.
- 모집게시글을 작성하면 유저가 작성한 값을 토대로 게시글이 작성된다. 이때 상태는 "모집중"으로 자동으로 설정된다.
- 작성자는 모집 기간, 지역, 운영 형태, 모집 인원과 역할을 설정할 수 있다.
- 모집게시글이 작성되면 팀이 생성되고 작성자가 팀 리더로 설정된다.
- 모집 게시글을 클릭하면 해당 정보가 조회된다.
- "지원하기"를 누르면 작성자가 작성한 인터뷰 목록이 조회된다.
- 지원자는 답변을 작성하고 제출한다. 제출하면 recruitement Applicant List에 저장된다.
- 이 리스트의 size는 현재 모집게시글의 지원한 사람의 수가 된다.
- 일정한 사람이 해당 게시글을 지원했다면 작성자는 모집자중 인원을 선택하여 팀을 구성할 수 있다.
- 팀을 구성하여 리더가 모집 완료 버튼을 누르면 모집게시글 상태는 "모집완료"로 자동으로 수정된다. 또한 해당 정보를 바탕으로 팀을 만든다.
- 팀을 만들때 작성자를 팀리더로 만들고 그 외 유저들은 정보에 맞게 TeamUser에 넣는다.
- 인원을 추가 모집 할 때는 기존의 모집글 내용을 수정 후 status를 수정하는 방식으로 한다.
- 검색 빨리....????
- 기타 등등 고려해봄직한 내용
팀게시판
- Controller : HTTP 요청을 처리한다. -createBoard -getBoards -getBoard -updateBoard -deleteBoard
- Service : 비즈니스 로직 수행
- Repository : 데이터 저장소와 상호작용을 담당한다.
모집게시판
- Controller : HTTP 요청을 처리한다. -createRecruitement -getRecruitements -getRecruitement -updateRecruitement -deleteRecruitment
- Service
- Repository
-
board
- id : 게시글 고유 id
- board_name : 게시판 제목
- user_id : 게시글 작성자 id
- team_id : 팀 id
- title : 게시글 제목
- content: 게시글 내용
- hit : 조회수
- thumbs_up : 좋아요 수
- createdAt : 생성일자
- updatedAt : 수정일
- tag : 태그(콤마(,)로 구분된 string으로 저장된다.)
-
board_file_list
- id : 파일 고유 id
- board_id : 게시판 id
- uri : 파일 경로
- type : 파일 타입
- original_name : 원본파일이름
- thumbnail_uri : 썸네일 경로
-
recruite_board
- id : messageIndex의 값으로, 빠른 접근을 위한 구조 _ applicants : 지원자 리스트
- total : 모집 인원
- due : 진행 기간
- region : 지역
- place : 진행 방식(
네이밍 다시 할 필요 있음) - status : 상태(모집전, 모집중, 모집완료)
-
recruite_board_file_list
- id : 파일 고유 id
- board_id : 게시판 id
- uri : 파일 경로
- type : 파일 타입
- original_name : 원본파일이름
- thumbnail_uri : 썸네일 경로
-------------------------------하위 인터뷰 항목은 테이블 구조에 대하여 논의가 많이 많이 빨리 빨리 필요함------------------- 5. interview - id : 항목 id - applicant_list : 지원자 list - question : 항목명 - type : 항목 타입(객관식, 주관식, 선형배율, 다중선택 등)
-
options
- id : 항목 id
- order : 옵션 번호
- option : 옵션 내용
-
answer
- interview_id : 항목 id
- answer : 응답 내용
- tilte, content, name 등 주요 column은 Not Null로 설정
- user 권한 확인 로직 포함
모집게시글
- 게시글 생성 :
POST
/recruitment/ - 게시글 수정 :
PUT
/recruitment/${study_id} - 게시글 리스트 반환 : 'GET' /recruitments?sort=latest&page=1&pagesize=9&due=1®ion=김포&type=online&step=before&tag=java,spring,react
- 게시글 반환 : 'GET' /recruitment/${study_id}
- 게시글 삭제 : 'DELETE' /recruitment/${study_id}
- 담기 버튼 : 'POST' /recruitment/favorite/${study_id}
인터뷰
- 인터뷰 저장 : 'POST' /study/interview/${board_id}
- 인터뷰 수정 : 'PUT' /study/interview/${interview_id}
- 인터뷰 리스트 반환 : 'GET' /study/interview/${interview_id}
응답
- 응답 저장 : 'POST' /study/interview/answer/${interview_id}
- 응답 수정 : 'PUT' /study/interview/answer/${interview_id}
- 응답 리스트 반환 : 'GET' /board/interview/answer/${interview_id}
팀 게시판
- 게시판 생성 : 'POST' /board/
- 게시판 수정 : 'PUT' /board?name="자유게시판"
- 게시판 삭제 :
게시글
- 게시글 생성 : 'POST' /board/${team_id}
- 게시글 수정 : 'PUT' /board/${board_id}
- 게시글 리스트 반환 : 'GET' /boards?sort=latest&page=1&pagesize=9&category="제목내용"&keyword="키워드"
- 게시글 반환 : 'GET' /board/${board_id}
- 게시글 삭제 : 'DELETE' /board/${board_id}
- 작성자 프로필 탐색 메소드 필요
- 소속 팀 탐색 메소드 필요
- 알림 DB 쪽으로 쪽지 내용을 전달하기 위한 메소드 필요