식별된 ROLE

  • 그룹 멤버 = 그룹 관리자 + 그룹 참여자
    • 그룹 관리자(Group Manager) : 그룹 관리자로 등록된 사용자
    • 그룹 참여자(Group Participant)
  • 프로젝트 멤버 = 프로젝트 관리자 + 프로젝트 참여자
    • 프로젝트 소유자(Project Owner) : 프로젝트를 생성한 사용자 또는 프로젝트를 이관받은 사용자
    • 프로젝트 관리자(Project Manager) : 프로젝트 관리자 권한을 부여 받은 사용자 + 프로젝트 소유자
    • 프로젝트 참여자(Project Participant)
  • 사용자(User) : Yobi에 접속한 모든 사람
  • 로그인 사용자(Guest) : 로그인한 사용자
  • 익명 사용자(Anonymous) : 로그인하지 않은 사용자

정의

  • 그룹 페이지 : 어떤 그룹에 속한 프로젝트와 멤버를 한 번에 볼 수 있는 페이지

Group

  • 그룹 생성
    • 로그인한 사용자는 그룹을 만들 수 있다.
  • 그룹 삭제
    • 그룹 관리자는 자신이 관리자인 그룹을 삭제할 수 있다.
      • 그룹이 소유하고 있는 프로젝트가 있다면 삭제할 수 없다.
      • 그룹이 소유하고 있는 모든 프로젝트를 이관/삭제하여 그룹이 소유하고 있는 프로젝트가 전혀 없을 때 삭제 가능하다.
      • 그룹이 삭제되어도 그룹이 소유한 프로젝트의 멤버 구성에는 변함이 없다.
  • 사용자가 할 수 있는 일
    • 사용자는 그룹 페이지를 볼 수 있다.
    • 사용자는 그룹의 모든 멤버 리스트를 볼 수 있다.
    • 사용자는 자신이 멤버로 등록된 그룹의 리스트를 볼 수 있다.
  • 그룹 관리자가 할 수 있는 일
    • 그룹 관리자는 자신이 관리자인 그룹의 프로젝트를 생성/삭제할 수 있다.
    • 그룹 관리자는 자신이 관리자인 그룹의 모든 프로젝트에서 프로젝트 관리자 역할을 수행할 수 있다.
      • 프로젝트 멤버는 관리자, 참여자 두 개만 존재하지만 그룹이 소유한 프로젝트에서는 그룹 관리자라는 새로운 롤이 생기고 해당 롤은 해당 프로젝트의 관리자 롤과 동일한 기능을 수행할 수 있다.
    • 그룹 참여자는 자신이 참여자인 그룹의 모든 protected 프로젝트에서 프로젝트 참여자 역할을 수행할 수 있다.
      • 프로젝트 멤버는 관리자, 참여자 두 개만 존재하지만 그룹이 소유한 protected 프로젝트에서는 그룹 참여자라는 새로운 롤이 생기고 해당 롤은 해당 프로젝트의 참여자 롤과 동일한 기능을 수행할 수 있다.
    • 그룹 관리자는 자신이 그룹 관리자인 그룹에 자신 이외의 관리자를 추가할 수 있다.
      • 따라서 하나의 그룹은 그룹 관리자가 두 명 이상이 될 수 있다.
    • 그룹 관리자는 그룹에 멤버를 추가/삭제를 할 수 있다.
      • 멤버들을 특정 그룹으로 묶어서 편하게 보기 위해서.
      • 특정 프로젝트는 해당 그룹의 멤버들만 접근 가능 하게 만들기 위해서.
  • 그룹 멤버가 할 수 있는 일
    • 그룹 멤버는 자신이 속한 그룹에서 탈퇴할 수 있다.
  • 검색
    • 사용자는 그룹을 찾기 위해 그룹 이름으로 검색할 수 있다.

