프로젝트 내에서 할 일 목록 관리 - 목록 생성, 편집, 삭제 및 조회


개요

Blue의 목록은 프로젝트 내에서 할 일을 조직하는 컨테이너입니다. 각 목록은 여러 개의 할 일을 담을 수 있으며 작업을 논리적인 그룹으로 구조화하는 데 도움을 줍니다. 목록은 위치 지정, 잠금 및 역할 기반 접근 제어를 지원합니다.

주요 개념

  • 각 프로젝트는 최대 50개의 목록을 가질 수 있습니다.
  • 목록은 위치에 따라 정렬됩니다(오름차순).
  • 목록은 수정 방지를 위해 잠글 수 있습니다.
  • 목록은 프로젝트 수준 및 역할 기반 권한을 존중합니다.
  • 삭제된 목록은 휴지통으로 이동됩니다(소프트 삭제).

쿼리

단일 목록 가져오기

ID로 특정 할 일 목록을 검색합니다.

query GetTodoList($id: String!) {
  todoList(id: $id) {
    id
    uid
    title
    position
    isDisabled
    isLocked
    createdAt
    updatedAt
    project {
      id
      name
    }
    createdBy {
      id
      username
    }
  }
}

프로젝트 내 모든 목록 가져오기

특정 프로젝트의 모든 할 일 목록을 검색합니다.

query GetProjectLists($projectId: String!) {
  todoLists(projectId: $projectId) {
    id
    uid
    title
    position
    isDisabled
    isLocked
    createdAt
    updatedAt
  }
}

고급 목록 쿼리

필터링, 정렬 및 페이지네이션을 사용하여 목록을 쿼리합니다.

query SearchTodoLists($filter: TodoListsFilterInput!, $sort: [TodoListsSort!], $skip: Int, $take: Int) {
  todoListQueries {
    todoLists(filter: $filter, sort: $sort, skip: $skip, take: $take) {
      items {
        id
        uid
        title
        position
        isDisabled
        isLocked
        createdAt
        updatedAt
        project {
          id
          name
        }
      }
      pageInfo {
        hasNextPage
        hasPreviousPage
        total
      }
    }
  }
}

변형

목록 생성

프로젝트 내에 새 할 일 목록을 생성합니다.

mutation CreateTodoList($input: CreateTodoListInput!) {
  createTodoList(input: $input) {
    id
    uid
    title
    position
    isDisabled
    isLocked
    createdAt
    project {
      id
      name
    }
  }
}

예시:

mutation {
  createTodoList(input: {
    projectId: "project-123"
    title: "Sprint 1 Tasks"
    position: 1.0
  }) {
    id
    title
  }
}

목록 편집

기존 할 일 목록의 속성을 업데이트합니다.

mutation EditTodoList($input: EditTodoListInput!) {
  editTodoList(input: $input) {
    id
    title
    position
    isLocked
    updatedAt
  }
}

예시:

mutation {
  editTodoList(input: {
    todoListId: "list-123"
    title: "Sprint 1 - In Progress"
    position: 2.0
    isLocked: true
  }) {
    id
    title
    isLocked
  }
}

목록 삭제

할 일 목록을 삭제합니다(휴지통으로 이동).

mutation DeleteTodoList($input: DeleteTodoListInput!) {
  deleteTodoList(input: $input) {
    success
  }
}

예시:

mutation {
  deleteTodoList(input: {
    projectId: "project-123"
    todoListId: "list-123"
  }) {
    success
  }
}

목록을 완료/미완료로 표시

목록의 모든 할 일을 완료 또는 미완료로 표시합니다.

# Mark as done
mutation MarkListDone($todoListId: String!, $filter: TodosFilter) {
  markTodoListAsDone(todoListId: $todoListId, filter: $filter)
}

# Mark as undone
mutation MarkListUndone($todoListId: String!, $filter: TodosFilter) {
  markTodoListAsUndone(todoListId: $todoListId, filter: $filter)
}

입력 유형

CreateTodoListInput

매개변수 유형 필수 설명
projectId String! ✅ 예 목록이 생성될 프로젝트 ID
title String! ✅ 예 목록의 이름
position Float! ✅ 예 목록의 위치(정렬용)

EditTodoListInput

매개변수 유형 필수 설명
todoListId String! ✅ 예 편집할 목록의 ID
title String 아니오 목록의 새 제목
position Float 아니오 목록의 새 위치
isLocked Boolean 아니오 목록이 잠겨야 하는지 여부

DeleteTodoListInput

매개변수 유형 필수 설명
projectId String! ✅ 예 프로젝트 ID(검증용)
todoListId String! ✅ 예 삭제할 목록의 ID

TodoListsFilterInput

