调整部分前端布局和后端增删改逻辑
This commit is contained in:
@@ -0,0 +1,83 @@
|
||||
from dataclasses import dataclass
|
||||
|
||||
from cli.tui.actions.builders import TuiActionTemplate, TuiActionTemplateSupport
|
||||
from cli.tui.adapters.models import BrowserRecordSnapshot
|
||||
from cli.tui.copy import TUI_COPY
|
||||
|
||||
|
||||
@dataclass(frozen=True)
|
||||
class CacheActionTemplateFactory:
|
||||
"""
|
||||
缓存页动作模板工厂。
|
||||
|
||||
该对象负责生成缓存浏览页相关动作模板,统一缓存清理向导和预热动作
|
||||
的命令与预览摘要构建。
|
||||
|
||||
:param support: 动作模板共享构建支持
|
||||
"""
|
||||
|
||||
support: TuiActionTemplateSupport
|
||||
|
||||
def build_clear_command(self, record: BrowserRecordSnapshot | None, env: str) -> tuple[str, ...]:
|
||||
"""
|
||||
构建缓存清理向导命令参数。
|
||||
|
||||
:param record: 当前记录
|
||||
:param env: 当前运行环境
|
||||
:return: 命令参数
|
||||
"""
|
||||
cache_name = record.title if record is not None else ''
|
||||
return (
|
||||
'wizard',
|
||||
'cache-clear',
|
||||
'--output=text',
|
||||
f'--default-env={env}',
|
||||
'--default-mode=cache-name',
|
||||
f'--default-cache-name={cache_name}',
|
||||
'--default-dry-run',
|
||||
)
|
||||
|
||||
def build_clear_summary(self, record: BrowserRecordSnapshot | None, env: str) -> list[str]:
|
||||
"""
|
||||
构建缓存清理向导摘要。
|
||||
|
||||
:param record: 当前记录
|
||||
:param env: 当前运行环境
|
||||
:return: 预览摘要
|
||||
"""
|
||||
del record, env
|
||||
return self.support.build_scope_purpose_summary(
|
||||
'当前环境缓存清理流程',
|
||||
'进入向导后确认缓存名、键前缀和 dry-run 范围',
|
||||
)
|
||||
|
||||
def create_warmup_template(self) -> TuiActionTemplate:
|
||||
"""
|
||||
创建缓存预热动作模板。
|
||||
|
||||
:return: 动作模板
|
||||
"""
|
||||
return TuiActionTemplate(
|
||||
action_id='cache-warmup',
|
||||
label=TUI_COPY.build_action_label('cache_warmup'),
|
||||
command_builder=lambda record, env: ('cache', 'warmup'),
|
||||
summary_builder=lambda record, env: self.support.build_scope_purpose_summary(
|
||||
TUI_COPY.build_action_scope_label('cache_warmup'),
|
||||
TUI_COPY.build_action_purpose_label('cache_warmup'),
|
||||
),
|
||||
)
|
||||
|
||||
def create_clear_wizard_template(self) -> TuiActionTemplate:
|
||||
"""
|
||||
创建缓存清理向导动作模板。
|
||||
|
||||
:return: 动作模板
|
||||
"""
|
||||
return TuiActionTemplate(
|
||||
action_id='wizard-cache-clear',
|
||||
label=TUI_COPY.build_action_label('cache_clear_wizard'),
|
||||
command_builder=self.build_clear_command,
|
||||
summary_builder=self.build_clear_summary,
|
||||
execution_mode='external',
|
||||
consequence_text=TUI_COPY.build_action_consequence_text('wizard'),
|
||||
)
|
||||
@@ -0,0 +1,254 @@
|
||||
from dataclasses import dataclass
|
||||
|
||||
from cli.tui.actions.builders import TuiActionTemplate, TuiActionTemplateSupport
|
||||
from cli.tui.adapters.models import BrowserRecordSnapshot
|
||||
from cli.tui.copy import TUI_COPY
|
||||
|
||||
|
||||
@dataclass(frozen=True)
|
||||
class GenActionTemplateFactory:
|
||||
"""
|
||||
代码生成页动作模板工厂。
|
||||
|
||||
该对象负责生成代码生成浏览页相关动作模板,统一记录标题提取、
|
||||
导出导入向导和表结构同步动作的构建逻辑。
|
||||
|
||||
:param support: 动作模板共享构建支持
|
||||
"""
|
||||
|
||||
support: TuiActionTemplateSupport
|
||||
|
||||
def build_export_wizard_command(self, record: BrowserRecordSnapshot | None, env: str) -> tuple[str, ...] | None:
|
||||
"""
|
||||
构建代码生成导出向导命令参数。
|
||||
|
||||
:param record: 当前记录
|
||||
:param env: 当前运行环境
|
||||
:return: 命令参数
|
||||
"""
|
||||
table_name = self.support.require_record_title(record)
|
||||
if table_name is None:
|
||||
return None
|
||||
return (
|
||||
'wizard',
|
||||
'gen-export',
|
||||
'--output=text',
|
||||
f'--default-env={env}',
|
||||
f'--default-table-names={table_name}',
|
||||
'--default-mode=zip',
|
||||
'--default-dry-run',
|
||||
)
|
||||
|
||||
def build_import_wizard_command(self, record: BrowserRecordSnapshot | None, env: str) -> tuple[str, ...] | None:
|
||||
"""
|
||||
构建代码生成导入向导命令参数。
|
||||
|
||||
:param record: 当前记录
|
||||
:param env: 当前运行环境
|
||||
:return: 命令参数
|
||||
"""
|
||||
table_name = self.support.require_record_title(record)
|
||||
if table_name is None:
|
||||
return None
|
||||
return (
|
||||
'wizard',
|
||||
'gen-import',
|
||||
'--output=text',
|
||||
f'--default-env={env}',
|
||||
f'--default-table-names={table_name}',
|
||||
'--default-dry-run',
|
||||
)
|
||||
|
||||
def build_export_dry_run_command(self, record: BrowserRecordSnapshot | None, env: str) -> tuple[str, ...] | None:
|
||||
"""
|
||||
构建代码生成导出 dry-run 命令参数。
|
||||
|
||||
:param record: 当前记录
|
||||
:param env: 当前运行环境
|
||||
:return: 命令参数
|
||||
"""
|
||||
del env
|
||||
table_name = self.support.require_record_title(record)
|
||||
if table_name is None:
|
||||
return None
|
||||
return ('gen', 'export', table_name, '--dry-run', '--mode=zip')
|
||||
|
||||
def build_sync_db_command(self, record: BrowserRecordSnapshot | None, env: str) -> tuple[str, ...] | None:
|
||||
"""
|
||||
构建代码生成表结构同步命令参数。
|
||||
|
||||
:param record: 当前记录
|
||||
:param env: 当前运行环境
|
||||
:return: 命令参数
|
||||
"""
|
||||
del env
|
||||
table_name = self.support.require_record_title(record)
|
||||
if table_name is None:
|
||||
return None
|
||||
return ('gen', 'sync-db', table_name)
|
||||
|
||||
@staticmethod
|
||||
def build_export_wizard_summary(record: BrowserRecordSnapshot | None, env: str) -> list[str]:
|
||||
"""
|
||||
构建代码生成导出向导摘要。
|
||||
|
||||
:param record: 当前记录
|
||||
:param env: 当前运行环境
|
||||
:return: 预览摘要
|
||||
"""
|
||||
del env
|
||||
if record is None:
|
||||
return []
|
||||
return [
|
||||
TUI_COPY.build_labeled_value_line(
|
||||
TUI_COPY.build_action_preview_field_label('scope'), f'当前业务表 {record.title}'
|
||||
),
|
||||
TUI_COPY.build_labeled_value_line(
|
||||
TUI_COPY.build_action_preview_field_label('current_status'),
|
||||
record.summary,
|
||||
),
|
||||
TUI_COPY.build_labeled_value_line(
|
||||
TUI_COPY.build_action_preview_field_label('purpose'),
|
||||
'进入向导后选择业务表、输出目录和覆盖策略',
|
||||
),
|
||||
]
|
||||
|
||||
@staticmethod
|
||||
def build_import_wizard_summary(record: BrowserRecordSnapshot | None, env: str) -> list[str]:
|
||||
"""
|
||||
构建代码生成导入向导摘要。
|
||||
|
||||
:param record: 当前记录
|
||||
:param env: 当前运行环境
|
||||
:return: 预览摘要
|
||||
"""
|
||||
del env
|
||||
if record is None:
|
||||
return []
|
||||
return [
|
||||
TUI_COPY.build_labeled_value_line(
|
||||
TUI_COPY.build_action_preview_field_label('scope'), f'当前物理表 {record.title}'
|
||||
),
|
||||
TUI_COPY.build_labeled_value_line(
|
||||
TUI_COPY.build_action_preview_field_label('current_status'),
|
||||
record.summary,
|
||||
),
|
||||
TUI_COPY.build_labeled_value_line(
|
||||
TUI_COPY.build_action_preview_field_label('purpose'),
|
||||
'进入向导后确认物理表列表,并先执行 dry-run 导入预演',
|
||||
),
|
||||
]
|
||||
|
||||
@staticmethod
|
||||
def build_export_dry_run_summary(record: BrowserRecordSnapshot | None, env: str) -> list[str]:
|
||||
"""
|
||||
构建代码生成导出预演摘要。
|
||||
|
||||
:param record: 当前记录
|
||||
:param env: 当前运行环境
|
||||
:return: 预览摘要
|
||||
"""
|
||||
del env
|
||||
if record is None:
|
||||
return []
|
||||
return [
|
||||
TUI_COPY.build_labeled_value_line(
|
||||
TUI_COPY.build_action_preview_field_label('scope'),
|
||||
TUI_COPY.build_action_scope_label('gen_export_dry_run'),
|
||||
),
|
||||
TUI_COPY.build_labeled_value_line(TUI_COPY.build_action_preview_field_label('job'), record.title),
|
||||
TUI_COPY.build_labeled_value_line(
|
||||
TUI_COPY.build_action_preview_field_label('current_status'),
|
||||
record.summary,
|
||||
),
|
||||
TUI_COPY.build_labeled_value_line(
|
||||
TUI_COPY.build_action_preview_field_label('purpose'),
|
||||
TUI_COPY.build_action_purpose_label('gen_export_dry_run'),
|
||||
),
|
||||
]
|
||||
|
||||
@staticmethod
|
||||
def build_sync_db_summary(record: BrowserRecordSnapshot | None, env: str) -> list[str]:
|
||||
"""
|
||||
构建代码生成表结构同步摘要。
|
||||
|
||||
:param record: 当前记录
|
||||
:param env: 当前运行环境
|
||||
:return: 预览摘要
|
||||
"""
|
||||
del env
|
||||
if record is None:
|
||||
return []
|
||||
return [
|
||||
TUI_COPY.build_labeled_value_line(
|
||||
TUI_COPY.build_action_preview_field_label('scope'),
|
||||
TUI_COPY.build_action_scope_label('gen_sync_db'),
|
||||
),
|
||||
TUI_COPY.build_labeled_value_line(TUI_COPY.build_action_preview_field_label('job'), record.title),
|
||||
TUI_COPY.build_labeled_value_line(
|
||||
TUI_COPY.build_action_preview_field_label('current_status'),
|
||||
record.summary,
|
||||
),
|
||||
TUI_COPY.build_labeled_value_line(
|
||||
TUI_COPY.build_action_preview_field_label('purpose'),
|
||||
TUI_COPY.build_action_purpose_label('gen_sync_db'),
|
||||
),
|
||||
]
|
||||
|
||||
def create_export_wizard_template(self) -> TuiActionTemplate:
|
||||
"""
|
||||
创建代码生成导出向导动作模板。
|
||||
|
||||
:return: 动作模板
|
||||
"""
|
||||
return TuiActionTemplate(
|
||||
action_id='wizard-gen-export',
|
||||
label=TUI_COPY.build_action_label('gen_export_wizard'),
|
||||
command_builder=self.build_export_wizard_command,
|
||||
summary_builder=self.build_export_wizard_summary,
|
||||
execution_mode='external',
|
||||
consequence_text=TUI_COPY.build_action_consequence_text('wizard'),
|
||||
refresh_view=False,
|
||||
)
|
||||
|
||||
def create_import_wizard_template(self) -> TuiActionTemplate:
|
||||
"""
|
||||
创建代码生成导入向导动作模板。
|
||||
|
||||
:return: 动作模板
|
||||
"""
|
||||
return TuiActionTemplate(
|
||||
action_id='wizard-gen-import',
|
||||
label=TUI_COPY.build_action_label('gen_import_wizard'),
|
||||
command_builder=self.build_import_wizard_command,
|
||||
summary_builder=self.build_import_wizard_summary,
|
||||
execution_mode='external',
|
||||
consequence_text=TUI_COPY.build_action_consequence_text('wizard'),
|
||||
refresh_view=False,
|
||||
)
|
||||
|
||||
def create_export_dry_run_template(self) -> TuiActionTemplate:
|
||||
"""
|
||||
创建代码生成导出预演动作模板。
|
||||
|
||||
:return: 动作模板
|
||||
"""
|
||||
return TuiActionTemplate(
|
||||
action_id='gen-export-dry-run',
|
||||
label=TUI_COPY.build_action_label('gen_export_dry_run'),
|
||||
command_builder=self.build_export_dry_run_command,
|
||||
summary_builder=self.build_export_dry_run_summary,
|
||||
)
|
||||
|
||||
def create_sync_db_template(self) -> TuiActionTemplate:
|
||||
"""
|
||||
创建代码生成表结构同步动作模板。
|
||||
|
||||
:return: 动作模板
|
||||
"""
|
||||
return TuiActionTemplate(
|
||||
action_id='gen-sync-db',
|
||||
label=TUI_COPY.build_action_label('gen_sync_db'),
|
||||
command_builder=self.build_sync_db_command,
|
||||
summary_builder=self.build_sync_db_summary,
|
||||
)
|
||||
@@ -0,0 +1,171 @@
|
||||
from dataclasses import dataclass
|
||||
|
||||
from cli.tui.actions.builders import TuiActionTemplate, TuiActionTemplateSupport
|
||||
from cli.tui.adapters.models import BrowserRecordSnapshot
|
||||
from cli.tui.copy import TUI_COPY
|
||||
|
||||
|
||||
@dataclass(frozen=True)
|
||||
class JobActionTemplateFactory:
|
||||
"""
|
||||
任务页动作模板工厂。
|
||||
|
||||
该对象负责生成任务浏览页相关动作模板,收口任务 ID 解析、
|
||||
暂停/恢复切换和摘要拼装逻辑。
|
||||
|
||||
:param support: 动作模板共享构建支持
|
||||
"""
|
||||
|
||||
support: TuiActionTemplateSupport
|
||||
|
||||
def build_run_once_command(self, record: BrowserRecordSnapshot | None, env: str) -> tuple[str, ...] | None:
|
||||
"""
|
||||
构建任务执行一次命令参数。
|
||||
|
||||
:param record: 当前记录
|
||||
:param env: 当前运行环境
|
||||
:return: 命令参数
|
||||
"""
|
||||
del env
|
||||
job_id = self.support.extract_job_id(record)
|
||||
if job_id is None:
|
||||
return None
|
||||
return ('job', 'run-once', job_id)
|
||||
|
||||
def build_run_once_summary(self, record: BrowserRecordSnapshot | None, env: str) -> list[str]:
|
||||
"""
|
||||
构建任务执行一次动作摘要。
|
||||
|
||||
:param record: 当前记录
|
||||
:param env: 当前运行环境
|
||||
:return: 预览摘要
|
||||
"""
|
||||
del env
|
||||
if record is None:
|
||||
return []
|
||||
job_id = self.support.extract_job_id(record) or ''
|
||||
return [
|
||||
TUI_COPY.build_labeled_value_line(TUI_COPY.build_action_preview_field_label('job'), record.title),
|
||||
TUI_COPY.build_labeled_value_line(TUI_COPY.build_action_preview_field_label('job_id'), job_id),
|
||||
TUI_COPY.build_labeled_value_line(
|
||||
TUI_COPY.build_action_preview_field_label('current_status'),
|
||||
record.summary,
|
||||
),
|
||||
]
|
||||
|
||||
def build_toggle_command(self, record: BrowserRecordSnapshot | None, env: str) -> tuple[str, ...] | None:
|
||||
"""
|
||||
构建任务暂停或恢复命令参数。
|
||||
|
||||
:param record: 当前记录
|
||||
:param env: 当前运行环境
|
||||
:return: 命令参数
|
||||
"""
|
||||
del env
|
||||
if record is None:
|
||||
return None
|
||||
job_id = self.support.extract_job_id(record)
|
||||
if job_id is None:
|
||||
return None
|
||||
if record.status == 'warn':
|
||||
return ('job', 'resume', job_id)
|
||||
return ('job', 'pause', job_id)
|
||||
|
||||
def build_toggle_summary(self, record: BrowserRecordSnapshot | None, env: str) -> list[str]:
|
||||
"""
|
||||
构建任务暂停或恢复动作摘要。
|
||||
|
||||
:param record: 当前记录
|
||||
:param env: 当前运行环境
|
||||
:return: 预览摘要
|
||||
"""
|
||||
del env
|
||||
if record is None:
|
||||
return []
|
||||
job_id = self.support.extract_job_id(record) or ''
|
||||
label = (
|
||||
TUI_COPY.build_action_label('job_resume')
|
||||
if record.status == 'warn'
|
||||
else TUI_COPY.build_action_label('job_pause')
|
||||
)
|
||||
return [
|
||||
TUI_COPY.build_labeled_value_line(TUI_COPY.build_action_preview_field_label('job'), record.title),
|
||||
TUI_COPY.build_labeled_value_line(TUI_COPY.build_action_preview_field_label('job_id'), job_id),
|
||||
TUI_COPY.build_labeled_value_line(
|
||||
TUI_COPY.build_action_preview_field_label('current_status'),
|
||||
record.summary,
|
||||
),
|
||||
TUI_COPY.build_labeled_value_line(TUI_COPY.build_action_preview_field_label('target_action'), label),
|
||||
]
|
||||
|
||||
@staticmethod
|
||||
def build_toggle_action_id(record: BrowserRecordSnapshot | None, env: str) -> str:
|
||||
"""
|
||||
构建任务暂停或恢复动作标识。
|
||||
|
||||
:param record: 当前记录
|
||||
:param env: 当前运行环境
|
||||
:return: 动作标识
|
||||
"""
|
||||
del env
|
||||
if record is not None and record.status == 'warn':
|
||||
return 'job-resume'
|
||||
return 'job-pause'
|
||||
|
||||
@staticmethod
|
||||
def build_toggle_label(record: BrowserRecordSnapshot | None, env: str) -> str:
|
||||
"""
|
||||
构建任务暂停或恢复动作标题。
|
||||
|
||||
:param record: 当前记录
|
||||
:param env: 当前运行环境
|
||||
:return: 动作标题
|
||||
"""
|
||||
del env
|
||||
if record is not None and record.status == 'warn':
|
||||
return TUI_COPY.build_action_label('job_resume')
|
||||
return TUI_COPY.build_action_label('job_pause')
|
||||
|
||||
def create_run_once_template(self) -> TuiActionTemplate:
|
||||
"""
|
||||
创建任务执行一次动作模板。
|
||||
|
||||
:return: 动作模板
|
||||
"""
|
||||
return TuiActionTemplate(
|
||||
action_id='job-run-once',
|
||||
label=TUI_COPY.build_action_label('job_run_once'),
|
||||
command_builder=self.build_run_once_command,
|
||||
summary_builder=self.build_run_once_summary,
|
||||
)
|
||||
|
||||
def create_toggle_template(self) -> TuiActionTemplate:
|
||||
"""
|
||||
创建任务暂停或恢复动作模板。
|
||||
|
||||
:return: 动作模板
|
||||
"""
|
||||
return TuiActionTemplate(
|
||||
action_id='job-toggle',
|
||||
label=TUI_COPY.build_action_label('job_pause'),
|
||||
command_builder=self.build_toggle_command,
|
||||
summary_builder=self.build_toggle_summary,
|
||||
action_id_builder=self.build_toggle_action_id,
|
||||
label_builder=self.build_toggle_label,
|
||||
)
|
||||
|
||||
def create_sync_template(self) -> TuiActionTemplate:
|
||||
"""
|
||||
创建任务同步动作模板。
|
||||
|
||||
:return: 动作模板
|
||||
"""
|
||||
return TuiActionTemplate(
|
||||
action_id='job-sync',
|
||||
label=TUI_COPY.build_action_label('job_sync'),
|
||||
command_builder=lambda record, env: ('job', 'sync'),
|
||||
summary_builder=lambda record, env: self.support.build_scope_purpose_summary(
|
||||
TUI_COPY.build_action_scope_label('job_sync'),
|
||||
TUI_COPY.build_action_purpose_label('job_sync'),
|
||||
),
|
||||
)
|
||||
@@ -0,0 +1,385 @@
|
||||
from dataclasses import dataclass
|
||||
|
||||
from cli.tui.actions.builders import TuiActionTemplate, TuiActionTemplateSupport
|
||||
from cli.tui.adapters.models import BrowserRecordSnapshot
|
||||
from cli.tui.copy import TUI_COPY
|
||||
|
||||
|
||||
@dataclass(frozen=True)
|
||||
class StaticActionTemplateFactory:
|
||||
"""
|
||||
静态页面动作模板工厂。
|
||||
|
||||
该对象负责生成不依赖当前记录内容的页面动作模板,统一详情页和
|
||||
部分浏览页的固定动作定义。
|
||||
|
||||
:param support: 动作模板共享构建支持
|
||||
"""
|
||||
|
||||
support: TuiActionTemplateSupport
|
||||
|
||||
@staticmethod
|
||||
def build_job_sync_command(record: BrowserRecordSnapshot | None, env: str) -> tuple[str, ...]:
|
||||
"""
|
||||
构建任务同步命令参数。
|
||||
|
||||
:param record: 当前记录
|
||||
:param env: 当前运行环境
|
||||
:return: 命令参数
|
||||
"""
|
||||
del record, env
|
||||
return ('job', 'sync')
|
||||
|
||||
@staticmethod
|
||||
def build_config_sync_command(record: BrowserRecordSnapshot | None, env: str) -> tuple[str, ...]:
|
||||
"""
|
||||
构建配置同步命令参数。
|
||||
|
||||
:param record: 当前记录
|
||||
:param env: 当前运行环境
|
||||
:return: 命令参数
|
||||
"""
|
||||
del record, env
|
||||
return ('config', 'sync-cache')
|
||||
|
||||
@staticmethod
|
||||
def build_cache_warmup_command(record: BrowserRecordSnapshot | None, env: str) -> tuple[str, ...]:
|
||||
"""
|
||||
构建缓存预热命令参数。
|
||||
|
||||
:param record: 当前记录
|
||||
:param env: 当前运行环境
|
||||
:return: 命令参数
|
||||
"""
|
||||
del record, env
|
||||
return ('cache', 'warmup')
|
||||
|
||||
@staticmethod
|
||||
def build_db_upgrade_wizard_command(record: BrowserRecordSnapshot | None, env: str) -> tuple[str, ...]:
|
||||
"""
|
||||
构建数据库升级向导命令参数。
|
||||
|
||||
:param record: 当前记录
|
||||
:param env: 当前运行环境
|
||||
:return: 命令参数
|
||||
"""
|
||||
del record
|
||||
return (
|
||||
'wizard',
|
||||
'db-upgrade',
|
||||
'--output=text',
|
||||
f'--default-env={env}',
|
||||
'--default-revision=head',
|
||||
'--default-dry-run',
|
||||
)
|
||||
|
||||
@staticmethod
|
||||
def build_db_init_dry_run_command(record: BrowserRecordSnapshot | None, env: str) -> tuple[str, ...]:
|
||||
"""
|
||||
构建数据库初始化预演命令参数。
|
||||
|
||||
:param record: 当前记录
|
||||
:param env: 当前运行环境
|
||||
:return: 命令参数
|
||||
"""
|
||||
del record, env
|
||||
return ('db', 'init', '--dry-run')
|
||||
|
||||
@staticmethod
|
||||
def build_app_run_wizard_command(record: BrowserRecordSnapshot | None, env: str) -> tuple[str, ...]:
|
||||
"""
|
||||
构建应用启动向导命令参数。
|
||||
|
||||
:param record: 当前记录
|
||||
:param env: 当前运行环境
|
||||
:return: 命令参数
|
||||
"""
|
||||
del record, env
|
||||
return ('wizard', 'app-run')
|
||||
|
||||
@staticmethod
|
||||
def build_completion_install_command(record: BrowserRecordSnapshot | None, env: str) -> tuple[str, ...]:
|
||||
"""
|
||||
构建补全安装命令参数。
|
||||
|
||||
:param record: 当前记录
|
||||
:param env: 当前运行环境
|
||||
:return: 命令参数
|
||||
"""
|
||||
del record, env
|
||||
return ('completion', 'install', '--activate')
|
||||
|
||||
@staticmethod
|
||||
def build_prod_check_wizard_command(record: BrowserRecordSnapshot | None, env: str) -> tuple[str, ...]:
|
||||
"""
|
||||
构建生产巡检向导命令参数。
|
||||
|
||||
:param record: 当前记录
|
||||
:param env: 当前运行环境
|
||||
:return: 命令参数
|
||||
"""
|
||||
del record
|
||||
return (
|
||||
'wizard',
|
||||
'prod-check',
|
||||
'--output=text',
|
||||
f'--default-env={env}',
|
||||
'--default-include-config',
|
||||
)
|
||||
|
||||
@staticmethod
|
||||
def build_crypto_rotate_dry_run_command(record: BrowserRecordSnapshot | None, env: str) -> tuple[str, ...]:
|
||||
"""
|
||||
构建加密轮换预演命令参数。
|
||||
|
||||
:param record: 当前记录
|
||||
:param env: 当前运行环境
|
||||
:return: 命令参数
|
||||
"""
|
||||
del record, env
|
||||
return ('crypto', 'rotate', '--dry-run')
|
||||
|
||||
@staticmethod
|
||||
def build_app_run_command(record: BrowserRecordSnapshot | None, env: str) -> tuple[str, ...]:
|
||||
"""
|
||||
构建应用直接启动命令参数。
|
||||
|
||||
:param record: 当前记录
|
||||
:param env: 当前运行环境
|
||||
:return: 命令参数
|
||||
"""
|
||||
del record
|
||||
return ('app', 'run', f'--env={env}')
|
||||
|
||||
@staticmethod
|
||||
def build_crypto_keygen_command(record: BrowserRecordSnapshot | None, env: str) -> tuple[str, ...]:
|
||||
"""
|
||||
构建加密密钥生成命令参数。
|
||||
|
||||
:param record: 当前记录
|
||||
:param env: 当前运行环境
|
||||
:return: 命令参数
|
||||
"""
|
||||
del record
|
||||
return ('crypto', 'keygen', f'--env={env}', '--output=text')
|
||||
|
||||
@staticmethod
|
||||
def build_ops_ping_db_command(record: BrowserRecordSnapshot | None, env: str) -> tuple[str, ...]:
|
||||
"""
|
||||
构建数据库探活命令参数。
|
||||
|
||||
:param record: 当前记录
|
||||
:param env: 当前运行环境
|
||||
:return: 命令参数
|
||||
"""
|
||||
del record, env
|
||||
return ('ops', 'ping-db')
|
||||
|
||||
@staticmethod
|
||||
def build_ops_ping_redis_command(record: BrowserRecordSnapshot | None, env: str) -> tuple[str, ...]:
|
||||
"""
|
||||
构建 Redis 探活命令参数。
|
||||
|
||||
:param record: 当前记录
|
||||
:param env: 当前运行环境
|
||||
:return: 命令参数
|
||||
"""
|
||||
del record, env
|
||||
return ('ops', 'ping-redis')
|
||||
|
||||
def create_config_sync_template(self) -> TuiActionTemplate:
|
||||
"""
|
||||
创建配置同步动作模板。
|
||||
|
||||
:return: 动作模板
|
||||
"""
|
||||
return TuiActionTemplate(
|
||||
action_id='config-sync-cache',
|
||||
label=TUI_COPY.build_action_label('config_sync'),
|
||||
command_builder=self.build_config_sync_command,
|
||||
summary_builder=lambda record, env: self.support.build_scope_purpose_summary(
|
||||
TUI_COPY.build_action_scope_label('config_sync'),
|
||||
TUI_COPY.build_action_purpose_label('config_sync'),
|
||||
),
|
||||
)
|
||||
|
||||
def create_db_upgrade_wizard_template(self) -> TuiActionTemplate:
|
||||
"""
|
||||
创建数据库升级向导动作模板。
|
||||
|
||||
:return: 动作模板
|
||||
"""
|
||||
return TuiActionTemplate(
|
||||
action_id='wizard-db-upgrade',
|
||||
label=TUI_COPY.build_action_label('db_upgrade_wizard'),
|
||||
command_builder=self.build_db_upgrade_wizard_command,
|
||||
summary_builder=lambda record, env: self.support.build_scope_purpose_summary(
|
||||
'当前环境数据库升级流程',
|
||||
'进入向导后确认目标 revision、环境和 dry-run 预演',
|
||||
),
|
||||
execution_mode='external',
|
||||
consequence_text=TUI_COPY.build_action_consequence_text('wizard'),
|
||||
)
|
||||
|
||||
def create_db_init_dry_run_template(self) -> TuiActionTemplate:
|
||||
"""
|
||||
创建数据库初始化预演动作模板。
|
||||
|
||||
:return: 动作模板
|
||||
"""
|
||||
return TuiActionTemplate(
|
||||
action_id='db-init-dry-run',
|
||||
label=TUI_COPY.build_action_label('db_init_dry_run'),
|
||||
command_builder=self.build_db_init_dry_run_command,
|
||||
summary_builder=lambda record, env: self.support.build_scope_purpose_summary(
|
||||
TUI_COPY.build_action_scope_label('db_init_dry_run'),
|
||||
TUI_COPY.build_action_purpose_label('db_init_dry_run'),
|
||||
),
|
||||
append_yes=False,
|
||||
)
|
||||
|
||||
def create_app_run_wizard_template(self) -> TuiActionTemplate:
|
||||
"""
|
||||
创建应用启动向导动作模板。
|
||||
|
||||
:return: 动作模板
|
||||
"""
|
||||
return TuiActionTemplate(
|
||||
action_id='wizard-app-run',
|
||||
label=TUI_COPY.build_action_label('app_run_wizard'),
|
||||
command_builder=self.build_app_run_wizard_command,
|
||||
summary_builder=lambda record, env: self.support.build_scope_purpose_summary(
|
||||
'当前环境应用启动流程',
|
||||
'进入向导后确认环境,并决定是否先执行启动前检查',
|
||||
),
|
||||
execution_mode='external',
|
||||
consequence_text=TUI_COPY.build_action_consequence_text('wizard'),
|
||||
refresh_view=False,
|
||||
)
|
||||
|
||||
def create_completion_install_template(self) -> TuiActionTemplate:
|
||||
"""
|
||||
创建补全安装动作模板。
|
||||
|
||||
:return: 动作模板
|
||||
"""
|
||||
return TuiActionTemplate(
|
||||
action_id='completion-install',
|
||||
label=TUI_COPY.build_action_label('completion_install'),
|
||||
command_builder=self.build_completion_install_command,
|
||||
summary_builder=lambda record, env: self.support.build_scope_purpose_summary(
|
||||
TUI_COPY.build_action_scope_label('completion_install'),
|
||||
TUI_COPY.build_action_purpose_label('completion_install'),
|
||||
),
|
||||
execution_mode='external',
|
||||
consequence_text=TUI_COPY.build_action_consequence_text('external'),
|
||||
refresh_view=False,
|
||||
preview_env_override='-',
|
||||
)
|
||||
|
||||
def create_prod_check_wizard_template(self) -> TuiActionTemplate:
|
||||
"""
|
||||
创建生产巡检向导动作模板。
|
||||
|
||||
:return: 动作模板
|
||||
"""
|
||||
return TuiActionTemplate(
|
||||
action_id='wizard-prod-check',
|
||||
label=TUI_COPY.build_action_label('prod_check_wizard'),
|
||||
command_builder=self.build_prod_check_wizard_command,
|
||||
summary_builder=lambda record, env: self.support.build_scope_purpose_summary(
|
||||
'当前环境生产巡检流程',
|
||||
'进入向导后统一检查数据库、缓存和运行配置',
|
||||
),
|
||||
execution_mode='external',
|
||||
consequence_text=TUI_COPY.build_action_consequence_text('wizard'),
|
||||
)
|
||||
|
||||
def create_crypto_rotate_dry_run_template(self) -> TuiActionTemplate:
|
||||
"""
|
||||
创建加密轮换预演动作模板。
|
||||
|
||||
:return: 动作模板
|
||||
"""
|
||||
return TuiActionTemplate(
|
||||
action_id='crypto-rotate-dry-run',
|
||||
label=TUI_COPY.build_action_label('crypto_rotate_dry_run'),
|
||||
command_builder=self.build_crypto_rotate_dry_run_command,
|
||||
summary_builder=lambda record, env: self.support.build_scope_purpose_summary(
|
||||
'当前环境传输加密轮换预演',
|
||||
'仅生成轮换辅助结果,不直接写入新密钥配置',
|
||||
),
|
||||
append_yes=False,
|
||||
)
|
||||
|
||||
def create_app_run_template(self) -> TuiActionTemplate:
|
||||
"""
|
||||
创建应用直接启动动作模板。
|
||||
|
||||
:return: 动作模板
|
||||
"""
|
||||
return TuiActionTemplate(
|
||||
action_id='app-run',
|
||||
label=TUI_COPY.build_action_label('app_run'),
|
||||
command_builder=self.build_app_run_command,
|
||||
summary_builder=lambda record, env: self.support.build_scope_purpose_summary(
|
||||
'当前环境应用直接启动流程',
|
||||
'确认后会在当前终端直接启动当前 FastAPI 应用,并持续占用终端会话',
|
||||
),
|
||||
execution_mode='external',
|
||||
consequence_text=TUI_COPY.build_action_consequence_text('wizard'),
|
||||
refresh_view=False,
|
||||
)
|
||||
|
||||
def create_crypto_keygen_template(self) -> TuiActionTemplate:
|
||||
"""
|
||||
创建密钥生成动作模板。
|
||||
|
||||
:return: 动作模板
|
||||
"""
|
||||
return TuiActionTemplate(
|
||||
action_id='crypto-keygen',
|
||||
label=TUI_COPY.build_action_label('crypto_keygen'),
|
||||
command_builder=self.build_crypto_keygen_command,
|
||||
summary_builder=lambda record, env: self.support.build_scope_purpose_summary(
|
||||
'当前环境新密钥生成流程',
|
||||
'在终端中直接输出新密钥材料和环境变量补丁建议',
|
||||
),
|
||||
execution_mode='external',
|
||||
consequence_text=TUI_COPY.build_action_consequence_text('wizard'),
|
||||
refresh_view=False,
|
||||
)
|
||||
|
||||
def create_ops_ping_db_template(self) -> TuiActionTemplate:
|
||||
"""
|
||||
创建数据库探活动作模板。
|
||||
|
||||
:return: 动作模板
|
||||
"""
|
||||
return TuiActionTemplate(
|
||||
action_id='ops-ping-db',
|
||||
label=TUI_COPY.build_action_label('ops_ping_db'),
|
||||
command_builder=self.build_ops_ping_db_command,
|
||||
summary_builder=lambda record, env: self.support.build_scope_purpose_summary(
|
||||
TUI_COPY.build_action_scope_label('ops_ping_db'),
|
||||
TUI_COPY.build_action_purpose_label('ops_ping_db'),
|
||||
),
|
||||
append_yes=False,
|
||||
)
|
||||
|
||||
def create_ops_ping_redis_template(self) -> TuiActionTemplate:
|
||||
"""
|
||||
创建 Redis 探活动作模板。
|
||||
|
||||
:return: 动作模板
|
||||
"""
|
||||
return TuiActionTemplate(
|
||||
action_id='ops-ping-redis',
|
||||
label=TUI_COPY.build_action_label('ops_ping_redis'),
|
||||
command_builder=self.build_ops_ping_redis_command,
|
||||
summary_builder=lambda record, env: self.support.build_scope_purpose_summary(
|
||||
TUI_COPY.build_action_scope_label('ops_ping_redis'),
|
||||
TUI_COPY.build_action_purpose_label('ops_ping_redis'),
|
||||
),
|
||||
append_yes=False,
|
||||
)
|
||||
Reference in New Issue
Block a user