将记录移动到同一项目内或跨项目的不同列表,并进行全面的复制和验证。
移动记录到列表
moveTodo
变更允许您将记录移动到不同的列表。此操作会在目标列表中创建记录的完整副本,并将其从源列表中删除。记录可以在同一项目内或跨不同项目移动(需具备适当权限)。
基本示例
mutation MoveTodo {
moveTodo(
input: {
todoId: "todo_123abc"
todoListId: "list_456def"
}
)
}
跨项目移动示例
mutation MoveTodoAcrossProjects {
moveTodo(
input: {
todoId: "todo_123abc"
todoListId: "different-project-list_789xyz"
}
)
}
输入参数
MoveTodoInput
参数 | 类型 | 必需 | 描述 |
---|---|---|---|
todoId |
String! | ✅ 是 | 要移动的记录的 ID |
todoListId |
String! | ✅ 是 | 目标列表的 ID |
响应
该变更返回一个 Boolean!
值:
true
- 记录已成功移动- 失败时会抛出错误,而不是返回
false
移动的内容
当记录被移动时,以下元素会被复制到新位置:
- ✅ 指派人 - 所有被指派的用户
- ✅ 检查清单 - 所有检查项及其完成状态
- ✅ 评论 - 所有评论和回复
- ✅ 自定义字段 - 所有自定义字段值
- ✅ 描述 - 完整的记录描述和格式
- ✅ 截止日期 - 原始截止日期和时间
- ✅ 标签 - 所有相关标签
- ✅ 待办事项 - 所有子任务和行动项
- ✅ 文件 - 所有文件附件(跨项目移动时特别处理)
位置处理
- 记录会自动放置在目标列表的 末尾
- 您不能指定自定义位置 - 位置会自动计算
- 位置设置为当前最大位置 + 65,535
所需权限
不同的权限级别具有不同的能力:
用户角色 | 同一项目 | 跨项目 | 文件访问 |
---|---|---|---|
OWNER |
✅ 是 | ✅ 是 | All files |
ADMIN |
✅ 是 | ✅ 是 | All files |
MEMBER |
✅ 是 | ❌ 否 | Own files only |
权限要求
- 您必须具有
OWNER
、ADMIN
或MEMBER
对源项目的访问权限 - 您必须具有目标项目的访问权限
MEMBER
用户不能在不同项目之间移动记录- 两个项目必须处于活动状态(未归档)
错误响应
记录未找到
{
"errors": [{
"message": "Todo was not found.",
"extensions": {
"code": "TODO_NOT_FOUND"
}
}]
}
列表未找到
{
"errors": [{
"message": "Todo list was not found.",
"extensions": {
"code": "TODO_LIST_NOT_FOUND"
}
}]
}
跨项目权限被拒绝
{
"errors": [{
"message": "You are not authorized.",
"extensions": {
"code": "FORBIDDEN"
}
}]
}
文件处理
同一项目移动
- 文件直接移动,不会创建副本
- 所有文件权限被保留
跨项目移动
- 在目标项目的存储中创建文件的新副本
- 原始文件在成功复制后异步删除
- 文件权限可能会根据目标项目设置进行更新
MEMBER
用户只能移动他们拥有的文件
副作用
移动记录会触发多个自动操作:
- 活动日志 - 创建显示移动的活动记录
- 通知 - 通知相关项目成员
- Webhook - 触发
handleTodoMoved
webhook 事件 - 自动化 - 运行为记录移动配置的自动化
- 实时更新 - 向所有连接的客户端发布实时更新
- 图表更新 - 更新项目图表和统计信息
重要说明
- 完整复制:所有记录数据都会被复制 - 您无法选择性地仅移动某些元素
- 自动位置:记录始终放置在目标列表的末尾
- 跨项目限制:
MEMBER
用户不能在项目之间移动记录 - 异步清理:跨项目移动的文件清理在后台进行
- 保留历史:评论、活动和审计记录被保留
- Webhook 事件:移动操作会触发删除和创建事件以实现实时同步
用例
重新组织工作
在列表之间移动记录以重新组织项目结构或工作流程阶段。
跨项目转移
在工作需要转移到不同团队或阶段时,在项目之间转移记录。
列表整合
在合并或重组项目列表时移动记录。