Project

  • 생성
    • 로그인 사용자는 프로젝트 생성 시에 프로젝트를 자신이 그룹 관리자인 그룹에 추가할 수 있다.
    • 로그인 사용자는 프로젝트 생성 시에 프로젝트를 자신에게 추가할 수 있다.
  • 공개 설정
    • 프로젝트 관리자는 프로젝트의 공개 설정을 private, protected, public 중 하나로 설정 할 수 있다.
      • 각 설명은 Rule 참조.
  • 개인이 소유한 프로젝트 이관
    • 프로젝트 소유자는 자신이 소유하고 있는 프로젝트를 다른 사용자에게 이관할 수 있다.
    • 프로젝트 소유자는 자신이 소유하고 있는 프로젝트를 어떤 그룹으로 이관할 수 있다.
    • 프로젝트 소유자는 자신이 소유하고 있는 프로젝트를 이관시킨 후 그 프로젝트의 관리자가 된다.
  • 그룹이 소유한 프로젝트 이관
    • 그룹 관리자는 자신이 그룹 관리자인 그룹의 프로젝트를 사용자에게 이관할 수 있다.
    • 그룹 관리자는 자신이 그룹 관리자인 그룹의 프로젝트를 다른 그룹으로 이관할 수 있다.
    • 그룹 관리자는 자신이 그룹 관리자인 그룹의 프로젝트를 이관시킨 후 그 프로젝트의 관리자가 된다.

Rule

  • 사용자가 그룹 멤버일 경우 그룹 페이지에서 볼 수 있는 프로젝트
Private ProjectProtected ProjectPublic Project
Project MemberOOO
Group ManagerOOO
Group ParticipantXOO
  • 사용자가 그룹 멤버가 아닐 경우 그룹 페이지에서 볼 수 있는 프로젝트
Private ProjectProtected ProjectPublic Project
Project MemberOOO
GuestXXO
AnonymousXXO
  • 프로젝트 목록을 볼 수 있는 프로젝트
Private ProjectProtected ProjectPublic Project
Project MemberOOO
Group ManagerOOO
Group ParticipantXOO
GuestXXO
AnonymousXXO
  • 각 프로젝트에서 할 수 있는 일
    • 그룹 멤버 여부와 상관없이 프로젝트에 어떤 권한을 가지고 있는지에 따라 할 수 있는 일이 결정된다.
    • 그룹 관리자는 그룹에 속한 프로젝트의 관리자로 등록되기 때문에 프로젝트 관리자 역할을 할 수 있다.
    • 그룹 참여자는 protected 프로젝트의 참여자와 동등한 권한을 갖기 때문에 프로젝트 참여자 역할을 할 수 있다.

추가됐으면 하는 기능

  • 그룹 아바타
  • Mention
    • 그룹 이름으로 멘션 가능?
      • 그룹 멤버가 아닌 사용자에게도 그룹 이름으로 멘션 가능?
    • 프로젝트 이름으로 멘션 가능?
  • 멤버추가
    • 프로젝트 관리자는 그룹을 프로젝트 멤버로 추가 할 수 있다.
      • 이때 그룹 관리자를 추가할지, 그룹 멤버를 추가할지 선택 가능하다.
  • 그룹 페이지
    • 그룹 멤버는 하위 프로젝트에 대한 이슈 목록을 모아 볼 수 있다.
    • 그룹 멤버는 하위 프로젝트에 대한 마일스톤 목록을 모아 볼 수 있다.
    • 그룹 멤버는 하위 프로젝트에 대한 코드 주고받기 목록을 볼 수 있다.
    • 그룹 멤버는 하위 프로젝트에 대한 대쉬보드를 볼 수 있다.
      • 일별로 추가된 이슈와 해결된 이슈를 표현하는 그래프.
      • 사람 별 이슈를 얼마나 처리했는지 알 수 있는 그래프.
      • 일별 LOC 그래프.
      • 일별로 얼마나 커밋 됐는지 알 수 있는 그래프.