use std::{error::Error, fmt}; #[derive(Clone, Debug, PartialEq, Eq)] pub enum AiTaskFieldError { MissingTaskId, MissingOwnerUserId, MissingRequestLabel, MissingSourceModule, MissingStageBlueprints, DuplicateStageBlueprint, MissingReferenceId, MissingChunkText, InvalidSequence, MissingFailureMessage, MissingStage, InvalidTaskState, } #[derive(Clone, Debug, PartialEq, Eq)] pub enum AiTaskServiceError { Field(AiTaskFieldError), TaskAlreadyExists, TaskNotFound, StageNotFound, Store(String), } impl fmt::Display for AiTaskFieldError { fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { match self { Self::MissingTaskId => f.write_str("ai_task.task_id 不能为空"), Self::MissingOwnerUserId => f.write_str("ai_task.owner_user_id 不能为空"), Self::MissingRequestLabel => f.write_str("ai_task.request_label 不能为空"), Self::MissingSourceModule => f.write_str("ai_task.source_module 不能为空"), Self::MissingStageBlueprints => f.write_str("ai_task.stages 至少需要一个有效阶段"), Self::DuplicateStageBlueprint => f.write_str("ai_task.stages 不能包含重复阶段"), Self::MissingReferenceId => f.write_str("ai_result_reference.reference_id 不能为空"), Self::MissingChunkText => f.write_str("ai_text_chunk.delta_text 不能为空"), Self::InvalidSequence => f.write_str("ai_text_chunk.sequence 必须大于 0"), Self::MissingFailureMessage => f.write_str("ai_task.failure_message 不能为空"), Self::MissingStage => f.write_str("ai_task.stage 不存在"), Self::InvalidTaskState => f.write_str("当前 ai_task 状态不允许执行该操作"), } } } impl Error for AiTaskFieldError {} impl fmt::Display for AiTaskServiceError { fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { match self { Self::Field(error) => write!(f, "{error}"), Self::TaskAlreadyExists => f.write_str("ai_task 已存在,不能重复创建"), Self::TaskNotFound => f.write_str("ai_task 不存在"), Self::StageNotFound => f.write_str("ai_task.stage 不存在"), Self::Store(message) => f.write_str(message), } } } impl Error for AiTaskServiceError {}