/mooray

Primary LanguageJava

mooray


## 기술요구사항
  • View 는 Thymeleaf 로 개발합니다.
  • Data Access Layer 는 MyBatis 또는 JPA 를 결정하여 사용합니다. 혼용하지 않습니다.
  • Spring Boot 를 사용합니다.
  • Test Code 는 작성해야 합니다. (Coverage 최대한 높게)
    • @DataJpaTest, @WebMvcTest , @SpringBootTest 를 최대한 사용합니다.

산출물

  • ERD
  • 실행가능한 소스코드 ( zip파일로 압축해서 제출 , target 포함(x) )
    • java -jar 로 실행가능해야 합니다.
    • *.http 파일 생성
  • REST-API 실행 요청 및 결과 문서

ex) *.http 실행 결과 정리해서 제출

  • 학생조회
    • /students
GET [http://127.0.0.1:8080/students](http://127.0.0.1:8080/students)

HTTP/1.1 200 
Content-Type: application/json
Transfer-Encoding: chunked
Date: Thu, 09 Jun 2022 04:27:55 GMT
Keep-Alive: timeout=60
Connection: keep-alive

[
  {
    "id": 1,
    "name": "marco1",
    "score": 100
  },
  {
    "id": 2,
    "name": "marco2",
    "score": 100
  },
  {
    "id": 3,
    "name": "marco3",
    "score": 100
  }
]

Response code: 200; Time: 178ms; Content length: 112 bytes

## 요구사항

회원관리

  • 등록된 사용자는 ID/PW 인증 및 oauth 인증으로 로그인 할 수 있습니다.
  • 회원가입은 회원 가입 버튼을 클릭해서 진행합니다.
    • 회원가입시 계정정보(id,email,password)를 입력하여 저장합니다.
  • github.com의 이메일과 동일한 경우, github.com의 oauth 인증으로도 로그인 가능합니다.

프로젝트

  • 사용자는 Project 를 생성할 수 있습니다.
    • Project를 생성한 사용자는 Project 의 관리자 입니다.
    • Project는 프로젝트 이름, 상태(활성, 휴면, 종료) 를 가집니다.
  • Project 관리자는 멤버를 등록할 수 있습니다.
    • Project 멤버는 회원관리에서 가입한 회원만 가능합니다.
  • Project 멤버는 Task 를 등록, 수정, 삭제 할 수 있습니다.
  • Project 멤버는 Task 의 목록 및 내용을 확인 할 수 있습니다.
  • Project 멤버는 Project 에 Tag, MileStone 을 등록, 수정, 삭제 할 수 있습니다.
  • Project 에 등록한 Tag, MileStone 을 Task에 설정 할 수 있습니다.
    • Tag : Task 에 설정할 속성입니다. Task에 1개이상의 Tag 를 설정할 수 있습니다.
    • MileStone : Project 진척 상황을 나타내는 이정표입니다. Task 에 한개의 MileStone 을 설정할 수 있습니다.
  • Project 멤버는 Task 에 Comment 를 생성할 수 있습니다.
  • Comment 를 생성한 사용자는 Comment 를 수정, 삭제 할 수 있습니다.
  • Task-Api, Project, Task, Comment 의 구조는 다음과 같습니다.

image


## 설계

image


* **gateway 는 모든 서비스 요청을 받으며 프레젠테이션 기능을 담당합니다**. * TemplateEngine(Thymeleaf) 사용하여 화면을 표시합니다. * 데이터는 AccountApi, TaskApi 를 RestTempate으로 호출하여 받아 옵니다. * 화면정보를 표시할때 AccountApi, TaskApi 를 조합해서 제공할 수 있어야 합니다. * gateway 는 사용자의 인증을 담당합니다. * 인증 세션은 gateway 서버에서 redis 를 사용하여 관리합니다. * **Spring Session쓰지말고 RedisTemplate을 사용해 주세요.** * 인증 데이터는 Account-Api 를 사용합니다. * AccountApi 는 멤버의 정보를 관리합니다. * ProjectApi 는 Project, Task, Comment, Tag 를 관리 합니다.

Account-api

  • 인증처리는 GateWay 에 위임합니다.
  • (RestApi)회원 정보를 제공합니다.
  • (RestApi)회원의 상태(가입,탈퇴,휴면)를 관리(cud)합니다.

Task-api

  • 인증처리는 GateWay 에 위임합니다.
  • (RestApi) Project, Task, Comment, Tag, MileStone 정보를 관리하는 API 를 제공합니다.