|
|
@@ -0,0 +1,197 @@
|
|
|
+# 源码结构
|
|
|
+
|
|
|
+## 项目根目录
|
|
|
+
|
|
|
+```
|
|
|
+stt-demo/
|
|
|
+├── .bmad-core/ # BMAD 配置和工具
|
|
|
+├── .claude/ # Claude Code 配置
|
|
|
+├── .git/ # Git 版本控制
|
|
|
+├── docs/ # 项目文档
|
|
|
+├── node_modules/ # 依赖包
|
|
|
+├── public/ # 静态资源
|
|
|
+├── src/ # 源代码
|
|
|
+└── 配置文件...
|
|
|
+```
|
|
|
+
|
|
|
+## 源代码目录结构
|
|
|
+
|
|
|
+### src/ - 主要源代码
|
|
|
+
|
|
|
+```
|
|
|
+src/
|
|
|
+├── components/ # 可复用 UI 组件
|
|
|
+│ ├── avatar/ # 用户头像组件
|
|
|
+│ │ └── index.tsx
|
|
|
+│ ├── caption/ # 字幕相关组件
|
|
|
+│ │ ├── caption-item/
|
|
|
+│ │ └── index.tsx
|
|
|
+│ ├── center-area/ # 主视频区域
|
|
|
+│ │ └── index.tsx
|
|
|
+│ ├── dialog/ # 对话框组件
|
|
|
+│ │ ├── language-setting/
|
|
|
+│ │ ├── language-show/
|
|
|
+│ │ └── language-storage/
|
|
|
+│ ├── extend-message/ # 扩展消息
|
|
|
+│ │ └── index.tsx
|
|
|
+│ ├── footer/ # 底部控制栏
|
|
|
+│ │ ├── caption-popover/
|
|
|
+│ │ └── index.tsx
|
|
|
+│ ├── header/ # 顶部导航
|
|
|
+│ │ └── index.tsx
|
|
|
+│ ├── icons/ # 图标组件
|
|
|
+│ ├── menu/ # 侧边菜单
|
|
|
+│ ├── stream-player/ # 视频流播放器
|
|
|
+│ └── user-list/ # 用户列表
|
|
|
+├── pages/ # 页面组件
|
|
|
+│ ├── 404/ # 404 页面
|
|
|
+│ ├── home/ # 主页面
|
|
|
+│ │ ├── index.module.scss
|
|
|
+│ │ └── index.tsx
|
|
|
+│ └── login/ # 登录页面
|
|
|
+│ ├── index.module.scss
|
|
|
+│ └── index.tsx
|
|
|
+├── manager/ # 业务逻辑管理器
|
|
|
+│ ├── events.ts # 事件系统
|
|
|
+│ ├── index.ts # 管理器导出
|
|
|
+│ ├── parser/ # 数据解析器
|
|
|
+│ │ └── index.ts
|
|
|
+│ ├── rtc/ # RTC 管理器
|
|
|
+│ │ ├── index.ts
|
|
|
+│ │ ├── rtc.ts
|
|
|
+│ │ └── types.ts
|
|
|
+│ ├── rtm/ # RTM 管理器
|
|
|
+│ │ ├── index.ts
|
|
|
+│ │ ├── rtm.ts
|
|
|
+│ │ └── types.ts
|
|
|
+│ ├── stt/ # STT 管理器
|
|
|
+│ │ ├── index.ts
|
|
|
+│ │ ├── stt.ts
|
|
|
+│ │ └── types.ts
|
|
|
+│ └── types.ts # 管理器类型定义
|
|
|
+├── store/ # 状态管理
|
|
|
+│ ├── index.ts # Store 配置
|
|
|
+│ └── reducers/ # Reducers
|
|
|
+│ └── global.ts # 全局状态
|
|
|
+├── common/ # 通用工具
|
|
|
+│ ├── constant.ts # 常量定义
|
|
|
+│ ├── final.ts # 最终配置
|
|
|
+│ ├── hooks.ts # 自定义 Hooks
|
|
|
+│ ├── index.ts # 通用工具导出
|
|
|
+│ ├── mock.ts # 模拟数据
|
|
|
+│ ├── request.ts # API 请求
|
|
|
+│ ├── storage.ts # 本地存储
|
|
|
+│ └── utils.ts # 工具函数
|
|
|
+├── i18n/ # 国际化
|
|
|
+│ └── index.js # i18n 配置
|
|
|
+├── router/ # 路由配置
|
|
|
+│ └── index.tsx # 路由定义
|
|
|
+├── types/ # 类型定义
|
|
|
+│ └── index.ts # 全局类型
|
|
|
+├── protobuf/ # Protobuf 定义
|
|
|
+│ ├── SttMessage.js # 编译后的 Protobuf
|
|
|
+│ └── SttMessage.proto
|
|
|
+├── styles/ # 样式文件
|
|
|
+│ ├── global.css # 全局样式
|
|
|
+│ └── reset.css # 重置样式
|
|
|
+├── App.tsx # 根组件
|
|
|
+├── main.tsx # 应用入口
|
|
|
+└── vite-env.d.ts # Vite 环境类型
|
|
|
+```
|
|
|
+
|
|
|
+## 关键文件说明
|
|
|
+
|
|
|
+### 应用入口文件
|
|
|
+
|
|
|
+- **`src/main.tsx`**: React 应用启动,配置 Provider
|
|
|
+- **`src/App.tsx`**: 根组件,包含错误处理和屏幕适配
|
|
|
+
|
|
|
+### 核心管理器
|
|
|
+
|
|
|
+- **`src/manager/rtc/rtc.ts`**: RTC 音视频通信管理
|
|
|
+- **`src/manager/rtm/rtm.ts`**: RTM 实时消息管理
|
|
|
+- **`src/manager/stt/stt.ts`**: STT 语音转文字管理
|
|
|
+- **`src/manager/events.ts`**: 自定义事件系统
|
|
|
+
|
|
|
+### 状态管理
|
|
|
+
|
|
|
+- **`src/store/index.ts`**: Redux store 配置
|
|
|
+- **`src/store/reducers/global.ts`**: 全局状态 reducer
|
|
|
+
|
|
|
+### 页面组件
|
|
|
+
|
|
|
+- **`src/pages/login/index.tsx`**: 登录页面
|
|
|
+- **`src/pages/home/index.tsx`**: 主页面(音视频通话)
|
|
|
+
|
|
|
+### 通用工具
|
|
|
+
|
|
|
+- **`src/common/hooks.ts`**: 自定义 React Hooks
|
|
|
+- **`src/common/request.ts`**: API 请求封装
|
|
|
+- **`src/common/utils.ts`**: 工具函数
|
|
|
+- **`src/common/storage.ts`**: 本地存储管理
|
|
|
+
|
|
|
+## 模块依赖关系
|
|
|
+
|
|
|
+### 核心依赖流
|
|
|
+
|
|
|
+```
|
|
|
+App.tsx → Router → Pages → Components
|
|
|
+ ↓
|
|
|
+ Manager Layer (RTC/RTM/STT)
|
|
|
+ ↓
|
|
|
+ Store (Redux)
|
|
|
+ ↓
|
|
|
+ Common Utilities
|
|
|
+```
|
|
|
+
|
|
|
+### 管理器间依赖
|
|
|
+
|
|
|
+```
|
|
|
+RtcManager ──────┐
|
|
|
+ ├──→ Event System
|
|
|
+RtmManager ──────┤
|
|
|
+ └──→ Store
|
|
|
+SttManager ──────┘
|
|
|
+```
|
|
|
+
|
|
|
+## 文件命名规范
|
|
|
+
|
|
|
+### 组件文件
|
|
|
+
|
|
|
+- 主文件: `index.tsx`
|
|
|
+- 样式文件: `index.module.scss`
|
|
|
+- 类型文件: `types.ts` (如存在)
|
|
|
+
|
|
|
+### 工具文件
|
|
|
+
|
|
|
+- 工具函数: `utils.ts`
|
|
|
+- 常量定义: `constant.ts`
|
|
|
+- API 接口: `request.ts`
|
|
|
+
|
|
|
+### 导出规范
|
|
|
+
|
|
|
+- 默认导出: 主要用于组件
|
|
|
+- 命名导出: 用于工具函数、类型等
|
|
|
+- Barrel 导出: 使用 `index.ts` 统一导出
|
|
|
+
|
|
|
+## 新增文件指南
|
|
|
+
|
|
|
+### 添加新组件
|
|
|
+
|
|
|
+1. 在 `components/` 下创建新目录
|
|
|
+2. 创建 `index.tsx` 和 `index.module.scss`
|
|
|
+3. 如需类型,创建 `types.ts`
|
|
|
+4. 更新相关 barrel 导出文件
|
|
|
+
|
|
|
+### 添加新页面
|
|
|
+
|
|
|
+1. 在 `pages/` 下创建新目录
|
|
|
+2. 遵循组件文件规范
|
|
|
+3. 在 `src/router/index.tsx` 中添加路由
|
|
|
+
|
|
|
+### 添加新管理器
|
|
|
+
|
|
|
+1. 在 `manager/` 下创建新目录
|
|
|
+2. 实现核心业务逻辑
|
|
|
+3. 定义相关类型
|
|
|
+4. 更新 `manager/index.ts` 导出
|