任务快照只在失败终态保留 failure

- failure 改由终态判定驱动,不再只看 provider 是否留下错误字段
- 已完成的任务即使带过期错误字段也不再挂 failure,保持快照内部自洽
This commit is contained in:
2026-09-22 15:45:45 +08:00
parent d9aa686e9a
commit 1749f427c1
@@ -35,11 +35,11 @@ pub(crate) fn map_task(task: Task) -> Result<TripoTaskSnapshot, TripoError> {
status,
progress: task.progress,
output,
failure: (task.error_code.is_some() || task.error_message.is_some()).then(|| {
TripoTaskFailure {
code: task.error_code,
message: task.error_message,
}
// 只有非成功的终态才可能带 provider 失败信息:provider 留下过期错误字段时,
// 已完成的快照不该再挂 failure,否则快照内部自相矛盾。
failure: is_terminal_failure(status).then(|| TripoTaskFailure {
code: task.error_code,
message: task.error_message,
}),
created_at: task.created_at,
completed_at: task.completed_at,
@@ -72,6 +72,14 @@ fn map_status(status: TaskStatus) -> Result<Model3dTaskStatus, TripoError> {
}
}
/// 失败 / 取消 / 过期是「任务已结束且没有可用产物」的终态,只有它们允许携带失败信息。
fn is_terminal_failure(status: Model3dTaskStatus) -> bool {
matches!(
status,
Model3dTaskStatus::Failed | Model3dTaskStatus::Cancelled | Model3dTaskStatus::Expired
)
}
fn map_output(
task_id: &str,
task_type: &TripoTaskType,