use erp_core::error::AppError; /// Workflow module error types. #[derive(Debug, thiserror::Error)] pub enum WorkflowError { #[error("验证失败: {0}")] Validation(String), #[error("资源未找到: {0}")] NotFound(String), #[error("流程定义已存在: {0}")] DuplicateDefinition(String), #[error("流程图无效: {0}")] InvalidDiagram(String), #[error("流程状态错误: {0}")] InvalidState(String), #[error("表达式求值失败: {0}")] ExpressionError(String), #[error("版本冲突: 数据已被其他操作修改,请刷新后重试")] VersionMismatch, } impl From> for WorkflowError { fn from(err: sea_orm::TransactionError) -> Self { match err { sea_orm::TransactionError::Connection(err) => { WorkflowError::Validation(err.to_string()) } sea_orm::TransactionError::Transaction(inner) => inner, } } } impl From for AppError { fn from(err: WorkflowError) -> Self { match err { WorkflowError::Validation(s) => AppError::Validation(s), WorkflowError::NotFound(s) => AppError::NotFound(s), WorkflowError::DuplicateDefinition(s) => AppError::Conflict(s), WorkflowError::InvalidDiagram(s) => AppError::Validation(s), WorkflowError::InvalidState(s) => AppError::Validation(s), WorkflowError::ExpressionError(s) => AppError::Validation(s), WorkflowError::VersionMismatch => AppError::VersionMismatch, } } } pub type WorkflowResult = Result;