调整部分前端布局和后端增删改逻辑
This commit is contained in:
@@ -0,0 +1,75 @@
|
||||
from dataclasses import dataclass
|
||||
from typing import Literal
|
||||
|
||||
from cli.guards import DEFAULT_DANGEROUS_COMMAND_RULE_REGISTRY, DangerousCommandRuleRegistry
|
||||
|
||||
CommandRiskLevel = Literal['readonly', 'normal', 'high']
|
||||
|
||||
|
||||
@dataclass(frozen=True)
|
||||
class CommandRiskSpec:
|
||||
"""
|
||||
CLI 命令风险元数据定义。
|
||||
|
||||
:param command_name: 命令唯一标识
|
||||
:param risk_level: 风险级别
|
||||
:param supports_dry_run: 是否支持演练执行
|
||||
"""
|
||||
|
||||
command_name: str
|
||||
risk_level: CommandRiskLevel
|
||||
supports_dry_run: bool
|
||||
|
||||
|
||||
@dataclass(frozen=True)
|
||||
class CommandRiskSpecRegistry:
|
||||
"""
|
||||
CLI 命令风险元数据注册表。
|
||||
|
||||
该注册表负责从危险命令规则注册表派生风险元数据,供 TUI、文档、
|
||||
诊断提示等只读场景统一查询。
|
||||
|
||||
:param specs: 按命令名索引的风险元数据表
|
||||
"""
|
||||
|
||||
specs: dict[str, CommandRiskSpec]
|
||||
|
||||
def get_spec(self, command_name: str) -> CommandRiskSpec | None:
|
||||
"""
|
||||
获取指定命令的风险元数据。
|
||||
|
||||
:param command_name: 命令唯一标识
|
||||
:return: 风险元数据,不存在时返回 None
|
||||
"""
|
||||
return self.specs.get(command_name)
|
||||
|
||||
|
||||
class CommandRiskSpecRegistryBuilder:
|
||||
"""
|
||||
CLI 命令风险元数据注册表构建器。
|
||||
|
||||
该构建器负责基于危险命令规则注册表生成命令风险元数据注册表,
|
||||
避免模块导入阶段散落重复的字典推导逻辑。
|
||||
"""
|
||||
|
||||
@staticmethod
|
||||
def build(rule_registry: DangerousCommandRuleRegistry) -> CommandRiskSpecRegistry:
|
||||
"""
|
||||
基于危险命令规则注册表构建风险元数据注册表。
|
||||
|
||||
:param rule_registry: 危险命令规则注册表
|
||||
:return: 风险元数据注册表
|
||||
"""
|
||||
return CommandRiskSpecRegistry(
|
||||
specs={
|
||||
command_name: CommandRiskSpec(
|
||||
command_name=rule.command_name,
|
||||
risk_level=rule.risk_level,
|
||||
supports_dry_run=rule.supports_dry_run,
|
||||
)
|
||||
for command_name, rule in rule_registry.rules.items()
|
||||
}
|
||||
)
|
||||
|
||||
|
||||
COMMAND_RISK_SPEC_REGISTRY = CommandRiskSpecRegistryBuilder.build(DEFAULT_DANGEROUS_COMMAND_RULE_REGISTRY)
|
||||
Reference in New Issue
Block a user