# 기능 요구사항

| **고유번호** | **M-00**                                                                                                                                                                                                                                                                                                                                |
| -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 명칭       | 태그                                                                                                                                                                                                                                                                                                                                      |
| 정의       | 모든 게시물 및 유저가 종속되는 분류                                                                                                                                                                                                                                                                                                                    |
| 세부내용     | <p></p><ol><li>모닥불의 모든 게시물 및 사용자의 속성은 태그에 의존한다.<br></li><li>태그의 속성은 다음과 같이 분류된다.<br>0: 관리자<br>1: 사용자<br>2: 게시물<br>3: 학과<br></li><li>사용자는 1, 3번에 해당되는 태그를 포함하여 자신의 소속을 나타낸다.<br> </li><li><p>게시물은 2, 3번에 해당되는 태그를 포함하여 해당 게시물의 소속을 나타낸다.</p><p></p></li><li>관리자를 나타내는 0번 태그는 오직 관리자 계정만 포함되게 되며, 해당 권한을 양도하는 API는 개발하지 않도록 한다.</li></ol> |

| **고유번호** | **M-01**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 명칭       | 커뮤니티(탭, 게시판)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| 정의       | 소융대 커뮤니티 기능                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| 세부내용     | <p></p><ol><li>기존 소융대 웹페이지가 가지고 있는 기능을 계승한다.<br></li><li>또한, 거기서 분석된 개선점을 고려하여 본 서비스에 적용시켜야 한다. <br></li><li>커뮤니티 기능은 기본적으로 다음과 같은 요구사항이 충족되어야 한다.<br>- 커뮤니티의 모든 탭은 정적으로 확장성을 고려하여 게시물의 태그에 따라 자동으로 생성해야 한다.<br>- 커뮤니티 탭은 관리자 권한에 의하여 지속적으로 생성되고 삭제될 수 있으며, 해당 탭이 삭제된다고 해도 기록된 게시물은 DB 내에 보존해야 한다.<br>- 각 커뮤니티 탭에는 관리자, 일반 사용자에 대한 읽기/쓰기 권한이 지정되어야 하며, 해당 정보는 태그에 의존한다.<br></li><li>모든 게시판은 해당 게시판에서 포스트 작성을 시도할 경우, 현재 존재하는 게시판의 모든 태그가 자동으로 등록되어야 한다.<br></li><li><p>기본적으로 존재하는 게시판의 종류는 다음과 같다,</p><ul><li>공지사항</li><li>학생회소개</li><li>학생회비 내역<br>- 소융대 모든 학과</li><li>민원</li><li>갤러리</li><li>공모전</li><li>세종소융봉사</li><li>투표/설문조사</li><li>통계자료<br></li></ul></li><li>해당 탭 중, 학생회소개, 갤러리, 통계자료, 투표/설문조사를 제외한 모든 항목의 게시물은 포스트(M-02)의 기능을 수행하며, 그외에는 모두 별도의 서식을 사용한다. </li></ol> |

| **고유번호** | **M-02**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 명칭       | 포스트                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| 정의       | 모닥불 내에 존재하는 게시물                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| 세부내용     | <p></p><ol><li>포스트 역시 기존 소융대 웹페이지가 가지고 있는 기능을 계승한다.<br></li><li>해당 포스트를 호출할 경우, 별도의 페이지를 호출하는 것이 아닌, REST API를 통해 해당 포스트와 관련된 데이터만을 주고받음으로 성능을 최대한 높인다.<br></li><li>포스 기능은 기본적으로 다음과 같은 요구사항이 충족되어야 한다.<br>- 모든 포스트는 제목, 작성자, 내용, 첨부파일 등의 데이터를 포함한다.<br>- 해당 포스트는 작성시, 작성자가 비밀글/익 여부를 결정할 수 있으며, 비밀글일 경우, 관리자 및 작성자 외에는 해당 글을 읽을 수 없게 한다.<br>- 포스트의 첨부파일은  이미지, 문서 파일을 비롯한 종류의 확장자만을 허용해야 한다.<br>- 포스트의 첨부파일 중, 이미지가 존재할 경우 해당 이미지의 미리보기 기능을 제공해야 한다. 또한 모든 첨부파일은 읽기 권한을 가진 사용자에 한하여 다운로드 기능을 제공한다.<br>- 포스트에서 사용자는 좋아요/댓글의 액션을 사용할 수 있으며, 해당 기능은 읽기 권한을 가진 회원 전용으로 한정한다.<br></li><li><p>포스트의 댓글 기능은 다음과 같은 요구사항이 충족되어야 한다.<br>- 댓글은 해당 게시물의 읽기 권한이 있는 사용자만이 작성할 수 있다.<br>- 댓글에는 해당 댓글에 종속되는 대댓글 기능을 지원한다.<br>- 댓글 작성시, 익명 여부를 결정할 수 있다.</p><p></p></li><li><p>해당 게시물은 작성자에 한하여 수정/삭제 기능이 가능하며, 관리자의 경우, 해당 게시물의 삭제 기능만을 지원한다.</p><p></p></li><li>해당 포스트들은 비밀글을 제외한 대상에 한하여, 익명글의 경우, 작성자를 제외한 모든 정보에 한하여 검색 기능을 지원한다. </li></ol> |

