feat: 更新服务管理脚本优化设计文档

添加 10 项优化修复的设计说明:中文编码修复、动态可执行文件查找、
依赖等待逻辑修复、restart 支持 all、clean 增强、PID 严格验证、
进度条稳定、mini-program 补充配置。

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
2026-04-26 12:47:54 +08:00
parent 333dc28bd4
commit 646ab3d300
@@ -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 校验
配置文件加载后进行严格校验: