mirror of
https://github.com/clash-verge-rev/clash-verge-rev.git
synced 2026-11-14 06:42:08 +08:00
refactor(backend): declarative effects (#8128)
* refactor(core): type notice statuses behind the frozen wire contract * refactor(utils): unified retry and strategy-list helpers * refactor(feat): declarative effect registry for verge and clash patches * refactor(core): derive refresh announcements from transaction commit * refactor(core): fold tray, hotkey, autostart updates into effect ensures * refactor(utils): migrate remaining bounded retry loops * docs: add src-tauri architecture guardrails * refactor(core): coalesce burst refresh announcements * refactor(core): complete bounded service retry migration * ci(backend): add architecture ban gates * test(feat): freeze representative effect registry mappings * docs(backend): record dead wire contract entries * chore(core): document watcher exit conditions * fix(backend): preserve applied state across later failures * fix(config): retain runtime after an applied core replacement * refactor(backend): flatten refresh publication and retry policies * docs(backend): focus guardrails on architecture ownership * refactor(effects): use one execution order * fix(config): publish retained runtime and reconcile proxy settings
This commit is contained in:
@@ -1,3 +1,4 @@
|
||||
use crate::core::notify::NoticeStatus;
|
||||
use crate::core::{
|
||||
handle,
|
||||
validate::{ValidationErrorKind, ValidationOutcome},
|
||||
@@ -11,27 +12,27 @@ pub enum ValidationNoticeTarget {
|
||||
Script,
|
||||
}
|
||||
|
||||
const fn notice_key(kind: ValidationErrorKind, target: ValidationNoticeTarget) -> &'static str {
|
||||
const fn notice_key(kind: ValidationErrorKind, target: ValidationNoticeTarget) -> NoticeStatus {
|
||||
match kind {
|
||||
ValidationErrorKind::FileMissing => "config_validate::file_not_found",
|
||||
ValidationErrorKind::FileMissing => NoticeStatus::ConfigValidateFileNotFound,
|
||||
ValidationErrorKind::FileRead => match target {
|
||||
ValidationNoticeTarget::Script => "config_validate::script_error",
|
||||
_ => "config_validate::yaml_read_error",
|
||||
ValidationNoticeTarget::Script => NoticeStatus::ConfigValidateScriptError,
|
||||
_ => NoticeStatus::ConfigValidateYamlReadError,
|
||||
},
|
||||
ValidationErrorKind::YamlSyntax => match target {
|
||||
ValidationNoticeTarget::Merge => "config_validate::merge_syntax_error",
|
||||
ValidationNoticeTarget::Script => "config_validate::script_error",
|
||||
ValidationNoticeTarget::Runtime => "config_validate::yaml_syntax_error",
|
||||
ValidationNoticeTarget::Merge => NoticeStatus::ConfigValidateMergeSyntaxError,
|
||||
ValidationNoticeTarget::Script => NoticeStatus::ConfigValidateScriptError,
|
||||
ValidationNoticeTarget::Runtime => NoticeStatus::ConfigValidateYamlSyntaxError,
|
||||
},
|
||||
ValidationErrorKind::YamlMapping => match target {
|
||||
ValidationNoticeTarget::Merge => "config_validate::merge_mapping_error",
|
||||
ValidationNoticeTarget::Script => "config_validate::script_error",
|
||||
ValidationNoticeTarget::Runtime => "config_validate::yaml_mapping_error",
|
||||
ValidationNoticeTarget::Merge => NoticeStatus::ConfigValidateMergeMappingError,
|
||||
ValidationNoticeTarget::Script => NoticeStatus::ConfigValidateScriptError,
|
||||
ValidationNoticeTarget::Runtime => NoticeStatus::ConfigValidateYamlMappingError,
|
||||
},
|
||||
ValidationErrorKind::ScriptSyntax => "config_validate::script_syntax_error",
|
||||
ValidationErrorKind::ScriptMissingMain => "config_validate::script_missing_main",
|
||||
ValidationErrorKind::ProcessTerminated => "config_validate::process_terminated",
|
||||
ValidationErrorKind::CoreRejected | ValidationErrorKind::Timeout => "config_validate::error",
|
||||
ValidationErrorKind::ScriptSyntax => NoticeStatus::ConfigValidateScriptSyntaxError,
|
||||
ValidationErrorKind::ScriptMissingMain => NoticeStatus::ConfigValidateScriptMissingMain,
|
||||
ValidationErrorKind::ProcessTerminated => NoticeStatus::ConfigValidateProcessTerminated,
|
||||
ValidationErrorKind::CoreRejected | ValidationErrorKind::Timeout => NoticeStatus::ConfigValidateError,
|
||||
}
|
||||
}
|
||||
|
||||
@@ -40,12 +41,12 @@ pub fn handle_validation_notice(outcome: &ValidationOutcome, target: ValidationN
|
||||
ValidationOutcome::Invalid { kind, message } => {
|
||||
let status = notice_key(*kind, target);
|
||||
logging!(warn, Type::Config, "{} 验证失败: {}", file_type, message);
|
||||
handle::Handle::notice_message(status, message.to_owned());
|
||||
handle::Handle::notice(status, message.as_str());
|
||||
}
|
||||
ValidationOutcome::Busy | ValidationOutcome::Skipped { .. } => {
|
||||
let message = outcome.to_string();
|
||||
logging!(warn, Type::Config, "{} 验证跳过: {}", file_type, message);
|
||||
handle::Handle::notice_message("config_validate::error", message);
|
||||
handle::Handle::notice(NoticeStatus::ConfigValidateError, message.as_str());
|
||||
}
|
||||
ValidationOutcome::Valid => {}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user