자, 사용자 스토리...를 만들어봅시다..ㅎㅎ # iOS ## 모든 화면 전환에서 적용 - 서버로부터 받아올 필요가 있는 데이터는 항상 서버에 다시 요청하여 데이터를 갱신한다. ## 이슈 목록 화면 ### Search Bar (iOS) #### 기능 요구사항 - 사용자는 이슈 목록에서 원하는 이슈를 검색할 수 있어야 한다. #### 테스트 요구사항 - 검색 중에는 검색 단어를 포함하는 Title 목록이 표시되어야 한다. - 검색이 완료되면 이슈 목록화면으로 돌아가야 한다. - 검색이 완료되면 조건에 해당하는 이슈 목록이 표시되어야 한다. --- ### 이슈 목록 (iOS) #### 기능 요구사항 - 사용자는 이슈 목록을 확인할 수 있어야 한다. - 사용자는 셀을 왼쪽으로 스와이프하면 셀을 delete 또는 close할 수 있어야 한다. - 사용자는 셀을 선택하면 셀 상세화면으로 전환할 수 있어야 한다. #### 테스트 요구사항 - 화면이 표시될 때 마다 이슈 목록 리스트를 서버를 통해 불러온다. - 셀을 삭제 할 때 iid를 포함해서 서버에 이슈 삭제 요청을 한다. - 응답 코드가 200일 경우 이슈 목록에서 해당 cell이 삭제되어야 한다. ```json { "iid": "[이슈 아이디]" } ``` - 셀을 클로즈 했을 때 - 응답 코드가 200일 경우 이슈 상태 label이 closed로 변경되어야 한다. ```json { "title": "[이슈 타이틀]", "content": null or "[이슈 내용]", "author": "[이슈 작성자]", "label": null or [ { "name": "[레이블 이름]", "color": "[레이블 색상]", "desc": "[레이블 설명]" }, ... ], "mid": null or "[마일스톤 번호]", "assginees": null or [ { "uid": "[유저 식별번호]", "nickname": "[유저의 닉네임]" }, ... ] } ``` - 셀을 선택했을 때는 상태 화면으로 전환되어야 한다. --- ### 화면 전환 (iOS) #### 기능 요구사항 - 사용자는 선택한 화면으로 전환할 수 있어야 한다. - Filter 버튼을 누르면 이슈 목록 필터 화면으로 전환할 수 있어야 한다. - Edit 버튼을 누르면 다중선택 편집 화면으로 전환할 수 있어야 한다. - 탭바 버튼을 선택하면 해당 화면(레이블 목록, 마일스톤 목록)으로 전환할 수 있어야 한다. - [+] 버튼을 누르면 해당 새로운 이슈 생성 화면으로 전환할 수 있어야 한다. #### 테스트 요구사항 - 선택한 화면으로 정상적인 전환이 이루어져야 한다. --- ## 다중선택 편집 화면 (iOS) #### 기능 요구사항 - 사용자는 다중 선택을 통해 여러개의 이슈를 한번에 close 할 수 있어야 한다. #### 테스트 요구사항 - 셀을 선택하면 체크박스에 선택 표시가되어야 한다. - select All 을 누르면 모든 체크박스가 선택되어야 한다. - select All 을 누른 후 버튼의 Title이 deselect All로 변경되어야 한다. - Cancel 버튼을 누르면 데이터 변동 없이 이전 화면으로 이동되어야 한다. - 선택 이슈 닫기 버튼을 누르면 선택 된 모든 이슈들을 서버에 close 요청한다. - 응답 코드가 200일 경우 선택된 이슈들의 상태 label이 closed로 변경되어야 한다. --- ## 이슈 추가 화면 (iOS) ### 코멘트 작성 #### 기능 요구사항 - 사용자는 마크다운 Text를 입력할 수 있어야 한다. - 사용자는 앨범에서 사진을 선택해 서버에 업로드 할 수 있어야 한다. #### 테스트 요구사항 - 사용자가 앨범에서 사진을 업로드 할 경우, 서버에 이미지 업로드 요청을 해야한다. - 응답코드가 200일 경우 서버에서 이미지 url 을 받아 마크다운 형식으로 삽입한다. --- ### 미리보기 #### 기능 요구사항 - 사용자는 코멘트에 입력한 마크다운 Text를 미리보기로 렌더링된 화면을 볼 수 있어야 한다. #### 테스트 요구사항 - 입력된 텍스트 중에 마크다운 형식으로 입력된 Text들은 마크다운 문법을 적용하여 화면에 표시되어야 한다. --- ### 이슈 저장 버튼 #### 기능 요구사항 - 사용자는 작성한 이슈를 저장할 수 있어야 한다. #### 테스트 요구사항 - 사진이 1개 이상 업로드 중인 경우 저장 버튼은 비활성화 되어야 한다. - 버튼을 터치하면 서버에 이슈 생성하기 요청을 해야 한다. - 요청이 완료되면 이슈 목록 화면으로 돌아간다. - 응답코드가 400일 경우 실패 Toast 메시지를 표시한다. --- ## 이슈 상세 화면 (iOS) ### 이슈 정보 표시 #### 기능 요구사항 - 사용자는 이슈에 대한 정보를 볼 수 있어야 한다. #### 테스트 요구사항 - 작성자, 제목, 오픈 여부, 이슈 번호 등이 정상적으로 표시 되어야 한다. --- ### 댓글 정보 표시 #### 기능 요구사항 - 사용자는 이슈에 달린 모든 댓글의 목록을 확인할 수 있어야 한다. #### 테스트 요구사항 - 댓글 목록은 이슈 제목 카드 아래에 스크롤 가능한 형태로 표시되어야 한다. ### edit 버튼 #### 기능 요구사항 - 사용자가 edit 버튼 선택 시 이슈 편집 화면으로 화면이 전환되어야 한다. #### 테스트 요구사항 - edit 누를 시 이슈 편집 화면으로 전환 되어야 한다. --- ## 이슈 세부 항목 편집 화면 (iOS) ### 담당자, 레이블, 마일 스톤 지정 #### 기능 요구사항 - 사용자는 Edit 버튼을 누르면 Assignee, Label, Milestone을 지정할 수 있어야 한다. #### 테스트 요구사항 - Edit 버튼을 누르면 해당 정보가 목록 화면으로 표시되어야 한다. --- ### Close Issue 버튼 #### 기능 요구사항 - 사용자는 Close Issue 버튼을 누르면 해당 이슈를 close할 수 있어야 한다. #### 테스트 요구사항 - (위에 설명한 내용과 동일하여 생략) --- ### 댓글 추가 버튼 #### 기능 요구사항 - 사용자는 댓글 추가 버튼을 눌러 댓글을 추가할 수 있어야 한다. #### 테스트 요구사항 - 사용자가 댓글 추가를 누를 시 서버에 댓글 추가를 요청한다. - 응답 코드가 200일 경우 댓글 목록을 새로 표시한다. [이슈 세부 항목 편집 화면 스와이프 구현 참고 자료](https://medium.com/@sergkharauzov/make-draggable-uiviewcontroller-with-swipe-cards-using-custom-transitions-in-ios-c96f581639e0) # 웹 화이팅 ### Search Bar #### 기능 요구사항 - 사용자는 이슈 목록에서 원하는 이슈를 검색할 수 있어야 한다. #### 테스트 요구사항 - 검색이 완료되면 API통신을 통해 해당 검색어를 포함하는 목록을 받아온다. - API통신이 완료되면 이슈 목록화면에 검색 결과를 표시한다. --- ### 검색어 필터링 조건 팝업 #### 기능 요구사항 - 사용자는 5가지 옵션으로 필터링 검색을 추천 받는다. #### 테스트 요구사항 --- ### 검색어 필터링 인풋 박스 #### 기능 요구사항 #### 테스트 요구사항 --- ### 검색어 입력 필터링 #### 기능 요구사항 #### 테스트 요구사항 --- ### 검색어 필터링 초기화 체크박스 #### 기능 요구사항 #### 테스트 요구사항 --- ### 이슈 목록 #### 기능 요구사항 - 사용자는 이슈 목록을 확인할 수 있어야 한다. #### 테스트 요구사항 - 페이지 별로 이슈를 최신순으로 10개씩 끊어서 받아온다. - query문을 통해 해당 페이지에 맞는 이슈만을 불러온다. (ex. ?page=1) - 페이지 갯수도 표시해 주어야 한다. ( < 1 2 3 4 5 > => 페이지가 몇개인지 ) --- ### Labels, Milestone 버튼 #### 기능 요구사항 #### 테스트 요구사항 --- ### New issue 버튼 #### 기능 요구사항 #### 테스트 요구사항 --- ### 이슈 체크박스 #### 기능 요구사항 #### 테스트 요구사항 --- ### 이슈 목록 필터링 (Author) #### 기능 요구사항 #### 테스트 요구사항 --- ### 이슈 목록 필터링 (Label) #### 기능 요구사항 #### 테스트 요구사항 --- ### 이슈 목록 필터링 (Milestones) #### 기능 요구사항 #### 테스트 요구사항 --- ### 이슈 목록 필터링 (Assignee) #### 기능 요구사항 #### 테스트 요구사항 --- ### 이슈 상세 정보 표시 (Label, Milestones, Comment 갯수) #### 기능 요구사항 #### 테스트 요구사항 ---