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

3.0 KiB

智能会议记录系统 - 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)

    curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
    source "$HOME/.cargo/env"
    
  2. PyInstaller (用于打包 Python 后端)

    pip3 install pyinstaller
    
  3. Node.js (用于构建前端)

    • 已有 Node.js 环境即可

构建

一键构建

cd mac-app
bash scripts/build.sh

分步构建

  1. 构建前端

    bash scripts/build_frontend.sh
    
  2. 构建后端 sidecar

    bash scripts/build_backend.sh
    
  3. 构建 Tauri App

    cd mac-app
    npm install
    npm run build
    

开发模式

cd mac-app
npm install
npm run dev

注意: 开发模式下后端需要单独启动 (python3 main.py),Tauri dev 模式不会自动拉起 sidecar。

生成图标

准备一张 1024x1024 的 PNG 图标,然后运行:

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 环境变量

这些修改向后兼容,不影响原有开发模式。