调整部分前端布局和后端增删改逻辑
This commit is contained in:
@@ -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'),
|
||||
),
|
||||
)
|
||||
Reference in New Issue
Block a user