初始提交

This commit is contained in:
焦龙言
2026-07-24 09:43:10 +08:00
commit b5b4721456
793 changed files with 116305 additions and 0 deletions
@@ -0,0 +1,103 @@
from dataclasses import dataclass
from cli.tui.actions.builders import TuiActionSpecFactory
from cli.tui.actions.factories.cache import CacheActionTemplateFactory
from cli.tui.actions.factories.gen import GenActionTemplateFactory
from cli.tui.actions.factories.jobs import JobActionTemplateFactory
from cli.tui.actions.factories.static import StaticActionTemplateFactory
from cli.tui.actions.registry import TuiActionRegistry, TuiActionSlotResolver
@dataclass(frozen=True)
class TuiActionRegistryBuilder:
"""
TUI 动作注册表构建器。
该对象负责装配各领域动作模板工厂,最终输出浏览页和详情页共用的
动作注册表,避免模板常量继续散落在模块底部。
:param jobs: 任务页动作模板工厂
:param cache: 缓存页动作模板工厂
:param gen: 代码生成页动作模板工厂
:param static: 静态页面动作模板工厂
:param spec_factory: 动作规格构建器
"""
jobs: JobActionTemplateFactory
cache: CacheActionTemplateFactory
gen: GenActionTemplateFactory
static: StaticActionTemplateFactory
spec_factory: TuiActionSpecFactory
def build(self) -> TuiActionRegistry:
"""
构建 TUI 动作注册表。
:return: 动作注册表
"""
return TuiActionRegistry(
browser_resolvers={
'jobs': TuiActionSlotResolver(
slot_templates={
'primary': self.jobs.create_run_once_template(),
'secondary': self.jobs.create_toggle_template(),
'global': self.jobs.create_sync_template(),
},
spec_factory=self.spec_factory,
),
'configs': TuiActionSlotResolver(
slot_templates={
'global': self.static.create_config_sync_template(),
},
spec_factory=self.spec_factory,
),
'cache': TuiActionSlotResolver(
slot_templates={
'global': self.cache.create_clear_wizard_template(),
'utility': self.cache.create_warmup_template(),
},
spec_factory=self.spec_factory,
),
'gen': TuiActionSlotResolver(
slot_templates={
'primary': self.gen.create_export_wizard_template(),
'secondary': self.gen.create_import_wizard_template(),
'global': self.gen.create_export_dry_run_template(),
'utility': self.gen.create_sync_db_template(),
},
spec_factory=self.spec_factory,
),
},
detail_resolvers={
'app': TuiActionSlotResolver(
slot_templates={
'primary': self.static.create_app_run_template(),
'global': self.static.create_app_run_wizard_template(),
'utility': self.static.create_completion_install_template(),
},
spec_factory=self.spec_factory,
),
'database': TuiActionSlotResolver(
slot_templates={
'global': self.static.create_db_upgrade_wizard_template(),
'utility': self.static.create_db_init_dry_run_template(),
},
spec_factory=self.spec_factory,
),
'ops': TuiActionSlotResolver(
slot_templates={
'primary': self.static.create_ops_ping_db_template(),
'secondary': self.static.create_ops_ping_redis_template(),
'global': self.static.create_prod_check_wizard_template(),
},
spec_factory=self.spec_factory,
),
'crypto': TuiActionSlotResolver(
slot_templates={
'primary': self.static.create_crypto_keygen_template(),
'global': self.static.create_crypto_rotate_dry_run_template(),
},
spec_factory=self.spec_factory,
),
},
)