# 个人工具箱 (Personal ToolBox) 需求与设计文档 **文档版本:** V1.0 **目标平台:** Windows 10 / Windows 11 ## 一、 技术栈推荐 (Tech Stack) 考虑到这是一款纯 Windows 平台的本地工具,且需要涉及**全局快捷键注册**、**系统托盘**、**开机自启动**以及**本地文件操作**,我强烈推荐以下技术栈: * **开发语言与框架**:**C# + WPF (.NET 8)** * *推荐理由*:C# 是开发 Windows 桌面应用的最佳选择,调用底层 Windows API(如全局快捷键、托盘)非常稳定。WPF 支持高度定制的 UI,且性能优于 Electron。 * **UI 库**:**ModernWpf** 或 **MaterialDesignInXAML** * *推荐理由*:自带极简风格,原生支持**黑夜/白天模式一键切换**。 * **图标库**:内置 **FontAwesome** 或 **Segoe Fluent Icons**(Windows自带字体图标)。 * **数据存储**:**本地 JSON 文件** (`config.json`)。 * *推荐理由*:轻量,非常方便进行数据的导入/导出备份,不需要引入笨重的数据库。 --- ## 二、 核心功能需求 (PRD) ### 2.1 工具管理模块 * **手动添加/编辑**:用户可通过弹窗表单添加工具,字段包含: * `显示名称` (String, 必填) * `工具路径` (String, 支持选择文件或直接填写 URL) * `运行参数` (String, 选填) * `所属标签页` (String, 下拉选择或新建) * `工具图标` (从内置图标库中选择) * `全局快捷键` (选填,如 `Ctrl+Alt+T`) * **工具执行**:双击图标或点击运行按钮,程序根据路径和参数拉起对应工具(支持 `.exe`, `.bat`, `.py`, 网址等)。 ### 2.2 分类与检索 * **标签页分类 (Tabs)**:以标签页作为一级分类(如:开发工具、系统设置、常用脚本)。 * **全局搜索框**:位于界面顶部,输入关键字实时过滤当前所有工具,支持按名称检索。 ### 2.3 进阶功能 * **独立快捷键触发**:即使工具箱主窗口处于隐藏状态,只要在后台运行,按下为某工具设定的全局快捷键,即可直接运行该工具。 * **开机自启动**:在软件设置中提供开关,通过写入注册表或放入 Startup 文件夹实现静默自启(直接最小化到托盘)。 * **数据备份与容错机制(重点)**: * 支持导出/导入 `config.json` 文件。 * **容错处理**:程序启动或导入配置时,遍历所有工具的本地路径。若发现路径失效(文件缺失),**不删除该数据**,但在 UI 上将该工具置灰(或打上警告角标),同时在**底部信息打印栏**输出:`[警告] 工具 "XXX" 路径失效,找不到文件: D:\xxx.exe`。 --- ## 三、 UI 与交互设计 (UI/UX) ### 3.1 界面布局 (Layout) 采用经典的三段式布局: 1. **左侧导航区 (Left Panel)**: * 顶部:用户头像或软件 Logo。 * 中间:**标签页 (Tabs)** 列表,支持垂直切换(如:全部、组A、组B)。 * 底部:设置按钮(齿轮图标)、明暗主题切换按钮。 2. **右侧主内容区 (Main Panel)**: * 顶部:**搜索框** 和 “添加工具” 按钮。 * 中间:工具展示区。采用网格布局 (Grid),每个工具显示为一个小卡片,包含图标和自定义名称。 3. **底部信息栏 (Bottom Log Bar)**: * 高度固定(约 100px),可折叠或清空。 * 用于打印软件运行日志,如:`[2023-10-27 10:00] 成功启动:Postman`,`[错误] 快捷键 Ctrl+D 冲突,注册失败`。 ### 3.2 窗口形态与托盘交互 * **常规状态**:标准 Windows 窗体。 * **关闭/最小化行为**:点击右上角“X”或最小化时,默认**隐藏窗口而不是退出进程**。 * **系统托盘 (System Tray)**: * 常驻右下角托盘。 * **左键单击托盘图标**:呼出/隐藏主窗口。 * **右键单击托盘图标**:弹出菜单(显示主窗口、设置、退出)。 --- ## 四、 系统架构与数据模型 (SDD) ### 4.1 数据结构设计 (`config.json`) 为了满足数据备份和恢复的需求,配置文件的结构建议如下: ```json { "Settings": { "Theme": "Dark", "AutoStart": true }, "Categories": [ { "Id": "1", "Name": "开发工具" }, { "Id": "2", "Name": "常用脚本" } ], "Tools": [ { "Id": "uuid-0001", "Name": "内网穿透小工具", "IconCode": "f0c2", // 内置图标库的字符编码 "Path": "D:\\tools\\ngrok.exe", "Arguments": "http 8080", "CategoryId": "1", "HotKey": "Ctrl+Shift+N" } ] } ``` ### 4.2 核心模块逻辑描述 1. **启动逻辑 (Startup)**: * 读取 `config.json` -> 渲染 UI -> 验证工具路径 -> 若缺失,打印日志到底部信息栏 -> 注册全局快捷键 -> 根据设置决定是否显示主窗口。 2. **执行逻辑 (Execution)**: * 使用 C# 的 `System.Diagnostics.Process.Start(Path, Arguments)` 方法执行。如果执行失败(如权限不足),在底部信息栏打印 Exception 错误信息。 3. **全局快捷键拦截 (Global Hooks)**: * 使用 Windows API `RegisterHotKey` 进行系统级键盘钩子注册。当捕获到设定的组合键时,触发对应的 `Process.Start` 事件。