# system-env **Repository Path**: JackTim/system-env ## Basic Information - **Project Name**: system-env - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-05-12 - **Last Updated**: 2026-05-20 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 系统服务管理器 一个强大的**双环境服务管理工具**,支持 **Java JAR 服务** 和 **Python 脚本服务** 的完整生命周期管理。提供 **GUI 桌面应用** 和 **Web 仪表盘** 两种操作方式,附带文件上传部署、网络端口监控、用户认证等功能。 ## ✨ 主要功能 ### 🖥️ GUI 桌面应用 - 🚀 **双环境支持**: 统一管理 Java JAR 服务和 Python 脚本服务 - 📊 **实时监控**: 彩色控制台输出,日志文件自动监控 - 💾 **配置持久化**: 窗口布局、服务配置、进程号自动保存 - 🔍 **智能解析**: ANSI 颜色代码解析,日志级别着色 - 🎯 **唯一标识**: 基于 Hash 的服务识别,避免重名问题 - ⚡ **状态控制**: 按钮智能启用/禁用,防止误操作,Web 服务运行中禁用操作按钮 - 🔄 **托盘图标**: 最小化到系统托盘,后台运行,支持托盘右键菜单 - 🔐 **关闭确认**: 可选的关闭对话框,防止误关闭 - 🔌 **端口检测**: 创建/编辑服务时自动检测端口冲突 - 🔘 **分组工具栏**: 按钮按功能分组(服务管理 / Web / 日志 / 主题),竖线分隔 - 📋 **下拉菜单**: 「❗ 批量操作」和「☰ 更多」采用弹出菜单,收纳低频操作 - 🚀 **开机自启动**: 支持 Windows(注册表)、Linux(autostart)、macOS(LaunchAgent)三平台 - 🔄 **服务自动恢复**: 为单个服务标记「启动时自动恢复」,软件意外关闭后自动重启 - 🖥️ **隐藏命令行窗口**: Java 服务支持隐藏控制台窗口(Windows 下 `CREATE_NO_WINDOW`) - 🔍 **端口/IP 进程查询**: 独立对话框查询端口、IP 相关进程,支持批量结束进程 - ⏱️ **自动刷新调度**: 支持定时间隔和 Cron 表达式两种模式,自动刷新服务状态 - 🔄 **刷新按钮**: 一键刷新服务配置列表 - 🔍 **服务搜索**: 左侧面板搜索框实时过滤服务列表 - ☑ **全选/反选**: 服务卡片多选操作,批量启动/停止 - 🎨 **全局圆角滚动条**: 自定义 Canvas 绘制的圆角滑块,支持亮/暗主题 - 📦 **JVM 参数批量导入**: 预设常用 JVM 参数组(通用开发、高并发生产、微服务、低内存),带参数说明预览 - 🛡️ **对话框关闭保护**: 配置未保存时弹窗确认关闭 - 🔍 **服务搜索过滤**: 面板搜索框实时过滤服务列表 - 🎯 **多环境切换**: 运行中可切换 Java/Python 环境,自动重启应用 ### 🌐 Web 仪表盘 - 🔐 **用户登录认证**: 基于 SHA-256 密码哈希和会话 Token 的登录系统 - 👤 **用户管理**: GUI 端支持用户增删改查、密码重置 - 📊 **总览仪表盘**: 服务状态、资源使用、端口占用概览 - 🔌 **端口监控**: 实时显示端口占用状态、冲突检测 - 📤 **文件上传**: 支持 ZIP/RAR 格式,分片上传(最大 500MB) - 📦 **上传并解压**: 上传压缩包后自动解压到目标目录 - 🗜️ **打包并部署**: 从分散文件打包成 ZIP 并部署 - 📁 **目录选择器**: 可视化浏览和选择目录(跨平台支持) - ⏱️ **实时进度**: SSE 技术实现真实进度推送 - 🌓 **主题切换**: 支持亮色/夜间模式,自动跟随系统 - 💾 **配置记忆**: 表单配置和目录选择自动保存 - 📱 **响应式设计**: 适配不同屏幕尺寸 - 📜 **部署历史**: 记录每次部署的详细信息,支持在线下载 - 📋 **日志查看**: 在线浏览服务日志内容 - 🗂️ **日志类型管理**: 查看和管理服务的多类型日志文件 ### 🐍 Python 环境管理 - 📝 **脚本配置**: Python 脚本路径、解释器、参数配置 - 🔧 **虚拟环境**: 自动检测、创建和管理虚拟环境 (venv) - 📦 **Pip 镜像源**: 镜像源列表管理,一键切换,支持测试连接 - 🔍 **路径扫描**: 自动扫描系统 Python 安装路径 ### ☕ Java 环境管理 - ⚙️ **JVM 配置**: JVM 参数、应用参数、工作目录自定义,支持批量导入预设参数组 - 🔗 **JDK 管理**: 扫描系统 JDK 路径,默认 JDK 设置 - 🐞 **调试支持**: 远程调试配置 (端口、Suspend 模式) - 💚 **健康检查**: HTTP 请求检测服务 UP/DOWN 状态 - 🖥️ **隐藏命令行窗口**: Java 进程支持静默启动,不弹出控制台窗口 ### 🔌 端口管理 - 🔍 **端口扫描**: 扫描系统所有监听端口及占用进程 - 🔍 **端口/IP 进程查询**: 输入端口号或 IP 地址,查询相关网络连接进程,支持批量 kill - ⚡ **冲突检测**: 创建/编辑服务时自动检测端口是否被占用 - 📋 **状态展示**: 仪表盘展示所有已配置服务的端口状态 - 🛡️ **智能提示**: 端口冲突时弹窗确认,防止无感知覆盖 ### 🎨 UI 美化 - 🎨 **全局圆角滚动条**: 自定义 Canvas 绘制,四角圆弧滑块,支持拖拽、点击轨道跳转 - 🌗 **亮/暗主题切换**: 滚动条跟随主题自动变色(亮色滑块、暗色滑块) - 🪟 **圆角窗口**: 对话框和面板采用圆角视觉设计 ## 🏗️ 架构设计 项目采用**策略模式 (Strategy Pattern)** 统一管理多运行环境: ``` EnvironmentStrategy (抽象基类) ├── JavaEnvironmentStrategy → Java 服务管理 └── PythonEnvironmentStrategy → Python 脚本管理 EnvironmentFactory → 注册和创建策略实例 ``` 通过 `EnvironmentType` 枚举扩展新环境类型,预留了 Node.js、Go、.NET 等扩展点。 **关键设计模式**: - **观察者模式**: 配置文件变化监听 (`ConfigWatcher`)、日志监控 (`LogWatcher`) - **工厂模式**: 环境策略工厂 (`EnvironmentFactory`) - **命令模式**: 工具栏按钮命令回调分离 - **MVC 架构**: Web 端使用 Service 层分离业务逻辑 ## 📁 项目结构 ``` system-env/ ├── run.py # 程序入口(GUI + Web) ├── build.py # 跨平台打包脚本(PyInstaller) ├── headless_cli.py # 无 GUI 模式独立入口 ├── migrate_to_db.py # JSON 配置迁移至 SQLite ├── optimize_icon.py # 图标优化工具 ├── requirements.txt # 依赖列表 ├── java_config.json # Java 服务配置 ├── python_config.json # Python 服务配置 ├── global_config.json # 全局配置 ├── src/ # GUI 源代码 │ ├── __init__.py # 版本号 │ ├── main_app.py # 主应用窗口(协调各模块) │ ├── config/ │ │ ├── config_manager.py # 配置加载/保存(JSON + SQLite) │ │ ├── db_config_manager.py # SQLite 数据库配置管理 │ │ └── environment_types.py # 环境类型枚举 │ ├── core/ │ │ ├── environment_strategy.py # 策略模式基类 + 工厂 │ │ ├── process_manager_base.py # 进程管理基类 │ │ ├── process_manager.py # JAR 进程管理器 │ │ ├── python_process_manager.py # Python 进程管理器 │ │ ├── service_manager.py # 服务生命周期管理器 │ │ ├── log_watcher.py # 日志文件监控(限速、滚动粘滞) │ │ ├── port_manager.py # 网络端口管理器 │ │ ├── web_service_manager.py # Web 服务管理(异步启动/停止) │ │ ├── auth.py # 用户认证模块(SHA-256 + 会话管理) │ │ ├── auto_start.py # 开机自启动管理(三平台) │ │ ├── auto_refresh_scheduler.py # 自动刷新调度器(间隔/Cron) │ │ └── config_watcher.py # 配置文件变化监听 │ ├── strategies/ │ │ ├── java_strategy.py # Java 环境策略 │ │ └── python_strategy.py # Python 环境策略 │ ├── envs/ │ │ ├── java_env/ │ │ │ └── ui/ # Java 配置对话框 │ │ │ ├── java_config_dialog.py │ │ │ └── jdk_settings_dialog.py │ │ └── python_env/ │ │ ├── ui/ # Python 配置对话框 │ │ │ ├── python_settings_dialog.py │ │ │ └── script_config_dialog.py │ │ └── venv_manager.py # 虚拟环境管理器 │ ├── ui/ │ │ ├── ui_components.py # UI 通用组件(服务配置、日志扫描) │ │ ├── service_card.py # 服务卡片组件 │ │ ├── service_panel.py # 服务列表面板(搜索、多选) │ │ ├── config_dialog_base.py # 配置对话框基类 │ │ ├── toolbar_manager.py # 工具栏管理器 │ │ ├── tray_manager.py # 系统托盘管理器 │ │ ├── theme_manager.py # 主题管理器 │ │ ├── rounded_scrollbar.py # 自定义圆角滚动条 │ │ ├── port_query_dialog.py # 端口/IP 进程查询对话框 │ │ ├── user_manager.py # 用户管理对话框 │ │ └── environment_selector.py # 环境选择对话框 │ └── utils/ │ └── log_parser.py # 日志解析器 ├── web/ # Web 端源代码 │ ├── main.py # FastAPI 应用(路由+API) │ ├── services/ │ │ ├── dashboard_service.py # 仪表盘数据服务 │ │ ├── upload_service.py # 上传服务 │ │ ├── package_service.py # 打包服务 │ │ ├── deployment_service.py # 部署历史管理 │ │ ├── log_service.py # 日志管理服务 │ │ └── service_service.py # 服务管理 API │ ├── templates/ │ │ ├── dashboard.html # 仪表盘主页 │ │ ├── login.html # 登录页 │ │ └── envs/ │ │ └── python_env/html/ # Python 环境 Web 管理 │ └── static/ │ ├── js/ │ │ ├── index.js # 仪表盘主 JavaScript │ │ ├── login.js # 登录页 JavaScript │ │ ├── component-loader.js # 组件加载器 │ │ ├── theme.js # 主题管理 │ │ └── toast.js # 提示组件 │ └── components/ │ └── directory-picker.html # 目录选择器 ├── docker/ # Docker 部署 │ ├── Dockerfile │ ├── docker-compose.yml │ └── start.sh ├── docs/ # 文档 │ ├── PROJECT_STRUCTURE.md │ └── LOG_PARSER_GUIDE.md └── resources/ # 资源文件 └── app.png ``` ## 🚀 快速开始 ### 环境要求 - Python 3.7+ - Tkinter(通常随 Python 一起安装) ### 安装依赖 ```bash # GUI 依赖 pip install psutil pystray # Web 端依赖 pip install fastapi uvicorn jinja2 aiofiles python-multipart ``` ### 运行程序 #### 方式1:GUI 桌面应用 ```bash python run.py ``` **启动流程**: 1. 显示环境选择对话框(Java / Python) 2. 启动 Tkinter GUI 主界面 3. 自动启动 Web 服务(默认 http://localhost:8000) 4. 系统托盘图标支持 #### 方式2:仅 Web 服务(无 GUI 模式) ```bash python headless_cli.py --port 8000 ``` 或使用打包后的无 GUI 版本: ```bash 系统管理部署器-后台服务.exe --port 8080 ``` **访问地址**: - 仪表盘: http://localhost:8000(需登录) - 默认账号: `admin` / `.2025@LMT` - API文档: http://localhost:8000/docs ### 打包构建 ```bash python build.py ``` 自动检测平台并打包为可执行文件: - **Windows**: `系统管理部署器.exe` + `系统管理部署器-后台服务.exe`(无 GUI) - **Linux**: `系统管理部署器` (ELF) - **macOS**: `系统管理部署器.app` ## 📖 使用指南 ### GUI 桌面应用 #### 1. 工具栏概览 工具栏按钮按功能分组,使用竖线分隔: | 分组 | 按钮 | 功能说明 | |------|------|----------| | **① 服务管理** | ▶ 全部启动 / ⏹ 全部停止 | 一键启停所有服务 | | | ❗ 批量操作 | 弹出菜单 → 启动选中 / 停止选中 | | | 🔄 刷新 | 从配置文件重新加载服务列表 | | | ⚙ JDK设置 / ⚙ Python设置 | 打开环境配置对话框 | | **② Web** | 🌐 启动Web / 🌐 打开Web | 启动或打开 Web 仪表盘 | | **③ 日志** | 🔄 刷新日志 | 手动刷新控制台日志 | | | ▶ 监控日志 / ⏹ 监控日志 | 开启/关闭日志自动跟随 | | **④ 主题 & 更多** | 🌙 主题 / ☀️ 主题 | 切换亮色/夜间模式 | | | ☰ 更多 ▼ | 弹出菜单(端口查询、停止Web、用户管理等) | | | ✅ 开机启动 / ⬜ 开机启动 | 切换应用开机自启动状态 | | | 版本号 (v5.12) | 当前软件版本标识 | > "☰ 更多 ▼" 菜单包含:🔍 端口查询 / 📋 应用日志 / 🗑 清空当前日志 / 🗑 清空全部日志 / 👤 用户管理 / ⏹ 停止Web服务 / ⚙️ Web端口设置 / 📥 最小化到托盘 / ☕ 切换环境 #### 2. 选择环境 启动时选择要管理的环境类型: - **Java 环境**: 管理 JAR 服务 - **Python 环境**: 管理 Python 脚本服务 运行中可通过 "☰ 更多 ▼ → ☕ 切换环境" 切换,应用自动重启。 #### 3. 添加服务 1. 点击左上角 "➕ 新增" 按钮 2. 选择服务类型(Java JAR / Python 脚本) 3. 填写配置信息(路径、参数、端口等) 4. Java 服务支持**隐藏命令行窗口**(Windows 下静默启动) 5. 支持勾选「启动时自动恢复」 6. 点击 "保存"(端口冲突时将自动检测并提示) #### 4. 服务搜索与多选 - **搜索**: 左侧面板搜索框实时过滤服务列表 - **全选/反选/取消全选**: 面板顶部按钮批量操作 - 配合 "❗ 批量操作" 菜单批量启停 #### 5. 启动服务 - 点击服务卡片上的 "▶ 启动" 按钮 - 在右侧控制台查看实时日志 #### 6. 查看日志 - **控制台**: 实时显示服务输出(带颜色,日志限速抗卡顿) - **日志标签**: 点击 "👁 日志" 查看历史日志文件 #### 7. 停止服务 - 点击服务卡片上的 "⏹ 停止" 按钮 - 或点击 "⏹ 全部停止" 停止所有服务 - 停止 Web 服务:点击 "☰ 更多 ▼" → "⏹ 停止Web服务" #### 8. 端口检测与查询 - **创建/编辑时**: 系统自动检测端口是否被占用,冲突时弹窗确认 - **端口查询**: 点击 "☰ 更多 ▼ → 🔍 端口查询",输入端口号或 IP 查看相关进程,支持批量 kill #### 9. JVM 参数批量导入 打开 Java 服务配置 → JVM 参数输入框旁点击 "📥 导入示例": 1. 对话框列出 18 个常用 JVM 参数作用说明 2. 点击预设按钮(通用开发 / 高并发生产 / 微服务 / 低内存) 3. 弹出预览窗口,逐参数查看说明 4. 确认后自动填入 JVM 参数文本框 --- ### Web 仪表盘 #### 1. 用户登录 访问 http://localhost:8000,首次使用默认账号登录: - 用户名: `admin` - 密码: `.2025@LMT` 可在 GUI 端 "☰ 更多 ▼ → 👤 用户管理" 中修改密码或新增用户。 #### 2. 总览仪表盘 查看: - **服务概览**: 总服务数、运行中、异常数量 - **端口状态**: 已占用端口列表、冲突检测结果 - **最近活动**: 近期操作日志 #### 3. 端口监控 仪表盘中的端口区域展示: - 系统所有监听端口及占用进程 - 已配置服务的端口状态(正常/冲突/系统占用) - 点击可查看详细信息(进程 PID、名称、连接状态) #### 4. 上传并解压 **适用场景**:已有打包好的 ZIP/RAR 应用 **步骤**: 1. 访问上传页面 2. 切换到 "上传并解压" 选项卡 3. 选择目标目录(支持可视化浏览) 4. 拖拽或点击上传 ZIP/RAR 文件 5. 等待自动解压完成 #### 5. 打包并部署 **适用场景**:需要从多个目录组装应用 **步骤**: 1. 切换到 "打包并部署" 选项卡 2. 填写服务名称 3. 选择 JAR 文件路径(必填) 4. 选择 Lib / Resources 目录(可选) 5. 选择部署目录(必填) 6. 勾选 "自动创建服务配置" 7. 点击 "📦 打包并部署" ## 🔧 高级功能 ### 策略模式扩展 预留的环境类型(`src/config/environment_types.py`): ```python class EnvironmentType(Enum): JAVA = "java" PYTHON = "python" # NODEJS = "nodejs" # 预留 # GO = "go" # 预留 # DOTNET = "dotnet" # 预留 ``` 新增环境只需实现 `EnvironmentStrategy` 接口并注册到工厂。 ### 开机自启动 支持三平台开机自启,无需额外配置: - **Windows**: 写入启动文件夹快捷方式 - **Linux**: 创建 `~/.config/autostart/system-manager.desktop` 桌面文件 - **macOS**: 创建 `~/Library/LaunchAgents/com.systemmanager.plist` LaunchAgent 点击工具栏的「✅ 开机启动 / ⬜ 开机启动」按钮即可一键切换,状态实时显示。 ### 服务自动恢复 为重要服务开启「启动时自动恢复」,软件意外关闭后重新打开时会自动重启这些服务: 1. **配置**: 在新增/编辑服务的对话框中找到「启动选项」分组 2. **勾选**: "应用启动时自动重启此服务" 3. **确认**: 保存后服务卡片显示「🔄 启动时自动恢复」徽标 4. **生效**: 下次启动软件时,该服务将自动启动(仅当 PID 未匹配到运行中进程时) ### 自动刷新调度 支持两种刷新模式: - **简单间隔**: 每 N 秒/分钟刷新一次服务状态 - **Cron 表达式**: 使用标准 5 字段 Cron 定时刷新(如 `*/5 * * * *` 每5分钟) 由 `AutoRefreshScheduler` 模块通过 tkinter `after()` 实现,无额外依赖。 ### 配置文件自动监听 `ConfigWatcher` 每 3 秒检测配置文件变更哈希,发现变化自动刷新 UI,确保多端操作同步。 ### 隐藏命令行窗口 Java 服务支持隐藏控制台窗口(Windows 平台): - 在服务配置对话框中勾选「隐藏命令行窗口」 - 底层使用 `subprocess.CREATE_NO_WINDOW` 标志 - 启动后 Java 进程在后台静默运行,无终端弹出 ### 用户认证 Web 端登录认证系统: - SHA-256 密码哈希存储 - 24 小时会话过期 - 基于 Token 的访问控制 - GUI 端支持用户管理(增删改查、密码重置) ### PID 持久化 即使程序意外关闭,下次启动时也能检测到仍在运行的服务。 ### Hash 唯一标识 每个服务都有唯一的 Hash 标识(基于路径生成),确保: - 服务名可以重复 - 修改服务名不影响 PID 关联 - 精确匹配,不会操作错误的服务 ### 日志智能解析 自动识别日志级别并着色,支持日志输出限速防止 UI 卡顿,滚动自动粘滞: - 🔴 ERROR - 红色 - 🟡 WARN - 黄色 - 🟢 INFO - 绿色 - ⚪ DEBUG - 灰色 ### SQLite 数据库 支持将 JSON 配置文件迁移至 SQLite 数据库: ```bash python migrate_to_db.py ``` - 统一的 `services` 表管理所有环境服务 - CRUD 操作支持 - JSON ↔ 数据库双向兼容 ### 打包部署 使用 PyInstaller 跨平台打包: - 自动检测操作系统 - 图标自动转换(PNG → ICO / ICNS) - 包含完整 Web 资源和配置文件 - 单文件可执行,免安装 - 同时输出 GUI 版和纯后台服务版 ### 无 GUI 模式(Headless) 通过 `headless_cli.py` 或打包后的 `-后台服务.exe` 启动纯 Web 服务模式: - 不显示 Tkinter 窗口 - 适用于服务器后台运行 - 支持 `--port` 参数自定义端口 - 最小化资源占用 ## 📚 文档 ### 详细文档 - [项目结构说明](docs/PROJECT_STRUCTURE.md) - [日志解析器使用指南](docs/LOG_PARSER_GUIDE.md) ### Web 端技术栈 - **后端**: FastAPI + Uvicorn - **前端**: Jinja2 + 原生 JavaScript - **实时通信**: Server-Sent Events (SSE) - **组件化**: 自定义 ComponentLoader - **样式**: CSS3 + 夜间模式支持 - **认证**: Token-based 会话管理 ### API 文档 启动 Web 服务后访问: - Swagger UI: http://localhost:8000/docs - ReDoc: http://localhost:8000/redoc **主要接口**: | 接口 | 功能 | |------|------| | `POST /api/auth/login` | 用户登录,获取 Token | | `GET /api/stats` | 获取仪表盘统计数据(含端口信息) | | `GET /api/ports/scan` | 扫描系统所有占用端口 | | `GET /api/ports/check?port=xxx` | 检查单个端口是否被占用 | | `GET /api/ports/conflicts` | 检测服务配置端口冲突 | | `POST /api/services` | 创建服务(含端口冲突检测) | | `PUT /api/services/{id}` | 更新服务(含端口冲突检测) | | `GET /api/services/{name}/logs?type=xxx` | 获取服务日志 | | `GET /api/services/{name}/deployments` | 获取部署历史 | | `POST /api/upload/chunk` | 上传文件分片 | | `POST /api/upload/merge` | 合并分片并解压 | | `POST /api/upload/package` | 打包并部署(SSE) | ## 🛠️ 开发 ### 目录说明 #### GUI 端 - `src/` - 主应用入口和模块入口 - `src/config/` - 配置管理(JSON + SQLite) - `src/core/` - 核心功能(进程管理、日志监控、端口管理、认证、定时任务) - `src/strategies/` - 环境策略实现(策略模式) - `src/envs/` - 各环境特有模块 - `src/ui/` - UI 组件(工具栏、托盘、主题、滚动条、对话框) - `src/utils/` - 工具函数 #### Web 端 - `web/main.py` - FastAPI 应用入口 - `web/services/` - 业务逻辑层(MVC架构) - `web/templates/` - Jinja2 模板 - `web/static/js/` - JavaScript 模块 - `index.js` - 仪表盘主逻辑 - `login.js` - 登录页逻辑 - `component-loader.js` - HTML组件加载器 - `theme.js` - 主题管理器 - `toast.js` - 提示组件 - `web/static/components/` - HTML组件库 ### 添加新功能 #### GUI 端 参考 [docs/PROJECT_STRUCTURE.md](docs/PROJECT_STRUCTURE.md) 中的开发指南。 #### 添加新环境 1. 在 `EnvironmentType` 枚举中添加新类型 2. 实现 `EnvironmentStrategy` 接口 3. 实现对应 `ProcessManager`(继承自 `ProcessManagerBase`) 4. 创建配置对话框 5. 注册策略到 `EnvironmentFactory` ## 📝 更新日志 ### v5.12 (2026-05-20) - ✅ **新增 GUI 功能** - 🔍 **端口/IP 进程查询对话框**: 独立窗口查询端口、IP 相关的网络连接进程,支持批量结束进程 - 🖥️ **Java 隐藏命令行窗口**: 配置 Java 服务时支持隐藏控制台窗口(`CREATE_NO_WINDOW`) - 🔄 **刷新按钮**: 工具栏新增「🔄 刷新」按钮,一键从配置文件重新加载服务列表 - 🔍 **服务搜索**: 左侧面板搜索框实时过滤服务列表 - ☑ **全选/反选**: 服务卡片多选操作(全选、取消全选、反选) - 🛡️ **对话框关闭保护**: 配置未保存时弹窗确认关闭 - 📦 **JVM 参数批量导入**: 预设 4 组常用 JVM 参数(通用开发/高并发/微服务/低内存),带参数说明预览 - 🔍 **刷新服务管理**: 操作后自动刷新服务列表,保持 UI 同步 - ✅ **自动刷新调度器** - 支持简单间隔(每 N 秒/分钟)和 Cron 表达式两种模式 - 基于 tkinter `after()` 实现,零额外依赖 - ✅ **配置文件自动监听** - `ConfigWatcher` 每 3 秒检测配置文件变化,自动刷新 UI - 确保多端操作配置文件实时同步 - ✅ **Web 端增强** - **用户登录认证**: SHA-256 密码哈希 + 24 小时会话 Token - **用户管理**: GUI 端支持用户增删改查、密码重置 - **部署历史**: 记录每次部署的详细信息,支持在线下载 - **日志查看**: 在线浏览服务日志内容 - **日志类型管理**: 查看和管理服务的多类型日志文件 - ✅ **日志性能优化** - 日志输出限速(高频率输出时主动节流) - 滚动自动粘滞切换 - ✅ **全局 UI 美化** - **圆角滚动条**: 自定义 Canvas 绘制的四角圆弧滑块,替代原生滚动条 - 所有 scrollable Canvas 补全鼠标滚轮绑定(5 处修复) - 圆角滚动条支持亮/暗主题自动切换 ### v5.11 (2026-05-15) - ✅ **无 GUI 模式 (Headless)** - `headless_cli.py` 独立入口,仅启动 Web 服务 - 打包时同时输出 GUI 版和纯后台服务版 - ✅ **Docker 部署支持** - Dockerfile + docker-compose.yml - 构建模式选择(GUI/无 GUI) - ✅ **多环境切换** - 运行中通过「☰ 更多 ▼ → ☕ 切换环境」切换 Java/Python - 应用自动重启加载新环境 - ✅ **应用日志监控标签页** - 独立标签页展示应用自身运行日志 - ✅ **双环境打包优化** - `.spec` 配置文件区分 GUI 版和后台服务版 - 平台图标自动适配(Windows ICO / macOS ICNS) ### v5.10 (2026-05-13) - ✅ 工具栏**布局优化**: 按钮分组 + 竖线分隔 + 弹出菜单 - ✅ Web 服务停止日志去重 - ✅ 新增**开机自启动**功能(三平台) - ✅ 新增**服务自动恢复**功能 ### v5.9 (2026-05-12) - ✅ 新增**网络端口管理**功能 - 创建/编辑服务时自动检测端口冲突 - 仪表盘展示端口占用和冲突状态 - 跨平台端口扫描(psutil/netstat 回退) ### v5.8 (2026-05-10) - ✅ 添加 Web 仪表盘总览页面 - ✅ 新增 Python 环境管理 - Python 脚本进程管理器 - 虚拟环境创建和检测 - Pip 镜像源管理 ### v5.7 (2026-05-08) - ✅ 策略模式架构重构 - ✅ 双环境支持(Java + Python) - ✅ 环境选择器(启动时选择) - ✅ 统一的数据库配置管理 ### v5.6 (2026-05-06) - ✅ SQLite 数据库迁移支持 - ✅ 跨平台打包脚本(PyInstaller) - ✅ 图标自动转换 ### v5.5 (2026-05-04) - ✅ 添加 Web 界面(FastAPI + Jinja2) - ✅ 文件上传(分片上传,最大 500MB) - ✅ ZIP/RAR 自动解压部署 - ✅ 打包并部署(SSE实时进度) - ✅ 跨平台目录选择器 - ✅ HTML 组件化架构(ComponentLoader) - ✅ 亮色/夜间模式切换 - ✅ 配置持久化(localStorage) ### v5.4 (2026-05-04) - ✅ 项目结构模块化重构 - ✅ 服务 Hash 唯一标识 - ✅ 按钮状态智能控制 - ✅ 孤儿进程检测和停止 - ✅ PID 持久化和自动恢复 - ✅ 日志智能解析和彩色显示 ### v5.3 (2026-05-03) - ✅ 窗口尺寸和面板布局持久化 - ✅ JDK 全局设置对话框优化 - ✅ 日志监控系统增强 ## 🤝 贡献 欢迎提交 Issue 和 Pull Request! ## 📄 许可证 MIT License --- **版本**: v5.12 **作者**: System Manager Team **更新时间**: 2026-05-20 **技术栈**: Python 3.7+ | Tkinter | FastAPI | SSE | SQLite | 原生 JavaScript | Docker