From 646ab3d3009066f3f1d809c1125625d10f42617a Mon Sep 17 00:00:00 2001 From: Peanut Date: Sun, 26 Apr 2026 12:47:54 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=9B=B4=E6=96=B0=E6=9C=8D=E5=8A=A1?= =?UTF-8?q?=E7=AE=A1=E7=90=86=E8=84=9A=E6=9C=AC=E4=BC=98=E5=8C=96=E8=AE=BE?= =?UTF-8?q?=E8=AE=A1=E6=96=87=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 添加 10 项优化修复的设计说明:中文编码修复、动态可执行文件查找、 依赖等待逻辑修复、restart 支持 all、clean 增强、PID 严格验证、 进度条稳定、mini-program 补充配置。 Co-Authored-By: Claude Opus 4.7 --- .../2026-04-26-service-manager-design.md | 54 ++++++++++++++++++- 1 file changed, 52 insertions(+), 2 deletions(-) diff --git a/docs/superpowers/specs/2026-04-26-service-manager-design.md b/docs/superpowers/specs/2026-04-26-service-manager-design.md index e53d061..a7c78e9 100644 --- a/docs/superpowers/specs/2026-04-26-service-manager-design.md +++ b/docs/superpowers/specs/2026-04-26-service-manager-design.md @@ -1,7 +1,8 @@ --- -author: opencode +author: Peanut created_at: 2026-04-26 -purpose: 设计情绪博物馆项目的跨平台服务管理脚本,支持后端、前端、管理后台、小程序 H5 四个服务的启动、停止、重启、状态检查、日志查看等功能 +updated_at: 2026-04-26 +purpose: 设计并优化情绪博物馆跨平台服务管理脚本,修复硬编码路径、中文乱码、依赖等待逻辑等问题 --- # 情绪博物馆 - 跨平台服务管理脚本设计 @@ -243,6 +244,55 @@ python manage.py setup web # 安装前端依赖 - 蓝色 `[SECTION]` - 分隔标题 - 青色 `[DEBUG]` - 调试信息 +### 10. 优化修复(2026-04-26) + +**10.1 中文编码修复** + +在 `manage.py` 入口添加 UTF-8 编码配置,修复 Windows 控制台中文乱码: + +```python +import sys, io +sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8') +sys.stderr = io.TextIOWrapper(sys.stderr.buffer, encoding='utf-8') +``` + +**10.2 动态可执行文件查找** + +移除所有硬编码路径,新增 `_find_executable()` 方法动态查找 Node/Maven/npm 路径: + +- **Node**: `shutil.which('node.exe')` → `F:\Program Files\nodejs` → `C:\Program Files\nodejs` → `%APPDATA%\npm` +- **npm**: `shutil.which('npm.cmd')` → 同 Node 路径 +- **Maven**: `shutil.which('mvn.cmd')` → `shutil.which('mvn.bat')` → 常见 Maven 安装路径 + +**10.3 依赖等待逻辑修复** + +`_start_all` 中不再等待"已加入启动队列但还未就绪"的服务,改为: +1. 先启动依赖服务(如 backend) +2. 等待其健康检查通过 +3. 再启动依赖它的服务(如 web、web-admin) + +**10.4 restart 支持 all 参数** + +将 `restart_parser` 的 `service` 参数改为 `nargs="?"`,允许不传值。代码中处理 `all` 时触发全量重启。 + +**10.5 clean 增强** + +清理范围扩展: +- **Node 服务**: `node_modules`、`dist`、`.vite` 目录 +- **Java 服务**: `target` 目录(优先使用 `mvn clean`,fallback 为直接删除) + +**10.6 PID 严格验证** + +不仅检查 PID 存在,还检查进程的 `cwd`(工作目录)是否匹配服务目录,防止误判复用 PID 的其他进程。 + +**10.7 进度条显示稳定** + +进度更新增加节流:仅在百分比变化 >= 10% 时刷新终端输出,避免频繁抖动。 + +**10.8 mini-program 补充 log_file 配置** + +在 `manage.conf.yaml` 中为 `mini-program` 服务添加 `log_file` 字段。 + ## 配置 Schema 校验 配置文件加载后进行严格校验: