架构设计
本章节详细介绍 Mooting 系统的整体架构设计和核心数据流。
系统架构图
┌─────────────────────────────────────────────────────────────────────────┐
│ 用户层 │
├─────────────────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │
│ │ iOS App │ │ Android App │ │ Web App │ │
│ │ (未来) │ │ (RN/Native) │ │ (RN Web) │ │
│ └─────────────┘ └─────────────┘ └─────────────┘ │
│ │
└───────────────────────────────┬─────────────────────────────────────────┘
│
┌───────────┴───────────┐
│ │
HTTP/REST API BLE Protocol
│ │
▼ ▼
┌─────────────────────────────┐ ┌─────────────────────────────┐
│ 应用服务层 │ │ 硬件通信层 │
├─────────────────────────────┤ ├─────────────────────────────┤
│ │ │ │
│ ┌───────────────────────┐ │ │ ┌───────────────────────┐ │
│ │ MootingBackend │ │ │ │ BluetoothModule │ │
│ │ (Spring Boot) │ │ │ │ (Android BLE SDK) │ │
│ │ │ │ │ │ │ │
│ │ ┌─────────────────┐ │ │ │ │ ┌─────────────────┐ │ │
│ │ │ Auth Service │ │ │ │ │ │ Device Manager │ │ │
│ │ │ User Service │ │ │ │ │ │ SPP Manager │ │ │
│ │ │ Device Service │ │ │ │ │ │ Command Handler │ │ │
│ │ │ Trans. Service │ │ │ │ │ │ State Manager │ │ │
│ │ │ Behavior Service│ │ │ │ │ └─────────────────┘ │ │
│ │ └─────────────────┘ │ │ │ │ │ │
│ │ │ │ │ └───────────────────────┘ │
│ └───────────────────────┘ │ │ │
│ │ └──────────────┬──────────────┘
└──────────────┬──────────────┘ │
│ │
▼ ▼
┌─────────────────────────────┐ ┌─────────────────────────────┐
│ 数据存储层 │ │ 智能硬件层 │
├─────────────────────────────┤ ├─────────────────────────────┤
│ │ │ │
│ ┌───────────────────────┐ │ │ ┌───────────────────────┐ │
│ │ SQL Server 2022 │ │ │ │ Mooting 智能眼镜 │ │
│ │ │ │ │ │ │ │
│ │ • user │ │ │ │ • 显示模块 │ │
│ │ • user_device │ │ │ │ • 麦克风 │ │
│ │ • transcription_* │ │ │ │ • 扬声器 │ │
│ │ • user_behavior_* │ │ │ │ • BLE 模块 │ │
│ │ │ │ │ │ • 传感器 │ │
│ └───────────────────────┘ │ │ └───────────────────────┘ │
│ │ │ │
└─────────────────────────────┘ └─────────────────────────────┘
┌─────────────────────────────────────────────────────────────────────────┐
│ 外部服务层 │
├─────────────────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │
│ │ 腾讯云 ASR │ │ 阿里云短信 │ │ 飞书邮件 │ │
│ │ (语音转写) │ │ (验证码) │ │ (验证码) │ │
│ └─────────────┘ └─────────────┘ └─────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────────────┘核心数据流
1. 用户认证流程
┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐
│ 用户 │ │ APP │ │ 后端 │ │ 短信/邮件 │
└────┬─────┘ └────┬─────┘ └────┬─────┘ └────┬─────┘
│ │ │ │
│ 输入手机号 │ │ │
│────────────────>│ │ │
│ │ │ │
│ │ POST /verify-code/send │
│ │────────────────>│ │
│ │ │ │
│ │ │ 发送验证码 │
│ │ │────────────────>│
│ │ │ │
│ │ 200 OK │ │
│ │<────────────────│ │
│ │ │ │
│ 收到验证码 │ │ │
│<────────────────────────────────────────────────────│
│ │ │ │
│ 输入验证码 │ │ │
│────────────────>│ │ │
│ │ │ │
│ │ POST /verify-code/verify │
│ │────────────────>│ │
│ │ │ │
│ │ │ 验证 & 创建用户│
│ │ │─────┐ │
│ │ │ │ │
│ │ │<────┘ │
│ │ │ │
│ │ JWT Token │ │
│ │<────────────────│ │
│ │ │ │
│ 登录成功 │ │ │
│<────────────────│ │ │
│ │ │ │2. 设备连接流程
┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐
│ 用户 │ │ APP │ │ BLE SDK │ │ 眼镜 │
└────┬─────┘ └────┬─────┘ └────┬─────┘ └────┬─────┘
│ │ │ │
│ 点击添加设备 │ │ │
│────────────────>│ │ │
│ │ │ │
│ │ startScan() │ │
│ │────────────────>│ │
│ │ │ │
│ │ │ BLE 扫描广播 │
│ │ │<───────────────>│
│ │ │ │
│ │ onDeviceFound │ │
│ │<────────────────│ │
│ │ │ │
│ 显示设备列表 │ │ │
│<────────────────│ │ │
│ │ │ │
│ 选择设备 │ │ │
│────────────────>│ │ │
│ │ │ │
│ │ connect() │ │
│ │────────────────>│ │
│ │ │ │
│ │ │ GATT 连接 │
│ │ │────────────────>│
│ │ │ │
│ │ │ 连接成功 │
│ │ │<────────────────│
│ │ │ │
│ │ │ CmdBind │
│ │ │────────────────>│
│ │ │ │
│ │ │ 绑定确认 │
│ │ │<────────────────│
│ │ │ │
│ │ onConnected │ │
│ │<────────────────│ │
│ │ │ │
│ 连接成功 │ │ │
│<────────────────│ │ │3. 实时转写流程
┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐
│ 用户 │ │ APP │ │ 腾讯云ASR │ │ 后端 │
└────┬─────┘ └────┬─────┘ └────┬─────┘ └────┬─────┘
│ │ │ │
│ 开始录音 │ │ │
│────────────────>│ │ │
│ │ │ │
│ │ WebSocket 连接 │ │
│ │────────────────>│ │
│ │ │ │
│ │ 连接成功 │ │
│ │<────────────────│ │
│ │ │ │
│ │ 音频流 (PCM) │ │
│ │────────────────>│ │
│ │ │ │
│ │ 实时转写结果 │ │
│ │<────────────────│ │
│ │ │ │
│ 显示字幕 │ │ │
│<────────────────│ │ │
│ │ │ │
│ ··· 持续转写 ··· │ │
│ │ │ │
│ 停止录音 │ │ │
│────────────────>│ │ │
│ │ │ │
│ │ 关闭 WebSocket │ │
│ │────────────────>│ │
│ │ │ │
│ │ POST /transcriptions │
│ │────────────────────────────────>│
│ │ │ │
│ │ 保存成功 │ │
│ │<────────────────────────────────│
│ │ │ │
│ 保存完成 │ │ │
│<────────────────│ │ │技术选型说明
后端技术选型
| 选型 | 原因 |
|---|---|
| Spring Boot 4.0 | 成熟稳定,生态丰富,团队熟悉 |
| SQL Server | 企业级数据库,支持复杂查询和事务 |
| JWT | 无状态认证,适合移动端和分布式场景 |
| JPA/Hibernate | ORM 映射简化数据库操作 |
移动端技术选型
| 选型 | 原因 |
|---|---|
| React Native | 跨平台开发,代码复用率高 |
| Vite | 快速的 Web 构建工具,支持 HMR |
| Axios | 成熟的 HTTP 客户端 |
| 腾讯云 ASR | 国内语音识别服务,延迟低 |
Android SDK 技术选型
| 选型 | 原因 |
|---|---|
| Kotlin | 现代 Android 开发首选语言 |
| BLE | 低功耗蓝牙,适合穿戴设备 |
| MVVM | 架构清晰,便于测试 |
扩展性设计
横向扩展
- 后端可通过负载均衡部署多实例
- 数据库支持读写分离
- 静态资源可使用 CDN 分发
功能扩展
- API 版本化设计 (
/api/v1/,/api/v2/) - 模块化的服务层设计
- 插件化的第三方集成