포함할 항목에 대한 구성 가능한 옵션으로 기존 프로젝트의 완전한 복사본을 생성합니다.
프로젝트 복사
프로젝트 복사 변형은 동일한 회사 내에서 또는 다른 회사로 기존 프로젝트를 복제할 수 있게 해줍니다. 이는 프로젝트 템플릿을 생성하거나 유사한 프로젝트를 설정하거나 회사 간에 프로젝트를 이동하는 데 유용합니다. 복사 작업은 대규모 프로젝트를 효율적으로 처리하기 위해 비동기적으로 실행됩니다.
기본 예제
mutation CopyProject {
copyProject(
input: {
projectId: "proj_123abc"
name: "New Project Copy"
options: {
todos: true
todoLists: true
people: true
}
}
)
}
고급 예제
mutation CopyProject {
copyProject(
input: {
projectId: "proj_123abc"
name: "Q2 Marketing Campaign"
description: "Copy of Q1 campaign with updated timeline"
imageURL: "https://example.com/campaign-logo.png"
companyId: "comp_789xyz"
options: {
assignees: true
automations: true
checklists: true
customFields: true
discussions: false
discussionComments: false
dueDates: true
files: true
forms: true
people: true
projectUserRoles: true
statusUpdates: false
statusUpdateComments: false
tags: true
todoActions: true
todoComments: false
todoLists: true
todos: true
}
}
)
}
입력 매개변수
CopyProjectInput
매개변수 | 유형 | 필수 | 설명 |
---|---|---|---|
projectId |
String! | ✅ 예 | 복사할 프로젝트의 ID |
name |
String! | ✅ 예 | 새 프로젝트의 이름 (최대 50자) |
description |
String | 아니오 | 새 프로젝트의 설명 (최대 500자) |
imageURL |
String | 아니오 | 새 프로젝트의 이미지 URL |
companyId |
String | 아니오 | 새 프로젝트가 생성될 회사의 ID. 제공되지 않으면 소스 프로젝트의 회사를 사용합니다. |
options |
CopyProjectOptionsInput! | ✅ 예 | 복사할 요소에 대한 구성 |
CopyProjectOptionsInput
매개변수 | 유형 | 필수 | 설명 |
---|---|---|---|
assignees |
Boolean | 아니오 | 작업 담당자 복사 (requires people: true ) |
automations |
Boolean | 아니오 | 프로젝트 자동화 및 워크플로우 복사 |
checklists |
Boolean | 아니오 | 작업 체크리스트 복사 |
customFields |
Boolean | 아니오 | 사용자 정의 필드 정의 및 값 복사 |
discussions |
Boolean | 아니오 | 프로젝트 토론 복사 |
discussionComments |
Boolean | 아니오 | 토론에 대한 댓글 복사 (requires discussions: true ) |
dueDates |
Boolean | 아니오 | 작업의 마감일 복사 |
files |
Boolean | 아니오 | 파일 첨부 복사 |
forms |
Boolean | 아니오 | 프로젝트 양식 복사 |
people |
Boolean | 아니오 | 프로젝트 구성원 복사 |
projectUserRoles |
Boolean | 아니오 | 사용자 역할 및 권한 복사 (requires people: true ) |
statusUpdates |
Boolean | 아니오 | 프로젝트 상태 업데이트 복사 |
statusUpdateComments |
Boolean | 아니오 | 상태 업데이트에 대한 댓글 복사 (requires statusUpdates: true ) |
tags |
Boolean | 아니오 | 프로젝트 태그 복사 |
todoActions |
Boolean | 아니오 | 작업 작업/하위 작업 복사 |
todoComments |
Boolean | 아니오 | 작업 댓글 복사 |
todoLists |
Boolean | 아니오 | 작업 목록/섹션 복사 |
todos |
Boolean | 아니오 | 작업 복사 |
coverConfig |
Boolean | 아니오 | 할 일 커버 이미지 구성 복사 |
응답
변형은 Boolean
값을 반환합니다:
true
- 복사 작업이 성공적으로 큐에 추가되었습니다.false
- 복사 작업을 시작할 수 없습니다.
복사 상태 확인
복사가 비동기적이므로 copyProjectStatus
쿼리를 사용하여 진행 상황을 확인합니다:
복사 상태 필드
필드 | 유형 | 설명 |
---|---|---|
queuePosition |
Int | 복사 대기열에서의 위치 |
totalQueues |
Int | 대기열의 총 항목 수 |
isActive |
Boolean | 복사 작업이 현재 활성인지 여부 |
oldProject |
Project | 복사 중인 소스 프로젝트 |
newProjectName |
String | 생성 중인 새 프로젝트의 이름 |
isTemplate |
Boolean | 템플릿으로 복사 중인지 여부 |
oldCompany |
Company | 소스 회사 |
newCompany |
Company | 대상 회사 |
query CheckCopyStatus {
copyProjectStatus {
queuePosition
totalQueues
isActive
oldProject {
id
name
}
newProjectName
isTemplate
oldCompany {
id
name
}
newCompany {
id
name
}
}
}
필요한 권한
프로젝트를 복사하려면 소스 및 대상 위치 모두에서 적절한 권한이 필요합니다:
시나리오 | 필요한 권한 |
---|---|
Copy within same company | OWNER , ADMIN , or MEMBER role in the source project |
Copy to different company | • OWNER , ADMIN , or MEMBER role in the source project• Must be a member of the target company |
소스 프로젝트는 복사되기 위해 활성 상태(보관되지 않음)이어야 합니다.
오류 응답
프로젝트를 찾을 수 없음
{
"errors": [{
"message": "Record not found",
"extensions": {
"code": "PROJECT_NOT_FOUND"
}
}]
}
소스 프로젝트가 존재하지 않거나 접근 권한이 없을 때 발생합니다.
회사를 찾을 수 없음
{
"errors": [{
"message": "Record not found",
"extensions": {
"code": "COMPANY_NOT_FOUND"
}
}]
}
대상 회사가 존재하지 않거나 접근 권한이 없을 때 발생합니다.
프로젝트가 너무 큼
{
"errors": [{
"message": "Project is too large to copy",
"extensions": {
"code": "CREATE_PROJECT_LIMIT"
}
}]
}
프로젝트에 250,000개 이상의 작업이 있을 때 발생합니다.
복사가 이미 진행 중임
{
"errors": [{
"message": "Oops!"
}]
}
이미 복사 작업이 진행 중일 때 발생합니다.
중요한 노트
- 비동기 작업: 변형은 백그라운드 작업을 큐에 추가하고 즉시 반환합니다. 진행 상황을 추적하려면
copyProjectStatus
를 사용하세요. - 한 번에 하나의 복사: 사용자당 한 번에 하나의 복사 작업만 활성화될 수 있습니다.
- 크기 제한: 250,000개 이상의 작업이 있는 프로젝트는 복사할 수 없습니다.
- 논리적 종속성: 일부 옵션은 함께 사용할 때 가장 잘 작동합니다:
assignees
는people: true
와 함께 작동합니다 (사람 없이는 담당자가 복사되지 않습니다).discussionComments
는discussions: true
와 함께 작동합니다.statusUpdateComments
는statusUpdates: true
와 함께 작동합니다.projectUserRoles
는people: true
와 함께 작동합니다.
- 이름 처리: 프로젝트 이름은 잘리며 모든 URL은 자동으로 제거됩니다.
- 큐 우선 순위: 엔터프라이즈 고객은 복사 대기열에서 더 높은 우선 순위를 받습니다.
- 상태 캐싱: 복사 상태는 완료 후 6시간 동안 캐시됩니다.