This page contains information related to upcoming products, features, and functionality. It is important to note that the information presented is for informational purposes only. Please do not rely on this information for purchasing or planning purposes. The development, release, and timing of any products, features, or functionality may be subject to change or delay and remain at the sole discretion of GitLab Inc.
Status Authors Coach DRIs Owning Stage Created
accepted @ntepluhina @ayufan @gweaver devops plan 2022-09-28

Work Items

이 문서는 작성 중입니다. 일부 측면은 문서화되지 않았지만, 우리는 앞으로 추가할 것으로 기대합니다.

Summary

Work Items는 이슈, 요구 사항, 사건 등 제품 전체에서 지원하는 다양한 유형의 빌드 및 계획된 엔터티를 지원하기 위해 만든 새로운 아키텍처입니다. 이를 통해 이러한 유형을 쉽게 확장하고 사용자 정의할 수 있으며 동시에 동일한 핵심 기능을 공유할 수 있습니다.

용어

Work Items 아키텍처의 컴포넌트 및 속성을 설명하기 위해 다음 용어를 사용합니다.

Work Item

이슈, 요구 사항, 테스트 케이스, 사건 및 작업의 기본 유형(이 디렉터리은 앞으로 확장될 예정입니다). 다른 Work Items는 동일한 기본 속성 세트를 가지지만 위젯 디렉터리은 다릅니다.

Work Item 유형

다른 작업 항목 범주에 대한 미리 정의된 유형의 세트입니다. 현재 사용 가능한 유형은 다음과 같습니다:

기존 객체를 Work Item 유형으로 변환하거나 새로운 것을 추가하기 위한 작업이 진행 중입니다.

Work Item 속성

각 Work Item 유형에는 다음과 같은 공통 속성이 있습니다:

참고: 자세한 내용은 Work Item의 필드를 참조할 수 있습니다.

  • id - 고유한 Work Item 전역 식별자;
  • iid - 작업 항목의 내부 ID(현재 작업 공간은 프로젝트만 될 수 있습니다);
  • Work Item 유형;
  • Work Item 수정 시간과 관련된 속성: createdAt, updatedAt, closedAt;
  • 제목 문자열;
  • Work Item 비밀 유지 상태;
  • Work Item 상태(열림 또는 닫힘);
  • 작업 항목이 업데이트될 때마다 증가하는 잠금 버전;
  • 리소스에 대한 현재 사용자의 권한
  • Work Item 위젯 디렉터리

Work Item 위젯

모든 Work Item 유형은 미리 정의된 동일한 위젯 풀을 공유하며, 특정 유형에 활성화된 위젯에 따라 사용자 정의됩니다. 특정 Work Item 유형을 위한 위젯 디렉터리은 현재 미리 정의되어 있으며, 사용자 정의할 수 없습니다. 그러나 미래에는 사용자가 새로운 Work Item 유형을 생성하고 그에 대한 일련의 위젯을 정의할 수 있도록 계획 중입니다.

위젯 유형 (업데이트 중)

