Skip to content

Commit 5eb44b7

Browse files
author
CoLiPas Builder
committed
Polish visible product copy
1 parent 528577c commit 5eb44b7

6 files changed

Lines changed: 36 additions & 31 deletions

File tree

deploy/server-update.sh

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1435,7 +1435,7 @@ SVG
14351435
<div><code>SESSION_SECRET</code><p>会话签名密钥,必须使用长随机字符串。</p></div>
14361436
<div><code>CREDENTIAL_ENCRYPTION_KEY</code><p>SSH 密码和私钥的加密密钥,不能提交到 Git。</p></div>
14371437
<div><code>COLIPAS_DATA_DIR / COLIPAS_DB_PATH</code><p>SQLite 数据库和运行数据目录,默认位于 .data。</p></div>
1438-
<div><code>AI_BASE_URL / AI_API_KEY / AI_MODEL</code><p>OpenAI 兼容 API 配置;不配置密钥时只使用本地模拟分析。</p></div>
1438+
<div><code>AI_BASE_URL / AI_API_KEY / AI_MODEL</code><p>OpenAI 兼容 API 配置;不配置密钥时只使用本地规则分析。</p></div>
14391439
<div><code>CUSTOM_API_ALLOWED_HOSTS</code><p>自定义 API 代理允许访问的域名白名单。</p></div>
14401440
</div>
14411441
</section>
@@ -1567,11 +1567,11 @@ curl -fsS http://127.0.0.1:8080/api/health</pre>
15671567
15681568
<section id="faq" class="section">
15691569
<p class="kicker">常见问题</p>
1570-
<h2>排障时先看这里</h2>
1570+
<h2>常见问题与排障</h2>
15711571
<div class="check-list">
15721572
<details open><summary>后台地址在哪里?</summary><p>生产入口是你的域名或 http://127.0.0.1:8080/,后台登录入口是 /admin/。5173 只用于 Vite 开发服务。</p></details>
15731573
<details><summary>为什么未验证的服务器不会显示已接入?</summary><p>真实接入必须通过 SSH 握手。资产模式只登记信息,不会显示已接入,也不会允许执行远程命令。</p></details>
1574-
<details><summary>AI 回答是否固定?</summary><p>未配置有效 API Key 时会返回本地模拟分析;配置 OpenAI 兼容 API 并测试成功后,会使用真实流式模型。</p></details>
1574+
<details><summary>AI 回答是否固定?</summary><p>未配置有效 API Key 时会返回本地规则分析;配置 OpenAI 兼容 API 并测试成功后,会使用真实流式模型。</p></details>
15751575
<details><summary>SSH 终端关闭后为什么命令不能继续发?</summary><p>这是正常保护。终端窗口关闭会销毁后端 shell,会话失效后继续输入会被拒绝,避免服务器上残留交互进程。</p></details>
15761576
<details><summary>数据存在哪里?</summary><p>默认保存在 .data/colipas.sqlite。SSH 凭据会加密后存储,请保护 .env 和 .data。</p></details>
15771577
</div>

