Files
meeting_recorder/mac-app/README.md
T
freedakgmail 2752ea4e54 feat: 添加 Tauri Mac 原生应用支持
- 新增 mac-app/ 目录:Tauri 项目结构(Rust 外壳 + sidecar 进程管理)
- 前端添加 Tauri 环境检测,API 调用和 WebSocket 自动适配
- 后端支持 MEETING_DATA_DIR 环境变量指定数据目录
- 新增 /api/meetings/{id}/retranscribe 接口用于重新转录
- 修复轮询超时:2分钟→30分钟,适配长音频
- 添加 .gitignore 排除构建产物
2026-07-10 00:04:27 +08:00

120 lines
3.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 智能会议记录系统 - Mac 原生应用
将现有 React + FastAPI 应用打包为 macOS 原生 App。
## 架构
```
Tauri (Rust 外壳)
├── 前端: React (Vite 构建产物嵌入)
└── 后端: Python FastAPI (PyInstaller 打包为 sidecar 二进制)
```
- **前端**: 现有 React 代码通过 Vite 构建后嵌入 Tauri
- **后端**: `main.py` 通过 PyInstaller 打包为单文件二进制,作为 Tauri sidecar 进程运行
- **数据持久化**: 用户数据存储在 `~/Library/Application Support/com.meeting.recorder/data/`
- **麦克风权限**: 通过 Info.plist 配置 NSMicrophoneUsageDescription
## 前置条件
1. **Rust 工具链** (用于编译 Tauri)
```bash
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
source "$HOME/.cargo/env"
```
2. **PyInstaller** (用于打包 Python 后端)
```bash
pip3 install pyinstaller
```
3. **Node.js** (用于构建前端)
- 已有 Node.js 环境即可
## 构建
### 一键构建
```bash
cd mac-app
bash scripts/build.sh
```
### 分步构建
1. **构建前端**
```bash
bash scripts/build_frontend.sh
```
2. **构建后端 sidecar**
```bash
bash scripts/build_backend.sh
```
3. **构建 Tauri App**
```bash
cd mac-app
npm install
npm run build
```
### 开发模式
```bash
cd mac-app
npm install
npm run dev
```
> 注意: 开发模式下后端需要单独启动 (`python3 main.py`)Tauri dev 模式不会自动拉起 sidecar。
## 生成图标
准备一张 1024x1024 的 PNG 图标,然后运行:
```bash
cd mac-app
npx @tauri-apps/cli icon path/to/icon.png
```
这会自动生成所有需要的图标尺寸到 `src-tauri/icons/`。
## 输出
构建完成后:
- **DMG 安装包**: `src-tauri/target/release/bundle/dmg/`
- **App**: `src-tauri/target/release/bundle/macos/`
## 文件结构
```
mac-app/
├── package.json # Tauri CLI 依赖
├── README.md # 本文件
├── scripts/
│ ├── build.sh # 一键构建脚本
│ ├── build_backend.sh # PyInstaller 打包后端
│ └── build_frontend.sh # Vite 构建前端
└── src-tauri/
├── Cargo.toml # Rust 依赖
├── tauri.conf.json # Tauri 配置
├── build.rs # Tauri 构建脚本
├── capabilities/
│ └── default.json # 权限配置 (shell sidecar)
├── icons/ # 应用图标
└── src/
├── main.rs # Rust 入口
└── lib.rs # Sidecar 进程管理
```
## 修改说明
为支持 Tauri 打包,对原项目做了以下修改:
1. **`frontend/src/api/meeting.js`**: 添加 Tauri 环境检测,在 Tauri 中直接连接 `localhost:8501`
2. **`main.py`**: 添加 `get_data_dir()` 函数,支持 `MEETING_DATA_DIR` 环境变量
3. **`database.py`**: Database 初始化支持 `MEETING_DATA_DIR` 环境变量
这些修改向后兼容,不影响原有开发模式。