위젯 설명 피처 플래그 쓰기 권한 GraphQL 구독 지원
WorkItemWidgetAssignees 작업 항목 담당자 디렉터리   게스트
WorkItemWidgetAwardEmoji 작업 항목에 추가된 이모지 반응, 호감/비호감 횟수 지원 포함   보는 권한이 있는 사람 아니오
WorkItemWidgetCurrentUserTodos 작업 항목의 사용자 할 일 상태   보는 권한이 있는 사람 아니오
WorkItemWidgetDescription 작업 항목 설명, 편집 상태, 타임스탬프 및 작성자 지원   리포터 아니오
WorkItemWidgetHealthStatus 작업 항목의 건강 상태 할당 지원   리포터 아니오
WorkItemWidgetHierarchy 작업 항목 계층 구조, 자식의 존재 여부를 나타내는 부울 지원. 참고: 현재 계층 구조는 현재 OKR에만 사용 가능합니다. okrs_mvc 게스트 아니오
WorkItemWidgetIteration 작업 항목의 반복 지원   리포터 아니오
WorkItemWidgetLabels 작업 항목에 추가된 라벨 디렉터리, 범위가 지원되는지 확인하는 지원 포함   리포터
WorkItemWidgetLinkedItems 특정 작업 항목과 관련된 작업 항목 디렉터리, 관계 유형은 관련됨, 차단차단된 항목일 수 있음. 차단 상태, 차단된 항목, 차단, 관련 항목의 개별 카운트 지원 포함.   게스트 아니오
WorkItemWidgetMilestone 작업 항목의 마일스톤 할당 지원   리포터 아니오
WorkItemWidgetNotes 작업 항목 내 논의 디렉터리   게스트
WorkItemWidgetNotifications 현재 사용자의 작업 항목 알림 구독 상태   보는 권한이 있는 사람 아니오
WorkItemWidgetProgress 작업 항목의 진행 값. 참고: 현재 진행은 현재 OKR에만 사용 가능합니다. okrs_mvc 리포터 아니오
WorkItemWidgetStartAndDueDate 작업 항목의 시작 및 마감 날짜 설정   리포터 아니오
WorkItemWidgetStatus 요구 사항 유형의 작업 항목의 상태, 가능한 상태 유형은 확인되지 않음, 만족했음, 실패함     아니오
WorkItemWidgetTestReports 작업 항목에 연결된 테스트 보고서      
WorkItemWidgetWeight 작업 항목의 가중치 설정   리포터 아니오
WorkItemWidgetLock 작업 항목 잠금/잠금 해제   리포터 아니오
WorkItemWidgetColor 작업 항목의 색상 설정. 참고: 현재 색상은 현재 에픽에만 사용 가능합니다.   리포터 아니오

위젯 가용성 (업데이트 중)

위젯 에픽 이슈 작업 목표 핵심 결과
WorkItemWidgetAssignees
WorkItemWidgetAwardEmoji ✔️
WorkItemWidgetCurrentUserTodos
WorkItemWidgetDescription
WorkItemWidgetHealthStatus
WorkItemWidgetHierarchy ✔️
WorkItemWidgetIteration
WorkItemWidgetLabels
WorkItemWidgetLinkedItems ✔️ ✔️ ✔️
WorkItemWidgetMilestone 🔍
WorkItemWidgetNotes
WorkItemWidgetNotifications
WorkItemWidgetProgress
WorkItemWidgetStartAndDueDate 🔍
WorkItemWidgetStatus
WorkItemWidgetTestReports
WorkItemWidgetWeight 🔍
WorkItemWidgetColor

범례

  • ✅ - 위젯 사용 가능
  • ✔️ - 위젯 예정
  • ❌ - 위젯 사용 불가
  • ❓ - 고려 대상의 위젯
  • 🔍 - 대체 위젯 예정

작업 항목 관계

작업 항목은 여러 가지 방법으로 다른 작업 항목과 관련될 수 있습니다:

  • 상위: 현재 작업 항목에 대한 직계 조상으로, 이 작업 항목의 완료는 이 작업 항목을 완료하는 데 의존합니다.
  • 하위: 현재 작업 항목의 직계 자손으로, 이 작업 항목의 완료에 기여합니다.
  • 차단됨: 현재 작업 항목의 완료를 방해하는 작업 항목.
  • 차단함: 현재 작업 항목의 완료가 차단된 작업 항목.
  • 관련: 현재 작업 항목의 주제와 관련이 있는 작업 항목으로, 직접적으로 기여하거나 완료를 방해하지는 않습니다.

계층 구조

상위-하위 관계는 작업 항목의 계층 구조의 기초를 형성합니다. 각 작업 항목 유형은 해당 유형의 부모 또는 자식이 될 수 있는 유형의 정의된 집합을 갖고 있습니다.

유형이 확장되고, 상위 항목에는 자체 상위 항목이 있을 때 계층 구조 기능이 기하급수적으로 커질 수 있습니다.

작업 항목 보기

글로벌 작업 항목 id를 식별자로 사용하여 모든 유형의 작업 항목을 렌더링하는 새 프론트엔드 보기입니다.

작업

작업은 특별한 작업 항목 유형입니다. 작업은 문제에 하위 항목으로 추가될 수 있으며 문제 보기 모달에서 표시될 수 있습니다.