scripts/public-pages-check.mjs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -161,7 +161,7 @@ function buildAdminCheck() {
161161
await expectTitle(page, /CoLiPas/);
162162
await page.locator('input[autocomplete="username"]').waitFor({ timeout: 15000 });
163163
await page.locator('input[autocomplete="current-password"]').waitFor({ timeout: 15000 });
164-
await expectText(page.locator('h1').first(), /CoLiPas||console||/i, 'admin login h1');
164+
await expectText(page.locator('h1').first(), /CoLiPas||console|/i, 'admin login h1');
165165
await expectLink(page, /^GitHub$/i, 'https://github.com/nmklio/CoLiPas');
166166
const usernameValue = await page.locator('input[autocomplete="username"]').inputValue();
167167
if (usernameValue.trim()) {

scripts/smoke.mjs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3973,17 +3973,22 @@ function assertInteractiveDeployDocsAndScriptGuards() {
39733973
'admin123456',
39743974
'不要把真实密码写进公开仓库或截图',
39753975
'公开仓库或截图',
3976+
'CoLiPas云服务器管理面板面向',
39763977
'截图里的真实资产',
39773978
'类 VNC',
39783979
'乱填',
39793980
'云维',
39803981
'当作正式服务',
3982+
'登录控制台',
39813983
'开发者改代码后再上线',
39823984
'演示后台',
39833985
'演示登录',
39843986
'默认演示密码',
39853987
'是不是固定',
39863988
'备用模型',
3989+
'每个模块都不是摆设',
3990+
'排障时先看这里',
3991+
'便于别人下载后部署',
39873992
];
39883993
const visibleCopySources = [
39893994
['README.md', readmeSource],

src/app/DocsPage.tsx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,7 @@ const apiRows = [
121121
const faqItems = [
122122
['后台地址在哪里?', '生产环境统一访问 http://127.0.0.1:8080/,反代后访问你自己的域名。不要将 Vite 5173 作为生产入口。'],
123123
['为什么未验证的服务器不会显示已接入?', '真实接入必须通过 SSH 握手。资产模式只登记资产,不会显示为已接入。'],
124-
['AI 回答是否固定?', '未配置有效 API key 时会走本地模拟;配置 OpenAI 兼容 API 并通过测试后,会使用真实流式模型。'],
124+
['AI 回答是否固定?', '未配置有效 API key 时会走本地规则分析;配置 OpenAI 兼容 API 并通过测试后,会使用真实流式模型。'],
125125
['数据存在哪里?', '默认保存在 .data/colipas.sqlite,SSH 凭据加密后存储。部署时要备份 .data,并保护 .env。'],
126126
['可以直接暴露公网吗?', '可以,但必须先改管理员密码、SESSION_SECRET、CREDENTIAL_ENCRYPTION_KEY、CORS_ORIGIN,并启用 HTTPS 和防火墙。'],
127127
];
@@ -246,7 +246,7 @@ export function DocsPage({ onLogin }: DocsPageProps) {
246246
<div className="docs-section-heading">
247247
<span><CloudCog size={18} /> 后台使用流程</span>
248248
<h2>按服务器生命周期操作</h2>
249-
<p>下面是推荐使用顺序。每个模块都不是摆设,动作会和资产、事件、审计、AI 上下文联动。</p>
249+
<p>建议按以下顺序使用。每个模块都会与资产、事件、审计和 AI 上下文联动。</p>
250250
</div>
251251
<div className="docs-usage-grid">
252252
{usageBlocks.map((block) => {
@@ -272,7 +272,7 @@ export function DocsPage({ onLogin }: DocsPageProps) {
272272
<div className="docs-section-heading">
273273
<span><Bot size={18} /> AI 助手</span>
274274
<h2>配置 OpenAI 兼容 API 后使用真实流式对话</h2>
275-
<p>AI 面板会先读取模型列表,再通过测试接口确认上游支持流式响应。未配置密钥时,只会返回本地模拟分析</p>
275+
<p>AI 面板会先读取模型列表,再通过测试接口确认上游支持流式响应。未配置密钥时,只会返回本地规则分析</p>
276276
</div>
277277
<ol className="docs-ordered">
278278
<li>填写 API Base URL,例如 https://api.example.com/v1。</li>
@@ -348,7 +348,7 @@ export function DocsPage({ onLogin }: DocsPageProps) {
348348
<section id="faq" className="docs-section">
349349
<div className="docs-section-heading">
350350
<span><LifeBuoy size={18} /> 常见问题</span>
351-
<h2>排障时先看这里</h2>
351+
<h2>常见问题与排障</h2>
352352
</div>
353353
<div className="docs-faq-list">
354354
{faqItems.map(([question, answer]) => (

src/app/MarketingPage.tsx

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -35,8 +35,8 @@ interface MarketingPageProps {
3535
const featureCards = [
3636
{
3737
icon: CloudCog,
38-
title: '多云资产接入',
39-
desc: '统一登记自建、海外、私有云和自定义云厂商资源,自动归类到其他云并保留地域、系统、标签。',
38+
title: '服务器资产接入',
39+
desc: '统一登记自建、海外、私有云和自定义云资源,保留云厂商、地域、系统和标签信息。',
4040
tags: ['自定义云', '资源同步'],
4141
},
4242
{
@@ -139,7 +139,7 @@ export function MarketingPage({ loading, error, onLogin }: MarketingPageProps) {
139139
GitHub
140140
</a>
141141
<button type="button" className="marketing-primary small" onClick={scrollToLogin}>
142-
立即体验
142+
进入后台
143143
</button>
144144
</div>
145145
</header>
@@ -152,7 +152,7 @@ export function MarketingPage({ loading, error, onLogin }: MarketingPageProps) {
152152
<span>接入、监控、修复一体化</span>
153153
</h1>
154154
<p className="marketing-lead">
155-
CoLiPas云服务器管理面板面向自建服务器、海外节点、私有云和多云混合环境。它把资产接入、地域地图、SSH 终端、AI 分析、运维编排和安全审计放在同一个后台里,减少来回切换工具的成本。
155+
面向自建服务器、海外节点、私有云和混合云环境。CoLiPas 把资产接入、地域地图、SSH 终端、AI 分析、运维编排和安全审计放在同一个后台里,减少来回切换工具的成本。
156156
</p>
157157
<div className="marketing-hero-buttons">
158158
<button type="button" className="marketing-primary" onClick={scrollToLogin}>
@@ -320,7 +320,7 @@ export function MarketingPage({ loading, error, onLogin }: MarketingPageProps) {
320320
<span className="platform-label">文档</span>
321321
<ScrollText size={22} />
322322
<h3>README + deploy</h3>
323-
<p>仓库提供 Nginx、systemd 和环境变量示例,便于别人下载后部署</p>
323+
<p>仓库提供 Nginx、systemd 和环境变量示例,便于团队下载后部署</p>
324324
<code>deploy/colipas.service</code>
325325
</article>
326326
</div>

src/i18n.tsx

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -45,9 +45,9 @@ const zh = {
4545
'status.open': '待处理',
4646
'status.closed': '已关闭',
4747

48-
'login.subtitle': 'CoLiPas云服务器管理面板',
48+
'login.subtitle': 'SSH · AI · 审计一体化',
4949
'login.eyebrow': '安全入口',
50-
'login.title': '登录控制台',
50+
'login.title': '登录管理后台',
5151
'login.description': '统一进入服务器资产、SSH 运维、AI 分析与安全审计。',
5252
'login.features': '登录页能力',
5353
'login.featureAssets': '资产接入',
@@ -113,7 +113,7 @@ const zh = {
113113
'app.aiPromptPriority': '梳理今日运维优先级',
114114
'app.aiPromptRiskQuestion': '请结合当前服务器资产、地域分布、资源负载、SSH 接入状态和安全事件,分析当前服务器风险,并按优先级给出 3 条处理建议。',
115115
'app.aiPromptSshQuestion': '请针对当前已接入和未接入 SSH 的服务器,生成一份 SSH 排障步骤,包含认证、网络、端口、系统负载和下一步验证命令。',
116-
'app.aiPromptPriorityQuestion': '请基于当前多云服务器、告警事件、SSH 可用性和资源负载,梳理今天的运维优先级,并给出可以直接执行的行动清单。',
116+
'app.aiPromptPriorityQuestion': '请基于当前服务器、告警事件、SSH 可用性和资源负载,梳理今天的运维优先级,并给出可以直接执行的行动清单。',
117117
'app.streamApi': '流式接口',
118118
'app.streamApiDesc': 'AI 分析和连通测试都使用流式链路,切换页面不卸载右侧会话。',
119119
'app.currentFocus': '当前重点',
@@ -144,12 +144,12 @@ const zh = {
144144
'account.passwordSaved': '登录密码已修改,其他会话已失效',
145145
'account.passwordFailed': '密码修改失败',
146146

147-
'overview.eyebrow': '多云监控总览',
147+
'overview.eyebrow': '服务器监控总览',
148148
'overview.title': '全球节点态势与服务器运行监控',
149149
'overview.kpiOnline': '在线',
150150
'overview.kpiAvgCpu': '平均 CPU',
151151
'overview.kpiCritical': '高危',
152-
'overview.mapTitle': '多云区域地图',
152+
'overview.mapTitle': '服务器区域地图',
153153
'overview.mapDistribution': '服务器分布在 {count} 个区域',
154154
'overview.regionCount': '{count} 个区域',
155155
'overview.regionLoad': '区域负载',
@@ -167,7 +167,7 @@ const zh = {
167167
'overview.warningServer': '告警服务器',
168168
'overview.pendingRegion': '待接入',
169169
'overview.noAssetProvider': '暂无资产',
170-
'overview.mapAria': '多云服务器区域分布',
170+
'overview.mapAria': '服务器区域分布',
171171
'overview.countrySummary': '{total} 台服务器 · {running} 台在线',
172172
'overview.viewRegionServers': '查看该地域服务器',
173173

@@ -354,7 +354,7 @@ const zh = {
354354
'ai.hoursAgo': '{count} 小时前',
355355
'ai.daysAgo': '{count} 天前',
356356
'ai.newChatTitle': '新会话',
357-
'ai.defaultQuestion': '分析当前多云服务器风险,并给出 3 条优先处理建议。',
357+
'ai.defaultQuestion': '分析当前服务器风险,并给出 3 条优先处理建议。',
358358
'ai.inputRequired': '请输入要分析的问题',
359359
'ai.analysisFailed': 'AI 分析失败',
360360
'ai.testFailed': 'AI 连通测试失败',
@@ -388,7 +388,7 @@ const en: typeof zh = {
388388
'status.provisioning': 'Provisioning',
389389
'status.open': 'Open',
390390
'status.closed': 'Closed',
391-
'login.subtitle': 'CoLiPas Cloud Server Management Panel',
391+
'login.subtitle': 'SSH, AI, and audit in one console',
392392
'login.eyebrow': 'Secure entry',
393393
'login.title': 'Sign in to Console',
394394
'login.description': 'Access server inventory, SSH operations, AI analysis, and security audit from one console.',
@@ -453,7 +453,7 @@ const en: typeof zh = {
453453
'app.aiPromptPriority': 'Sort today priorities',
454454
'app.aiPromptRiskQuestion': 'Analyze current server risk using assets, regions, resource load, SSH status, and security events. Return the top 3 actions by priority.',
455455
'app.aiPromptSshQuestion': 'Create SSH troubleshooting steps for connected and unconnected servers, including auth, network, port, system load, and validation commands.',
456-
'app.aiPromptPriorityQuestion': 'Use the current multi-cloud servers, alerts, SSH readiness, and resource load to sort today operations priorities into an executable checklist.',
456+
'app.aiPromptPriorityQuestion': 'Use the current servers, alerts, SSH readiness, and resource load to sort today operations priorities into an executable checklist.',
457457
'app.streamApi': 'Streaming API',
458458
'app.streamApiDesc': 'AI analysis and connection tests use streaming calls. The side chat stays mounted when pages change.',
459459
'app.currentFocus': 'Current focus',
@@ -483,12 +483,12 @@ const en: typeof zh = {
483483
'account.passwordMismatch': 'The new passwords do not match',
484484
'account.passwordSaved': 'Password changed and other sessions were revoked',
485485
'account.passwordFailed': 'Password change failed',
486-
'overview.eyebrow': 'Multi-cloud monitoring',
486+
'overview.eyebrow': 'Server monitoring',
487487
'overview.title': 'Global node posture and server runtime monitoring',
488488
'overview.kpiOnline': 'Online',
489489
'overview.kpiAvgCpu': 'Avg CPU',
490490
'overview.kpiCritical': 'Critical',
491-
'overview.mapTitle': 'Multi-cloud region map',
491+
'overview.mapTitle': 'Server region map',
492492
'overview.mapDistribution': 'Servers are distributed across {count} regions',
493493
'overview.regionCount': '{count} regions',
494494
'overview.regionLoad': 'Regional load',
@@ -506,7 +506,7 @@ const en: typeof zh = {
506506
'overview.warningServer': 'Warning servers',
507507
'overview.pendingRegion': 'Pending',
508508
'overview.noAssetProvider': 'No assets',
509-
'overview.mapAria': 'Multi-cloud server region distribution',
509+
'overview.mapAria': 'Server region distribution',
510510
'overview.countrySummary': '{total} servers · {running} online',
511511
'overview.viewRegionServers': 'View region servers',
512512
'servers.eyebrow': 'Server Inventory',
@@ -722,7 +722,7 @@ const ja: typeof zh = {
722722
'status.provisioning': '作成中',
723723
'status.open': '対応待ち',
724724
'status.closed': 'クローズ済み',
725-
'login.subtitle': 'CoLiPas クラウドサーバー管理パネル',
725+
'login.subtitle': 'SSH、AI、監査を 1 つのコンソールへ',
726726
'login.eyebrow': 'セキュア入口',
727727
'login.title': 'コンソールにログイン',
728728
'login.description': 'サーバー資産、SSH 運用、AI 分析、セキュリティ監査へ一元的にアクセスします。',
@@ -787,7 +787,7 @@ const ja: typeof zh = {
787787
'app.aiPromptPriority': '本日の優先度を整理',
788788
'app.aiPromptRiskQuestion': '現在のサーバー資産、地域分布、リソース負荷、SSH 接続状態、セキュリティイベントを踏まえてリスクを分析し、優先度順に 3 件の対応案を提示してください。',
789789
'app.aiPromptSshQuestion': 'SSH 接続済み/未接続のサーバーを対象に、認証、ネットワーク、ポート、システム負荷、次の検証コマンドを含む障害対応手順を作成してください。',
790-
'app.aiPromptPriorityQuestion': '現在のマルチクラウドサーバー、アラート、SSH 可用性、リソース負荷から、本日の運用優先度を実行可能なチェックリストとして整理してください。',
790+
'app.aiPromptPriorityQuestion': '現在のサーバー、アラート、SSH 可用性、リソース負荷から、本日の運用優先度を実行可能なチェックリストとして整理してください。',
791791
'app.streamApi': 'ストリーミング API',
792792
'app.streamApiDesc': 'AI 分析と接続テストはストリーミングで実行され、ページ切替後も右側の会話は維持されます。',
793793
'app.currentFocus': '現在の注目',
@@ -817,12 +817,12 @@ const ja: typeof zh = {
817817
'account.passwordMismatch': '新しいパスワードが一致しません',
818818
'account.passwordSaved': 'パスワードを変更し、他のセッションを失効しました',
819819
'account.passwordFailed': 'パスワード変更に失敗しました',
820-
'overview.eyebrow': 'マルチクラウド監視',
820+
'overview.eyebrow': 'サーバー監視',
821821
'overview.title': 'グローバルノード状況とサーバー稼働監視',
822822
'overview.kpiOnline': 'オンライン',
823823
'overview.kpiAvgCpu': '平均 CPU',
824824
'overview.kpiCritical': '重大',
825-
'overview.mapTitle': 'マルチクラウド地域マップ',
825+
'overview.mapTitle': 'サーバー地域マップ',
826826
'overview.mapDistribution': 'サーバーは {count} リージョンに分布',
827827
'overview.regionCount': '{count} リージョン',
828828
'overview.regionLoad': 'リージョン負荷',
@@ -840,7 +840,7 @@ const ja: typeof zh = {
840840
'overview.warningServer': '警告サーバー',
841841
'overview.pendingRegion': '接続待ち',
842842
'overview.noAssetProvider': '資産なし',
843-
'overview.mapAria': 'マルチクラウドサーバーのリージョン分布',
843+
'overview.mapAria': 'サーバーのリージョン分布',
844844
'overview.countrySummary': '{total} 台のサーバー · {running} 台オンライン',
845845
'overview.viewRegionServers': 'このリージョンのサーバー',
846846
'servers.eyebrow': 'サーバー資産',
@@ -1022,7 +1022,7 @@ const ja: typeof zh = {
10221022
'ai.hoursAgo': '{count} 時間前',
10231023
'ai.daysAgo': '{count} 日前',
10241024
'ai.newChatTitle': '新しい会話',
1025-
'ai.defaultQuestion': '現在のマルチクラウドサーバーリスクを分析し、優先対応を 3 件提示してください。',
1025+
'ai.defaultQuestion': '現在のサーバーリスクを分析し、優先対応を 3 件提示してください。',
10261026
'ai.inputRequired': '分析する質問を入力してください',
10271027
'ai.analysisFailed': 'AI 分析に失敗しました',
10281028
'ai.testFailed': 'AI 接続テストに失敗しました',

0 commit comments

Comments
 (0)