| **고유  번호**      | M-03                                                                                                                                                                                                                                                                                                                                                                                    |
| --------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 명칭              | 사용자 인증                                                                                                                                                                                                                                                                                                                                                                                  |
| 정의              | 세종대학교 구성원 인증을 통한 사용자 인증                                                                                                                                                                                                                                                                                                                                                                 |
| <p>세부<br>내용</p> | <p></p><ol><li>모닥불은 유저의 차원에서 수행하는 별도의 회원가입 기능을 가지지 않는다.</li><li>학교 입학시, 자동으로 생성되는 학번을 사용한 계정을 그대로 해당 서비에서 사용할 수 있도록 한다.</li><li>인증이 성공한 해당 학번으로 모닥불에 접근하는 것이 처음일 경우,  백엔드에서 그 즉시 자동으로 회원가입을 처리하여 회원 정보를 기입하고 로그인을 수행한다.</li><li>두 번째 이후부터는 기존의 회원 정보를 바탕으로 로그인을 수행한다.</li><li><p>회원 정보로 저장되는 데이터는 다음과  같다.</p><ul><li>학번</li><li>비밀번호(해쉬처리)</li><li>이름</li><li>소속학과</li></ul></li></ol> |

| **고유  번호**      | M-04                                                                                                                                                                                                                                                                                                                                                                                                                               |
| --------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 명칭              | 투표 및 설문조사                                                                                                                                                                                                                                                                                                                                                                                                                          |
| 정의              | 학교 이벤트 및 관심사에 대한 투표 및 설문조사 기능                                                                                                                                                                                                                                                                                                                                                                                                      |
| <p>세부<br>내용</p> | <p></p><ol><li><p>소융대 구성원을 대상으로 하는 투표 기능을 제공한다.</p><p></p></li><li><p>관리자만이 투표를 개설할 수 있으며, 관리자는 해당 투표에 참여할 수 없다.</p><p></p></li><li><p>투표 개설시, 관리자는 (체크박스, 라디오, 단답형)의 양식을 통해 해당 투표를 개설할 수 있다.</p><p></p></li><li><p>투표에는 만료 일자가 기입되어야 하며, 해당 만료 일자가 지날 경우 일반 사용자는 해당 투표 게시물을 페이지에서 확인할 수 없으며, 통계 자료 탭에서 해당 투표의 결과를 확인할 수 있다 .</p><p></p></li><li>사용자는 투표/설문조사 탭에서 현재 진행 중인 투표 리스트를 확인할 수 있으며, 권한이 있을 경우 해당 투표에 참여할 수 있다.</li></ol> |

| **고유  번호**      | M-05                                                                                                                                                                                                                                                                                                                          |
| --------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 명칭              | 대외활동 정보 수집                                                                                                                                                                                                                                                                                                                    |
| 정의              | 학과 관련 대외활동을 비롯한 각종 정보 크롤링 및 게시                                                                                                                                                                                                                                                                                                |
| <p>세부<br>내용</p> | <p></p><ol><li><p>소융대 구성원이 관심을 가질만한 주제를 대상으로 외부 공모전, 취업 관련 게시물을 수집한다.</p><p></p></li><li>현재까지 결정된 사이트는 다음과 같다.<br>- 데티즌 공모전 사이트 SW 관련<br>- 데티즌 공모전 사이트 디자인 관련<br>- 인디드 취업 공모 IT 관련<br>- 인디드 취업 공모 디자인 관련<br></li><li><p>크롤링을 통해 수집된 게시물 또한 해당 태그를 부여한 상태로, 다른 포스트와 함께 관리되며 별도로 URL 및 관련 대표 이미지를 따로 관리한다.</p><p></p></li></ol> |

| **고유  번호**      | M-06                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| --------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 명칭              | 관리자 인터페이스                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| 정의              | 모닥불 관리를 위한 관리자 인터페이스                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| <p>세부<br>내용</p> | <p></p><ol><li>해당 페이지는 관리자만이 접근이 가능하며, 모닥불 전체 페이지의 관리 기능을 제공한다.<br></li><li>관리자의 권한으로 수행할 수 있는 기능은 다음과 같다.<br>- 총 회원 리스트<br>- 유저 활동 기록 조회 및 검색<br>- 유저 쓰기 권한 제어<br>- 전체 범위 게시글 검색 및 삭제<br>- 커뮤니티 탭 생성/수정/삭제 기능(단, 초기 탭 수정/삭제 불가)<br>- 헤더 로고 및 아이콘 변경 기능<br>- 학생회 소개 페이지 수정 기능<br>- 투표 작성 및 조기 마감 기능<br>- 갤러리 작성/수정/삭제 기능<br>- 현재 존재하는 태그 조회 및 추가, 수정, 삭제<br></li><li>관리자 권한으로 특정 데이터를 삭제하는 기능을 수행할 경우, 반드시 한번 더 사용자에게 확인을 받도록 한다. <br></li><li>새로운 커뮤니티 탭을 추가할 경우, 이미 생성된 태그 중에 해당 탭에 소속된 태그를 선정하여 탭을 구축한다.</li></ol><p></p> |

| **고유  번호**      | M-07                                                                                                                                                                                                                                                                                                                  |
| --------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 명칭              | 통계 기능                                                                                                                                                                                                                                                                                                                 |
| 정의              | 모닥불 사용자 통계 기능                                                                                                                                                                                                                                                                                                         |
| <p>세부<br>내용</p> | <p></p><ol><li>모닥불 서비스의 사용자에 대한 다음과 같은 정보를 제공한다.<br></li><li><p>통계 자료 탭의 경우 다음과 같은 정보를 제공한다.<br>- 오늘/7일/한달 방문자수 확인 + 방문자수 시각화 그래프<br>- 오늘/7일/한달 등록된 글 수 + 등록수 시각화 그래프<br>- 좋아요가 높은 순 게시물 리스트<br>- 조회수가 높은 순 게시물 리스트 <br>- 투표 현황 및 결과 조회 + 점유율에 대한 시각화</p><p></p></li><li>통계 자료 데이터는 모두 csv 파일로 추출이 가능하게 한다.</li></ol> |
