use serde::Serialize; use thiserror::Error; pub type AppResult = Result; #[derive(Debug, Error, Serialize, Clone, PartialEq, Eq)] #[serde(tag = "code", content = "message")] pub enum AppError { #[error("modelo offline não instalado: {0}")] ModelNotInstalled(String), #[error("sidecar CrispASR não configurado")] SidecarNotConfigured, #[error("gravação já está em andamento")] RecordingAlreadyActive, #[error("nenhuma gravação ativa")] NoActiveRecording, #[error("operação ainda não suportada neste ambiente: {0}")] Unsupported(String), #[error("erro de configuração: {0}")] Configuration(String), #[error("erro de E/S: {0}")] Io(String), #[error("erro de rede: {0}")] Network(String), #[error("modelo offline inválido: {0}")] InvalidModel(String), #[error("erro de áudio: {0}")] Audio(String), #[error("transcrição falhou: {0}")] Transcription(String), } impl From for String { fn from(value: AppError) -> Self { value.to_string() } }