You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
94 lines
3.1 KiB
94 lines
3.1 KiB
# 代码简明规范
|
|
## Dart / Flutter
|
|
1. 风格统一
|
|
• 严格遵循 Effective Dart 格式与命名惯例。
|
|
2. 日志与调试
|
|
• 禁止 print;仅在异常场景调用 logger.e(...)。
|
|
3. 业务逻辑
|
|
• 默认使用 GetX(状态、路由、依赖注入等),避免手写 StatefulWidget。
|
|
4. 异常处理
|
|
• 不写重试逻辑,失败即返回错误。
|
|
• 谨慎使用 try-catch;优先通过类型系统与空安全防御。
|
|
5. 代码演进
|
|
• 任何改动都应 “小步、安全”,杜绝一次性大改或过度设计。
|
|
|
|
## 原生层(Android / iOS)
|
|
1. 配置不可改
|
|
• 禁止修改 SDK、NDK、JDK 与 iOS 构建配置。
|
|
2. Kotlin DSL
|
|
• 原生实现一律采用 Kotlin + 协程,遵守 Kotlin 最佳实践。
|
|
• 不写 Java 代码。
|
|
|
|
## 通用要求
|
|
1. 不自动执行
|
|
• 生成脚本/代码不得包含 flutter run 等执行指令。
|
|
2. 并发优先级
|
|
• 并发场景首选 Kotlin 协程;仅在 Flutter 端按需使用 Dart Future / Stream。
|
|
3. 语言
|
|
• 与用户交流、注释及文档一律使用中文。
|
|
• 不要自己创建总结文档。
|
|
|
|
宗旨:保持极简,先跑通业务,再考虑优化。
|
|
|
|
|
|
# 项目架构概述
|
|
DeepSound是一个基于Flutter和GetX构建的多平台语音应用,具有语音合成、语音识别、语音聊天等功能。
|
|
|
|
## 总体架构
|
|
- 采用GetX状态管理框架
|
|
- 遵循模块化设计,各功能模块相对独立
|
|
- 使用依赖注入实现组件解耦
|
|
- 多语言支持,使用GetX国际化方案
|
|
|
|
## 主要目录结构
|
|
- lib/core: 核心组件、工具和通用功能
|
|
- lib/data: 数据模型、服务和提供者
|
|
- lib/modules: 功能模块,按业务划分
|
|
- lib/routes: 路由定义和管理
|
|
- local_plugins: 本地插件,提供原生功能支持
|
|
|
|
# 核心模块说明
|
|
## 语音处理
|
|
- 火山语音服务: 提供语音识别和合成核心能力
|
|
- Azure语音服务: 提供备选的语音识别和合成能力
|
|
- 离线TTS支持: 在线语音合成失败时的备选方案
|
|
|
|
## 聊天功能
|
|
- 基于OpenAI的对话功能
|
|
- 支持语音输入、文字输入和语音输出
|
|
- 支持多种角色和语音类型
|
|
|
|
## 用户系统
|
|
- 支持多种登录方式:Firebase、Google、Facebook
|
|
- 用户资料管理和设置
|
|
- 主题切换和语言设置
|
|
|
|
## 蓝牙配对
|
|
- 支持蓝牙设备发现和连接
|
|
- 提供简化的配对流程
|
|
- 设备管理和状态监控
|
|
|
|
## 音频处理
|
|
- 音频录制和播放
|
|
- 支持波形显示
|
|
- 音量控制和音频质量设置
|
|
|
|
# 技术栈
|
|
- Flutter: UI框架
|
|
- GetX: 状态管理和依赖注入
|
|
- Firebase: 用户认证和后端服务
|
|
- WebSocket: 实时通信
|
|
- SQLite: 本地数据存储
|
|
- 原生插件: 语音识别、合成和蓝牙功能
|
|
|
|
# 插件说明
|
|
- jieli: 杰理蓝牙设备连接和控制插件
|
|
- volcano_speech: 火山语音服务插件,提供语音识别和合成
|
|
- azure_speech: 微软Azure语音服务插件
|
|
- open_ai_service: OpenAI服务插件,提供AI对话能力
|
|
- speech_to_text: 通用语音识别插件
|
|
|
|
# 环境配置
|
|
- 环境变量通过.env文件管理
|
|
- 支持不同环境的配置切换
|
|
- 敏感信息不应直接硬编码在代码中
|