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

@@ -277,6 +277,27 @@ impl Hooks for App {
})
.filter(|items| !items.is_empty())
.map(|items| serde_json::json!(items));
let music_playlist = settings["music_playlist"]
.as_array()
.map(|items| {
items
.iter()
.filter_map(|item| {
let title = item["title"].as_str()?.trim();
let url = item["url"].as_str()?.trim();
if title.is_empty() || url.is_empty() {
None
} else {
Some(serde_json::json!({
"title": title,
"url": url,
}))
}
})
.collect::<Vec<_>>()
})
.filter(|items| !items.is_empty())
.map(serde_json::Value::Array);
let item = site_settings::ActiveModel {
id: Set(settings["id"].as_i64().unwrap_or(1) as i32),
@@ -317,7 +338,11 @@ impl Hooks for App {
.map(ToString::to_string)),
location: Set(settings["location"].as_str().map(ToString::to_string)),
tech_stack: Set(tech_stack),
music_playlist: Set(music_playlist),
ai_enabled: Set(settings["ai_enabled"].as_bool()),
paragraph_comments_enabled: Set(settings["paragraph_comments_enabled"]
.as_bool()
.or(Some(true))),
ai_provider: Set(settings["ai_provider"].as_str().map(ToString::to_string)),
ai_api_base: Set(settings["ai_api_base"].as_str().map(ToString::to_string)),
ai_api_key: Set(settings["ai_api_key"].as_str().map(ToString::to_string)),
@@ -353,6 +378,11 @@ impl Hooks for App {
let status = review["status"].as_str().unwrap_or("completed").to_string();
let description = review["description"].as_str().unwrap_or("").to_string();
let cover = review["cover"].as_str().unwrap_or("📝").to_string();
let link_url = review["link_url"]
.as_str()
.map(str::trim)
.filter(|value| !value.is_empty())
.map(ToString::to_string);
let tags_vec = review["tags"]
.as_array()
.map(|arr| {
@@ -376,6 +406,7 @@ impl Hooks for App {
status: Set(Some(status)),
description: Set(Some(description)),
cover: Set(Some(cover)),
link_url: Set(link_url),
tags: Set(Some(serde_json::to_string(&tags_vec).unwrap_or_default())),
..Default::default()
};