work-order-monitor/README.md

138 lines
4.4 KiB
Markdown
Raw Permalink Normal View History

2026-03-31 17:08:30 +08:00
# 工单系统监测
基于 **Tauri 2.x + Vue 3 + TypeScript** 的工单监测桌面应用,用于监测 CRM 系统的待处理工单并发送系统通知。
## 环境要求
- Node.js >= 18
- Ruststable
- Visual Studio Build ToolsWindows含 C++ 工具链)
- pnpm
**推荐 IDE** [VS Code](https://code.visualstudio.com/) + [Vue - Official](https://marketplace.visualstudio.com/items?itemName=Vue.volar) + [Tauri](https://marketplace.visualstudio.com/items?itemName=tauri-apps.tauri-vscode) + [rust-analyzer](https://marketplace.visualstudio.com/items?itemName=rust-lang.rust-analyzer)
## 开发
```bash
# 安装依赖
pnpm install
# 启动开发模式(前端 + Tauri
pnpm run tauri-dev
# 仅启动前端开发服务器
pnpm run dev
```
## 构建
签名密钥已包含在项目中(`.tauri/` 目录),构建脚本会自动加载,直接运行:
```bash
pnpm run tauri-build
```
构建产物位于 `src-tauri/target/release/bundle/nsis/`
## 版本号管理
使用自定义脚本统一更新 `package.json`、`tauri.conf.json`、`Cargo.toml` 三个文件的版本号:
```bash
pnpm run version:patch # 补丁版本 x.y.Z → x.y.Z+1
pnpm run version:minor # 次版本 x.Y.z → x.Y+1.0
pnpm run version:major # 主版本 X.y.z → X+1.0.0
pnpm run version -- 1.2.3 # 指定版本号
```
## 发布
构建完成后,运行发布脚本将安装包和更新元数据上传到远程服务器:
```bash
pnpm run publish -- --notes "更新说明"
```
脚本会自动:
1. 从构建产物中读取 `.nsis.zip``.nsis.zip.sig`
2. 生成 `update.json`(供应用内自动更新使用)
3. 通过 SCP 上传到服务器 `192.168.2.127:/var/www/html/work-order-monitor/`
更新地址:`http://web.nps.yunvip123.cn/work-order-monitor/update.json`
## 完整发版流程
```bash
# 1. 更新版本号
pnpm run version:minor
# 2. 构建
pnpm run tauri-build
# 3. 发布到服务器
pnpm run publish -- --notes "v0.3.0 新功能说明"
```
或一键构建 + 发布:
```bash
pnpm run release
```
## 签名密钥
项目已内置 updater 签名密钥(`.tauri/signing-key` 和 `.tauri/signing-key.pub`),无密码保护,任何人克隆项目后即可直接构建。
如需重新生成密钥:
```bash
pnpm tauri signer generate -w .tauri/signing-key -p "" --ci -f
```
生成后需将 `.tauri/signing-key.pub` 的内容更新到 `src-tauri/tauri.conf.json``plugins.updater.pubkey` 字段。
## 项目结构
```
src/ # 前端Vue 3
├── App.vue # 主界面
├── stores/monitor.ts # Pinia 状态管理(核心业务逻辑)
├── components/
│ ├── MonitorControl.vue # 监测面板(工单数据卡片)
│ ├── LoginForm.vue # 登录表单
│ ├── SettingsPanel.vue # 配置面板
│ ├── StatusHeader.vue # 顶部状态栏
│ ├── LogViewer.vue # 日志查看器
│ ├── CloseDialog.vue # 关闭确认弹窗
│ └── UpdateDialog.vue # 更新确认弹窗
src-tauri/ # Rust 后端
├── src/lib.rs # 应用初始化、插件注册
├── src/notification.rs # Windows Toast 通知
├── tauri.conf.json # Tauri 配置
├── capabilities/default.json # 权限配置
scripts/
├── build.mjs # 构建(自动加载签名密钥)
├── bump-version.mjs # 版本号管理
└── publish.mjs # 构建发布
```
## 监测的 API
| 接口 | 说明 | 触发通知条件 |
| ----------------------------------- | ---------------- | ------------------------------------------------ |
| `SystemUser/Login` | 登录获取 Session | - |
| `DemandManage/QueryIndexCount` | 工单统计 | PendingCount / StaycloseCount / ConfirmCount > 0 |
| `DemandManage/GetWorkOrderListPage` | 待审核工单列表 | DataCount > 0 |
## Tauri 插件
- `tauri-plugin-http` — HTTP 请求
- `tauri-plugin-notification` — 系统通知
- `tauri-plugin-autostart` — 开机自启动
- `tauri-plugin-opener` — 打开外部链接
- `tauri-plugin-updater` — 应用内自动更新
- `tauri-plugin-process` — 进程管理(重启)