You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

281 lines
7.6 KiB
Markdown

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# `call-client` 项目说明
## 1. 项目概览
当前项目是一个基于 `Tauri 2 + Vue 3 + TypeScript + Vite` 的桌面客户端,已从原 `Electron + Vue` 项目迁移出主要业务骨架。
当前已完成的核心能力包括:
- 登录窗口、主窗口、票号列表窗口三窗口流程
- 前端业务页面迁移
- Tauri 宿主适配层
- 配置文件读写
- 本地日志写入
- Session 内存状态管理
- 主窗口与票号列表窗口之间的事件通信
- 基础 Linux 打包目标配置
- `src-tauri/icons/` 图标资源已补齐
## 2. 根目录结构
以下是当前项目根目录中最重要的目录和文件:
```text
call-client/
├─ electron-sourcecode/ # 原 Electron/Vue 源码备份目录,迁移参考用
├─ src/ # 当前 Vue 前端源码
├─ src-tauri/ # 当前 Tauri Rust 宿主源码
├─ dist/ # 前端构建输出目录
├─ node_modules/ # 前端依赖
├─ package.json # 前端依赖与 npm 脚本
├─ package-lock.json # npm 锁文件
├─ vite.config.ts # Vite 构建配置
├─ tsconfig.json # 前端 TS 配置
├─ tsconfig.node.json # Node/Vite 侧 TS 配置
├─ TAURI-MIGRATION.md # 迁移设计文档
├─ TAURI-MIGRATION-TASKS.md # 当前迁移任务清单
└─ PROJECT_GUIDE.md # 当前这份项目说明文档
```
## 3. 前端目录说明
`src/` 下的关键结构如下:
```text
src/
├─ api/
│ └─ index.ts # 后端接口封装
├─ assets/
│ ├─ base.css # 基础样式
│ ├─ main.css # 全局样式入口
│ └─ wavy-lines.svg # 背景图资源
├─ host/
│ ├─ config.ts # Tauri 配置读写封装
│ ├─ dialog.ts # 原生确认框封装
│ ├─ events.ts # 窗口事件通信封装
│ ├─ logger.ts # 宿主日志封装
│ ├─ session.ts # Session 读写封装
│ ├─ types.ts # 宿主层公共类型
│ └─ window.ts # 窗口控制封装
├─ router/
│ └─ index.ts # 路由和路由守卫
├─ types/
│ ├─ action.ts # 主叫号业务类型
│ ├─ rank.ts # 评价/排队统计类型
│ ├─ ticket.ts # 票池类型
│ ├─ user.ts # 登录用户类型
│ ├─ window.ts # 服务窗口类型
│ ├─ http.ts # HTTP 响应类型
│ └─ element-plus-locale.d.ts # Element Plus locale 声明
├─ utils/
│ └─ service.ts # axios 实例和 baseURL/token 处理
├─ views/
│ ├─ LoginView.vue # 登录页
│ ├─ MainView.vue # 主叫号页
│ ├─ ServerSetupView.vue # 服务地址配置页
│ └─ TicketListView.vue # 票号列表页
├─ App.vue # 路由出口
└─ main.ts # Vue 应用入口
```
## 4. `src-tauri` 目录说明
`src-tauri/` 下的关键结构如下:
```text
src-tauri/
├─ src/
│ ├─ commands/
│ │ ├─ config.rs # 配置文件命令
│ │ ├─ events.rs # 事件发送命令
│ │ ├─ logger.rs # 文件日志命令
│ │ ├─ mod.rs # commands 模块导出
│ │ ├─ session.rs # Session 命令
│ │ └─ window.rs # 窗口创建/切换/退出命令
│ ├─ lib.rs # Tauri Builder 和命令注册入口
│ ├─ main.rs # Rust 程序入口
│ └─ state.rs # 全局内存状态
├─ capabilities/
│ └─ default.json # Tauri capability 配置
├─ Cargo.toml # Rust 依赖配置
├─ build.rs # Tauri 构建脚本
└─ tauri.conf.json # Tauri 应用与打包配置
```
补充说明:
- `src-tauri/target/` 是 Rust 编译产物目录
- 该目录可能会很大,通常不需要手动修改
## 5. 当前窗口流程
当前实现的窗口生命周期如下:
1. 应用启动后默认打开 `login` 窗口
2. Rust 端会预创建隐藏的 `main` 窗口
3. 登录成功并选择窗口后,关闭 `login`,显示 `main`
4.`main` 中可以打开 `ticketList` 子窗口
5. `ticketList` 可以通过事件驱动 `main` 执行呼叫或评价
6.`main` 中退出登录时,会重新显示 `login`
7.`main` 菜单中选择“退出程序”时,会真正退出整个应用
## 6. 如何运行开发环境
### 6.1 仅启动前端开发服务
在项目根目录执行:
```bash
npm run dev
```
说明:
- 该命令只启动 Vite 前端开发服务器
- 默认地址是 `http://localhost:1420`
### 6.2 构建前端
在项目根目录执行:
```bash
npm run build
```
说明:
- 会先执行 `vue-tsc --noEmit`
- 然后执行 `vite build`
- 构建结果输出到根目录 `dist/`
### 6.3 启动 Tauri 开发模式
在项目根目录执行:
```bash
npm run tauri dev
```
说明:
- 该命令会先执行 `npm run dev`
- 然后由 Tauri 启动桌面应用
- 需要本机已经安装 Rust / Cargo
如果本机没有安装 Rust/Cargo`tauri dev` 无法运行。
## 7. 如何打包
### 7.1 前提条件
打包前需要满足以下条件:
1. 本机已安装 Rust / Cargo
2. 本机已安装 Tauri 所需系统依赖
3. 已补齐 `src-tauri/icons/*` 图标资源
当前项目的 `tauri.conf.json` 已配置 Linux 打包目标:
- `deb`
- `appimage`
当前状态:
- `bundle.active` 已开启
- 已配置 Linux 打包目标 `deb``appimage`
- `src-tauri/icons/` 中已存在当前打包所需图标文件
### 7.2 构建前端产物
```bash
npm run build
```
### 7.3 执行 Tauri 打包
```bash
npm run tauri build
```
说明:
- 实际打包使用的是 `src-tauri/tauri.conf.json`
- 前端产物目录由 `frontendDist: "../dist"` 指向根目录 `dist`
## 8. 当前 npm 脚本
`package.json` 中当前可用脚本如下:
```json
{
"dev": "vite",
"build": "vue-tsc --noEmit && vite build",
"preview": "vite preview",
"tauri": "tauri"
}
```
常用命令示例:
```bash
npm run dev
npm run build
npm run preview
npm run tauri dev
npm run tauri build
```
## 9. 关键配置文件
### `package.json`
作用:
- 管理前端依赖
- 定义 npm 脚本
### `vite.config.ts`
作用:
- 配置 Vite 开发端口
- 配置 Tauri 开发环境 HMR
- 配置前端拆包策略
- 配置 Element Plus 自动按需引入
### `src-tauri/tauri.conf.json`
作用:
- 配置应用名、标识符、初始窗口
- 配置 `tauri dev` 的前端地址
- 配置 `tauri build` 的前端产物目录
- 配置 Linux 打包目标
### `TAURI-MIGRATION.md`
作用:
- 说明从 Electron 迁移到 Tauri 的目标、范围和策略
### `TAURI-MIGRATION-TASKS.md`
作用:
- 记录当前已完成项与待完成项
## 10. 当前已知注意事项
- 当前机器如果没有 Rust/Cargo无法实际运行 `tauri dev``tauri build`
- `electron-sourcecode/` 只是原项目参考目录,不参与当前 Tauri 运行
- `dist/``src-tauri/target/` 都是构建产物目录,不建议手改
## 11. 推荐使用顺序
日常开发建议按下面顺序进行:
1. 修改前端或 Rust 代码
2. 执行 `npm run build` 检查前端是否通过
3. 在已安装 Rust/Cargo 的环境执行 `npm run tauri dev`
4. 联调完成后执行 `npm run tauri build`