diff --git a/.claude/CLAUDE.md b/.claude/CLAUDE.md new file mode 100644 index 0000000..593e324 --- /dev/null +++ b/.claude/CLAUDE.md @@ -0,0 +1,124 @@ +# CLAUDE.md + +This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository. + +## 项目概述 + +这是一个基于 **Tauri 2.x + Vue 3** 的工单监测桌面应用,用于监测 CRM 系统(crm.yunvip123.com)的待处理工单并发送系统通知。 + +## 常用命令 + +项目使用 **pnpm** 作为包管理器。 + +```bash +# 启动开发模式(前端 + Tauri) +pnpm run tauri-dev + +# 仅启动前端开发服务器 +pnpm run dev + +# 前端类型检查 + 构建 +pnpm run build + +# 构建 Tauri 生产版本(含签名/安装包) +pnpm run tauri-build + +# 构建并发布 +pnpm run deploy + +# 版本号管理(默认 patch) +pnpm run version # patch +pnpm run version:minor +pnpm run version:major + +# 代码检查 +pnpm run lint +pnpm run lint:fix + +# 规范提交(commitizen + cz-git) +pnpm run commit + +# Rust 后端检查 +cd src-tauri && cargo check +cd src-tauri && cargo clippy +``` + +## 架构概述 + +**前端驱动架构**:所有业务逻辑(API 调用、定时任务、通知)都在 Vue 前端实现,Rust 后端仅负责系统级功能(窗口管理、插件注册)。 + +### 前端分层(src/) + +**Stores(Pinia)**: + +- `stores/monitor.ts` — 核心业务:登录、轮询检查工单、推迟/暂停逻辑、托盘联动 +- `stores/app.ts` — 全局配置(轮询间隔、自启动、静默启动等),配置持久化到 `localStorage`(key: `crm_config`) +- `stores/log.ts` — 运行日志管理 +- `stores/network.ts` — 网络状态检测 + +**Composables**: + +- `composables/useNotification.ts` — 系统通知封装(`tauri-plugin-notification`) +- `composables/useTray.ts` — 系统托盘创建、图标/菜单动态更新 +- `composables/useUpdater.ts` — 应用自动更新(`tauri-plugin-updater`) +- `composables/useMonitor.ts` — 监测相关辅助逻辑 + +**Constants**: + +- `constants/api.ts` — 所有 API URL 集中定义(`LOGIN_URL`、`CHECK_URL`、`WORK_ORDER_URL`) +- `constants/app.ts` — 应用级常量 + +**Utils**: + +- `utils/storage.ts` — localStorage 读写封装 +- `utils/common.ts` — 通用工具函数(`formatTime` 等) + +### Rust 后端(src-tauri/src/) + +- `lib.rs` — 应用初始化、插件注册、窗口关闭事件处理(关闭→隐藏到托盘,发出 `close-requested` 事件) + +### 关键数据流 + +1. `App.vue` 初始化:加载配置 → 加载凭据 → 初始化托盘 → 监听通知动作事件 + 关闭事件 +2. `monitorStore.startMonitoring()` 执行登录(密码或 Token 模式),成功后启动 `setInterval` 轮询 +3. 工单有待处理项时调用 `useNotification.notify()`,通知动作(推迟/去处理)通过 Tauri 事件回传 +4. 托盘图标/菜单通过 `watch([isMonitoring, isPostponed, ticketCounts])` 自动同步 + +### API 集成 + +- 登录:`POST https://crm.yunvip123.com/api/SystemUser/Login` +- 工单查询:`GET https://crm.yunvip123.com/api/DemandManage/QueryIndexCount` +- 认证方式:登录响应 `set-cookie` 中提取 `ASP.NET_SessionId`,后续请求携带 +- HTTP 白名单配置在 `src-tauri/capabilities/default.json` + +### 通知触发条件 + +当 `PendingCount`(待处理)、`StaycloseCount`(待关闭)、`ConfirmCount`(待确认)任意 > 0 时触发。 + +## 代码规范 + +- Vue 组件使用 `