피처 플래그

다양한 부분이 많은 큰 프로젝트이므로, 피처 플래그를 사용하여 사용 가능한 위젯의 프로모션을 추적합니다. 아래 표는 사용 중인 다른 피처 플래그 및 해당 사용자를 보여줍니다.

피처 플래그 이름 사용자
work_items 기본으로 활성화됨
work_items_beta gitlab-org, gitlab-com
work_items_mvc_2 gitlab-org/plan-stage

동기

작업 항목의 주요 목표는 모든 산업의 지식 노동자를 위한 가장 인기있는 협업 도구로 계획 도구를 향상하는 것입니다.

  • 모든 유형의 비슷한 항목(이슈, 사건, 에픽, 테스트 케이스 등)을 표준 플랫폼에 올려 유지보수를 간소화하고 일관된 경험을 증가시킵니다.
  • 공통 계획 개념의 일류 지원을 가능하게 하여 복잡성을 줄이고 사용자가 GitLab에 특화된 미묘한 점을 배우지 않고도 계획할 수 있도록 합니다.

목표

확장성

현재 문제, 에픽, Merge Request 등과 같은 다른 엔터티가 많은 유사한 기능을 공유하지만, 이러한 기능은 각각 별도로 구현됩니다. 이로 인해 새로운 기능을 추가하거나 기존 기능을 리팩터링하는 것이 문제가 됩니다. 예를 들어, 이슈 및 사건에 새 기능을 추가하려면 각각의 유형에 대해 별도로 구현해야 합니다. 작업 항목에서 새로운 기능은 기존 모든 유형에 대해 위젯을 통해 구현되므로 아키텍처가 확장 가능해집니다.

유연성

기존 구현에는 문제, Merge Request, 에픽 등에 대한 강한 구조가 있습니다. 이 구조는 백엔드와 프론트엔드 모두에서 정의되므로 어떤 변경이든 조정된 노력이 필요합니다. 또한 사용자의 이 구조를 사용자 정의 할 수 있도록하기 어렵습니다. Work Item 아키텍처는 프론트엔드가 유연한 방식으로 작업 항목 위젯을 표시할 수 있도록 합니다. 작업 항목 위젯에 있는 내용은 페이지에 렌더링되므로 변경을 빠르게 할 수 있으며 구조가 훨씬 유연해집니다. 예를 들어, 사건 페이지에서 레이블 표시를 중단하려면 백엔드에서 사건 작업 항목 유형에서 레이블 위젯을 제거합니다. 또한 미래에는 사용자가 사용자 정의 작업 항목 유형에서 보고 싶은 위젯 세트를 정의할 수 있게 될 것입니다.

일관된 경험

유사한 기능에 대해 일관된 동작을 갖도록 최대한 노력하지만 여전히 구현에 차이가 있습니다. 예를 들어, GraphQL API를 통해 Merge Request에서 레이블을 업데이트하는 것은 전용 setMergeRequestLabels 뮤테이션으로 수행할 수 있지만, 문제의 경우 보다 일반적인 updateIssue를 호출해야 합니다. 이로 인해 프론트엔드 및 외부 API 사용자 모두에게 일관되지 않은 경험을 제공합니다. 결과적으로 에픽, 이슈, 요구 사항 등은 모두 유사하지만 사용자가 각각의 동작 방식에 대한 복잡한 멘탈 모델을 보유해야 합니다.

작업 항목 아키텍처는 모든 유형의 모든 기능을 일관되게 만들도록 설계되었으며, 이러한 기능은 작업 항목 위젯으로 구현됩니다.

해결할 고수준 아키텍처 문제

  • 에픽을 작업 항목 유형으로 마이그레이션하기 위해 그룹 및 프로젝트 통합을 우회하는 방법
  • 특정 작업 항목 유형에 대한 상위-하위 관계 처리: 에픽 > 문제 > 작업 및 동일한 작업 항목 유형에 대한 상위-하위 관계 처리: 문제 > 문제
  • 사용자 정의 작업 항목 유형 및 사용자 정의 위젯 구현

링크