feat: Refactor service management scripts to use a unified dev script

- Added package.json to manage development scripts.
- Updated restart-services.ps1 to call the new dev script for starting services.
- Refactored start-admin.ps1, start-backend.ps1, start-frontend.ps1, and start-mcp.ps1 to utilize the dev script for starting respective services.
- Enhanced stop-services.ps1 to improve process termination logic by matching command patterns.
This commit is contained in:
2026-03-29 21:36:13 +08:00
parent 84f82c2a7e
commit 92a85eef20
137 changed files with 14181 additions and 2691 deletions

View File

@@ -4,7 +4,6 @@ import TerminalWindow from '../../components/ui/TerminalWindow.astro';
import CommandPrompt from '../../components/ui/CommandPrompt.astro';
import StatsList from '../../components/StatsList.astro';
import TechStackList from '../../components/TechStackList.astro';
import InfoTile from '../../components/ui/InfoTile.astro';
import { api, DEFAULT_SITE_SETTINGS } from '../../lib/api/client';
import { getI18n } from '../../lib/i18n';
@@ -49,7 +48,7 @@ const ownerInitial = siteSettings.ownerName.charAt(0) || 'T';
<div class="max-w-5xl mx-auto px-4 sm:px-6 lg:px-8 py-8">
<TerminalWindow title="~/about" class="w-full">
<div class="mb-6 px-4">
<CommandPrompt command="whoami" />
<CommandPrompt command="id -un" />
<div class="terminal-panel ml-4 mt-4">
<div class="terminal-kicker">identity profile</div>
<div class="terminal-section-title mt-4">
@@ -79,7 +78,7 @@ const ownerInitial = siteSettings.ownerName.charAt(0) || 'T';
<div class="px-4">
<div class="grid grid-cols-1 lg:grid-cols-2 gap-8">
<div>
<CommandPrompt command="cat profile.txt" />
<CommandPrompt command="sed -n '1,80p' ~/profile.md" />
<div class="ml-4 mt-4">
<div class="terminal-panel p-6">
<div class="flex items-center gap-4 mb-4">
@@ -104,7 +103,7 @@ const ownerInitial = siteSettings.ownerName.charAt(0) || 'T';
</div>
<div class="mt-6">
<CommandPrompt command="cat tech_stack.txt" />
<CommandPrompt command="ls ~/.local/share/stack" />
<div class="ml-4 mt-4">
<TechStackList items={techStack} />
</div>
@@ -112,59 +111,75 @@ const ownerInitial = siteSettings.ownerName.charAt(0) || 'T';
</div>
<div>
<CommandPrompt command="cat system_info.txt" />
<CommandPrompt command="uname -a" />
<div class="ml-4 mt-4">
<StatsList stats={systemStats} />
</div>
<div class="mt-6">
<CommandPrompt command="cat contact.txt" />
<CommandPrompt command="printenv | grep -E 'MAIL|WEB'" />
<div class="ml-4 mt-4">
<div class="flex flex-wrap gap-3">
<div class="grid grid-cols-1 gap-3 sm:grid-cols-2">
{siteSettings.social.github && (
<InfoTile
<a
href={siteSettings.social.github}
tone="neutral"
layout="grid"
target="_blank"
rel="noopener noreferrer"
class="terminal-interactive-card flex items-center gap-3 rounded-2xl border border-[var(--border-color)] bg-[linear-gradient(135deg,rgba(15,23,42,0.04),rgba(var(--primary-rgb),0.08))] px-4 py-3 shadow-[0_10px_28px_rgba(15,23,42,0.08)]"
>
<i class="fab fa-github text-[var(--text-secondary)]"></i>
<span class="text-sm">GitHub</span>
</InfoTile>
<span class="flex h-10 w-10 items-center justify-center rounded-xl bg-[#111827] text-white">
<i class="fab fa-github text-sm"></i>
</span>
<span class="min-w-0">
<span class="block text-[11px] uppercase tracking-[0.2em] text-[var(--text-tertiary)]">{t('about.contact')}</span>
<span class="mt-1 block text-sm font-semibold text-[var(--title-color)]">GitHub</span>
</span>
</a>
)}
{siteSettings.social.twitter && (
<InfoTile
{siteSettings.social.twitter && (
<a
href={siteSettings.social.twitter}
tone="neutral"
layout="grid"
target="_blank"
rel="noopener noreferrer"
class="terminal-interactive-card flex items-center gap-3 rounded-2xl border border-[var(--border-color)] bg-[linear-gradient(135deg,rgba(15,23,42,0.04),rgba(var(--secondary-rgb),0.1))] px-4 py-3 shadow-[0_10px_28px_rgba(15,23,42,0.08)]"
>
<i class="fab fa-twitter text-[var(--text-secondary)]"></i>
<span class="text-sm">Twitter</span>
</InfoTile>
<span class="flex h-10 w-10 items-center justify-center rounded-xl bg-[#1d9bf0] text-white">
<i class="fab fa-twitter text-sm"></i>
</span>
<span class="min-w-0">
<span class="block text-[11px] uppercase tracking-[0.2em] text-[var(--text-tertiary)]">{t('about.contact')}</span>
<span class="mt-1 block text-sm font-semibold text-[var(--title-color)]">Twitter</span>
</span>
</a>
)}
{siteSettings.social.email && (
<InfoTile
{siteSettings.social.email && (
<a
href={siteSettings.social.email}
tone="neutral"
layout="grid"
class="terminal-interactive-card flex items-center gap-3 rounded-2xl border border-[var(--border-color)] bg-[linear-gradient(135deg,rgba(15,23,42,0.04),rgba(59,130,246,0.08))] px-4 py-3 shadow-[0_10px_28px_rgba(15,23,42,0.08)]"
>
<i class="fas fa-envelope text-[var(--text-secondary)]"></i>
<span class="text-sm">{t('comments.email')}</span>
</InfoTile>
<span class="flex h-10 w-10 items-center justify-center rounded-xl bg-[var(--primary)] text-white">
<i class="fas fa-envelope text-sm"></i>
</span>
<span class="min-w-0">
<span class="block text-[11px] uppercase tracking-[0.2em] text-[var(--text-tertiary)]">{t('about.contact')}</span>
<span class="mt-1 block text-sm font-semibold text-[var(--title-color)]">{t('comments.email')}</span>
</span>
</a>
)}
<InfoTile
<a
href={siteSettings.siteUrl}
tone="neutral"
layout="grid"
target="_blank"
rel="noopener noreferrer"
class="terminal-interactive-card flex items-center gap-3 rounded-2xl border border-[var(--border-color)] bg-[linear-gradient(135deg,rgba(15,23,42,0.04),rgba(16,185,129,0.1))] px-4 py-3 shadow-[0_10px_28px_rgba(15,23,42,0.08)]"
>
<i class="fas fa-globe text-[var(--text-secondary)]"></i>
<span class="text-sm">{t('about.website')}</span>
</InfoTile>
<span class="flex h-10 w-10 items-center justify-center rounded-xl bg-emerald-500 text-white">
<i class="fas fa-globe text-sm"></i>
</span>
<span class="min-w-0">
<span class="block text-[11px] uppercase tracking-[0.2em] text-[var(--text-tertiary)]">{t('about.contact')}</span>
<span class="mt-1 block text-sm font-semibold text-[var(--title-color)]">{t('about.website')}</span>
</span>
</a>
</div>
</div>
</div>