chore(release): 1.1.33 - 全面重塑系统商务与专业化文案
TallyNote release / linux-x64 (push) Successful in 7m1s

This commit is contained in:
Qiufeng
2026-09-04 14:01:58 +08:00
parent 60c0519ac7
commit 1ecb783d0c
16 changed files with 65 additions and 65 deletions
+28 -28
View File
@@ -585,7 +585,7 @@ export default function UpdatePage({
<Page
eyebrow="运维与维护"
title="系统更新中心"
subtitle="管理 TallyNote 本地账本版本升级、下载验证与安全平滑重启"
subtitle="管理系统版本升级、更新包完整性校验与安全热重启"
actions={
<div className="tn-update-page-actions">
<Button
@@ -710,7 +710,7 @@ export default function UpdatePage({
<div className="tn-metric-content">
<span className="tn-metric-label">更新守护方式</span>
<div className="tn-metric-value">
{info.strategy === "systemd" ? "systemd 守护" : "手动源码模式"}
{info.strategy === "systemd" ? "系统守护进程" : "独立运行模式"}
</div>
</div>
</Surface>
@@ -722,7 +722,7 @@ export default function UpdatePage({
{info.checkedAt ? dateText(info.checkedAt, timezone) : "未检查"}
</div>
<div className="tn-metric-foot">
<small>数据源:Gitea Releases</small>
<small>数据源:官方发布渠道</small>
</div>
</div>
</Surface>
@@ -741,7 +741,7 @@ export default function UpdatePage({
<div className="tn-stepper-head">
<div>
<small className="tn-section-subheading">
标准化发布流程:版本发现 → 校验签名与清单 → 安全暂存 → 原子切换并重启
标准升级流程:获取版本信息 → 校验完整性 → 下载更新包 → 自动应用并安全重启
</small>
</div>
{job && (
@@ -761,10 +761,10 @@ export default function UpdatePage({
<div className="tn-stepper-wrap">
<Steps current={currentStep} theme="default">
<StepItem title="检查新版" content="获取 Release 元数据" />
<StepItem title="下载更新包" content="安全暂存 tar.gz 归档" />
<StepItem title="完整性校验" content="SHA-256 + 签名核验" />
<StepItem title="立即应用" content="原子切换与平滑重启" />
<StepItem title="检查新版" content="获取最新版本发布信息" />
<StepItem title="下载更新包" content="安全暂存更新程序包" />
<StepItem title="完整性校验" content="校验数字签名与文件指纹" />
<StepItem title="立即应用" content="自动备份数据并平滑升级" />
</Steps>
</div>
@@ -806,19 +806,19 @@ export default function UpdatePage({
{/* Status-specific descriptions */}
<div className="tn-job-runtime-desc">
{job.status === "downloading" && (
<span>正在从受信仓库高速拉取发布包,数据经过 TLS 1.3 传输加密,不影响前台正常记账。</span>
<span>正在从官方渠道下载更新安装包,后台安全传输中,不影响当前系统的正常使用。</span>
)}
{job.status === "verifying" && (
<span>已下载完成,正在对发布包进行 SHA-256 哈希比对与 Ed25519 签名真伪验证…</span>
<span>更新包已下载完成,正在进行防篡改完整性核验与数字签名认证…</span>
)}
{job.status === "staged" && (
<span className="text-success">
<CheckCircle2 size={15} aria-hidden="true" />
<span>更新包已下载并通过全部完整性校验。随时可以点击右上方【立即应用更新】。</span>
<span>更新包已准备就绪并通过安全校验,可随时点击【立即应用更新】完成升级。</span>
</span>
)}
{job.status === "backing_up" && (
<span>升级前安全保护中:正在自动为 SQLite 数据库与凭据附件生成安全快照备份…</span>
<span>正在为系统数据与附件凭据创建安全快照备份,确保升级过程数据无损…</span>
)}
{job.status === "applying" && (
<div className="tn-restarting-banner">
@@ -826,10 +826,10 @@ export default function UpdatePage({
<RefreshCw size={18} className="tn-spin" />
</div>
<div>
<strong>服务正在平滑重启并执行健康检查…</strong>
<strong>系统正在安全重启并检验服务可用性…</strong>
{restartSeconds !== null && (
<div className="tn-restart-countdown">
预计 {restartSeconds} 秒后自动恢复,前端正保持心跳轮询,无需手动刷新。
预计 {restartSeconds} 秒后自动恢复连接,系统将自动刷新页面,请稍候。
</div>
)}
</div>
@@ -851,7 +851,7 @@ export default function UpdatePage({
{job?.status === "completed" && (
<div className="tn-inline-info">
<CheckCircle2 size={16} />
<span>更新成功完成!新版本已通过内置端点健康检查,账本数据与附件完整无损。</span>
<span>系统已成功升级至最新版本,数据与附件均已完整保留。</span>
</div>
)}
</div>
@@ -885,7 +885,7 @@ export default function UpdatePage({
<span className="tn-fact-label">目标平台发布包</span>
<strong className="tn-fact-value">{latest.compatible ? latest.assetName : "无匹配架构包"}</strong>
<small className="tn-fact-hint">
{latest.compatible ? "与当前操作系统及 CPU 架构完全匹配" : "请在对应架构 runner 上单独构建"}
{latest.compatible ? "与当前系统运行环境匹配" : "当前系统环境暂不支持此更新包"}
</small>
</div>
@@ -908,7 +908,7 @@ export default function UpdatePage({
<strong className="tn-fact-value">
{latest.assetSize ? bytesText(latest.assetSize) : "-"}
</strong>
<small className="tn-fact-hint">包含独立运行时与全量生产静态资源</small>
<small className="tn-fact-hint">完整生产环境更新程序包</small>
</div>
</div>
@@ -946,7 +946,7 @@ export default function UpdatePage({
)}
{reloadReady && (
<Button theme="success" size="large" onClick={() => window.location.reload()}>
重新加载控制台
刷新页面
</Button>
)}
</div>
@@ -955,7 +955,7 @@ export default function UpdatePage({
<Surface className="tn-empty-surface">
<div className="tn-empty-content">
<RefreshCw size={28} className="text-muted" />
<p>暂无待显示的 Release 信息,可点击右上角“检查新版本”主动拉取。</p>
<p>暂无更新版本信息,可点击右上角“检查新版本”获取最新状态。</p>
</div>
</Surface>
)}
@@ -988,9 +988,9 @@ export default function UpdatePage({
{!info.configured && (
<div className="tn-update-explainer">
<div>
<strong>当前为手动开发/源码维护模式</strong>
<strong>当前运行环境未启用后台自动更新服务</strong>
<p>
检测到当前以开发或无守护模式运行。生产服务器使用 curl / systemd 安装并部署后,将自动启用此处的一键全自动在线更新。
系统当前处于独立运行模式。若需开启在线一键更新,请配置系统后台更新守护进程。
</p>
</div>
</div>
@@ -1001,7 +1001,7 @@ export default function UpdatePage({
{/* Confirmation Dialog */}
<Dialog
visible={Boolean(confirmVersion)}
header={confirmAction === "download" ? "确认下载更新包" : "确认立即更新并平滑重启"}
header={confirmAction === "download" ? "确认下载更新包" : "确认立即应用更新并重启服务"}
confirmBtn={{
content: confirmAction === "download" ? "确认下载" : "立即更新",
theme: "primary",
@@ -1021,21 +1021,21 @@ export default function UpdatePage({
{confirmAction === "download" ? (
<>
<p>
即将从官方 Release 源拉取 <strong>v{confirmVersion}</strong> 安装包。
即将从官方渠道下载 <strong>v{confirmVersion}</strong> 版本安装包。
</p>
<p className="text-secondary">
下载将在后台独立执行,并自动校验 SHA-256 哈希清单与 Ed25519 签名,不会中断当前记账工作。
安装包将在后台静默下载并完成安全性校验,期间不影响系统的正常使用。
</p>
</>
) : (
<>
<p>
即将应用已就绪的 <strong>v{confirmVersion}</strong> 更新包。
即将应用 <strong>v{confirmVersion}</strong> 版本更新包并升级系统。
</p>
<div className="tn-update-safety-tips">
<div>• 系统更新前将自动备份当前 SQLite 数据库与附件目录;</div>
<div>• 服务将短暂重启约 15~30 秒,期间页面保持心跳重连并在完成后平滑刷新;</div>
<div>• 切换操作具备原子性,若健康检查异常将自动回退至当前版本。</div>
<div>• 更新前将自动创建数据与凭据附件快照,保障数据资产安全;</div>
<div>• 服务将进行平滑重启(预计 15~30 秒),更新完成后页面将自动刷新恢复;</div>
<div>• 系统具备自动容灾保护,若升级验证异常将自动回退至当前版本。</div>
</div>
</>
)}