프로젝트 내에서 할 일 목록 관리 - 목록 생성, 편집, 삭제 및 조회
개요
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
구독을 사용하여 목록 변경 사항을 구독합니다.