任务快照只在失败终态保留 failure
- failure 改由终态判定驱动,不再只看 provider 是否留下错误字段 - 已完成的任务即使带过期错误字段也不再挂 failure,保持快照内部自洽
This commit is contained in:
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user