매개변수 유형 필수 설명
companyIds [String!]! ✅ 예 회사 ID로 필터링
projectIds [String!] 아니오 특정 프로젝트 ID로 필터링
ids [String!] 아니오 특정 목록 ID로 필터링
titles [String!] 아니오 목록 제목으로 필터링
search String 아니오 제목으로 목록 검색

TodoListsSort 값

설명
title_ASC 제목 오름차순으로 정렬
title_DESC 제목 내림차순으로 정렬
createdAt_ASC 생성일 오름차순으로 정렬
createdAt_DESC 생성일 내림차순으로 정렬
updatedAt_ASC 업데이트 날짜 오름차순으로 정렬
updatedAt_DESC 업데이트 날짜 내림차순으로 정렬
position_ASC 위치 오름차순으로 정렬(기본값)
position_DESC 위치 내림차순으로 정렬

응답 유형

TodoList 유형

필드 유형 설명
id ID! 고유 식별자
uid String! 사용자 친화적인 식별자
position Float! 정렬을 위한 목록 위치
title String! 목록 이름
isDisabled Boolean! 목록이 비활성화되었는지 여부
isLocked Boolean 목록이 잠겨 있는지 여부
createdAt DateTime! 생성 타임스탬프
updatedAt DateTime! 마지막 업데이트 타임스탬프
activity Activity 관련 활동 로그
createdBy User 목록을 생성한 사용자
project Project! 상위 프로젝트
todos [Todo!]! 이 목록의 할 일
todosCount Int! 할 일의 수

TodoListsPagination 유형

필드 유형 설명
items [TodoList!]! 할 일 목록 배열
pageInfo PageInfo! 페이지네이션 정보

필수 권한

쿼리 권한

작업 필수 권한
todoList Must be authenticated
todoLists Must be authenticated and in company
todoListQueries.todoLists Must be authenticated and in company

변형 권한

작업 프로젝트 수준에서 허용된 역할
createTodoList OWNER, ADMIN, MEMBER
editTodoList OWNER, ADMIN, MEMBER, CLIENT
deleteTodoList OWNER, ADMIN, MEMBER
markTodoListAsDone OWNER, ADMIN, MEMBER
markTodoListAsUndone OWNER, ADMIN, MEMBER

참고: CLIENT 역할을 가진 사용자는 목록을 편집할 수 있지만 생성하거나 삭제할 수는 없습니다. VIEW_ONLY 또는 COMMENT_ONLY 역할을 가진 사용자는 목록을 생성, 편집 또는 삭제할 수 없습니다.

오류 응답

TodoListNotFoundError

{
  "errors": [{
    "message": "Todo list was not found.",
    "extensions": {
      "code": "TODO_LIST_NOT_FOUND"
    }
  }]
}

ProjectNotFoundError

{
  "errors": [{
    "message": "Project was not found.",
    "extensions": {
      "code": "PROJECT_NOT_FOUND"
    }
  }]
}

최대 목록 오류

{
  "errors": [{
    "message": "You have reached the maximum number of todo lists for this project.",
    "extensions": {
      "code": "INTERNAL_SERVER_ERROR"
    }
  }]
}

UnauthorizedError

{
  "errors": [{
    "message": "Unauthorized",
    "extensions": {
      "code": "UNAUTHORIZED"
    }
  }]
}

중요 사항

  • 목록 제한: 각 프로젝트는 최대 50개의 목록을 가질 수 있습니다.
  • 소프트 삭제: 삭제된 목록은 휴지통으로 이동되며 복구할 수 있습니다.
  • 위치 관리: 목록을 생성할 때 위치가 충돌하지 않도록 하십시오. 목록 사이에 삽입할 수 있도록 증가하는 값을 사용하십시오(1.0, 2.0, 3.0).
  • 역할 기반 접근: 목록은 ProjectUserRoleTodoList 권한을 사용하여 특정 역할에서 숨길 수 있습니다.
  • 웹훅: 목록 생성, 업데이트 및 삭제는 구성된 경우 웹훅을 트리거합니다.
  • 활동 추적: 모든 목록 작업은 활동 피드에 기록됩니다.
  • 실시간 업데이트: 목록 변경 사항은 실시간 업데이트를 위해 구독을 통해 게시됩니다.

관련 작업

  • todos 쿼리를 사용하여 목록 내의 할 일을 가져옵니다.
  • createTodo 변형을 사용하여 목록에 할 일을 추가합니다.
  • moveTodo 변형을 사용하여 목록 간에 할 일을 이동합니다.
  • subscribeToTodoList 구독을 사용하여 목록 변경 사항을 구독합니다.

AI 어시스턴트

응답은 AI를 사용하여 생성되며 오류가 포함될 수 있습니다.

어떻게 도와드릴까요?

Blue 또는 이 문서에 대해 궁금한 점이 있으면 무엇이든 물어보세요.

전송하려면 Enter • 새 줄을 추가하려면 Shift+Enter • ⌘I를 눌러 열기