use thiserror::Error;
#[derive(Error, Debug)]
pub enum PortraitError {
#[error("数据接入错误: {0}")]
IngestionError(String),
#[error("数据解析错误: {0}")]
ParseError(String),
#[error("数据库错误: {0}")]
DatabaseError(String),
#[error("ID映射错误: {0}")]
IdMappingError(String),
#[error("算法计算错误: {0}")]
AlgorithmError(String),
#[error("存储错误: {0}")]
StorageError(String),
#[error("配置错误: {0}")]
ConfigError(String),
#[error("FFI调用错误: {0}")]
FfiError(String),
#[error("数据加载错误: {0}")]
DataLoadError(String),
#[error("标签计算错误: {0}")]
LabelError(String),
#[error("模型相关错误: {0}")]
ModelError(String),
#[error("特征工程错误: {0}")]
FeatureError(String),
#[error("IO 错误: {0}")]
IoError(#[from] std::io::Error),
#[error("外部库错误: {0}")]
ExternalError(String),
#[error("未知错误: {0}")]
Unknown(String),
}
pub type Result<T> = std::result::Result<T, PortraitError>;