epic-1-stt-sdk.md 6.0 KB

语音转文字数据流SDK开发 - Brownfield Enhancement Epic

Epic Goal

将现有的stt-demo应用中的语音转文字数据流功能封装成通用的TypeScript SDK,让任何使用TypeScript的项目都能方便调用,提供简洁的API接口、完整的类型定义和文档支持。

Epic Description

现有系统上下文

当前相关功能:

  • 完整的语音转文字数据流:音频流 → STT 服务 → 文字结果 → RTM 通道 → 界面显示
  • 多语言实时转录和翻译功能
  • 基于管理器模式的架构:SttManager、RtmManager、RtcManager
  • 事件驱动的组件通信机制

技术栈:

  • React 18 + TypeScript
  • Redux Toolkit 状态管理
  • Agora RTC/RTM SDK
  • Vite 构建工具
  • Ant Design UI组件

集成点:

  • 现有管理器类(SttManager、RtmManager)
  • 事件系统(AGEventEmitter)
  • API调用层(STT服务接口)
  • 状态管理(Redux store)

增强详情

新增/变更内容:

  • 在项目根目录创建 packages/ 目录,采用monorepo模式管理SDK
  • 创建独立的通用TypeScript SDK包,封装现有的STT和RTM管理器功能
  • 提供简洁的类式API接口,不依赖特定框架
  • 支持多语言实时转录和翻译配置
  • 包含完整的TypeScript类型定义
  • 提供详细的集成文档和示例(React、Vue、Angular等)

集成方式:

  • 基于现有管理器类进行封装,保持向后兼容
  • 提供类式API接口,便于在任何TypeScript项目中使用
  • 支持配置驱动,允许自定义STT和RTM参数
  • 保持现有的事件驱动架构模式
  • 提供框架适配器(React、Vue等)作为可选包

包结构设计:

packages/
├── stt-sdk-core/           # 核心SDK包
│   ├── src/
│   │   ├── core/           # 核心类(SttSdk, SttClient, RtmClient)
│   │   ├── managers/       # 管理器封装
│   │   ├── types/          # 类型定义
│   │   └── utils/          # 工具函数
│   ├── package.json
│   └── tsconfig.json
├── stt-sdk-react/          # React适配器(可选)
│   ├── src/
│   │   ├── hooks/          # React Hooks
│   │   ├── components/     # React组件
│   │   └── types/
│   ├── package.json
│   └── tsconfig.json
├── stt-sdk-vue/            # Vue适配器(可选)
│   ├── src/
│   │   ├── composables/    # Vue Composables
│   │   ├── components/     # Vue组件
│   │   └── types/
│   ├── package.json
│   └── tsconfig.json
└── stt-sdk-angular/        # Angular适配器(可选)
    ├── src/
    ├── package.json
    └── tsconfig.json

构建配置:

  • 每个包独立配置构建工具(Vite/Rollup)
  • 支持ES Module和CommonJS双模式输出
  • 独立的类型声明文件生成
  • 统一的lint和test配置

成功标准:

  • SDK能够独立打包和发布
  • 现有stt-demo应用能够无缝切换到使用SDK
  • 任何TypeScript项目能够通过npm安装并使用SDK
  • API接口简洁易用,类型定义完整
  • 文档清晰,包含多种框架的集成示例(React、Vue、Angular等)

Stories

  1. Story 1: SDK核心架构和基础封装

    • 创建 packages/ 目录结构和monorepo配置
    • 初始化 stt-sdk-core 包的基础配置
    • 封装现有的SttManager和RtmManager类
    • 实现基础的事件系统和错误处理
    • 提供基础的TypeScript类型定义
  2. Story 2: 通用API接口和包管理

    • 实现类式API接口(SttClient、RtmClient等)
    • 配置各个包的构建工具和依赖管理
    • 实现多语言转录和翻译的配置接口
    • 设置包间的依赖关系和版本管理
    • 配置统一的lint和test脚本
  3. Story 3: 框架适配器和发布准备

    • 创建框架适配器包(React、Vue等)
    • 编写完整的API文档和集成指南
    • 实现单元测试和集成测试
    • 配置打包和发布流程
    • 验证现有应用的无缝迁移

兼容性要求

  • 现有API保持向后兼容
  • 现有管理器类的接口保持不变
  • 事件系统接口保持兼容
  • 性能影响最小化
  • 现有功能测试通过

风险缓解

主要风险: SDK封装可能破坏现有的功能集成

缓解措施:

  • 保持现有管理器类的接口不变
  • 逐步迁移,先封装后替换
  • 充分的集成测试覆盖
  • 详细的回滚计划

回滚计划:

  • 如果SDK出现问题,可以快速回退到直接使用现有管理器类
  • 保持现有代码的完整性,SDK作为可选层

完成定义

  • 所有故事完成,验收标准满足
  • 现有功能通过测试验证
  • SDK集成点正常工作
  • 文档完整且准确
  • 现有功能无回归
  • 打包和发布流程就绪

验证清单

范围验证:

  • Epic可在1-3个故事内完成
  • 不需要架构文档变更
  • 增强遵循现有模式
  • 集成复杂度可控

风险评估:

  • 对现有系统风险低
  • 回滚计划可行
  • 测试方法覆盖现有功能
  • 团队对集成点有足够了解

完整性检查:

  • Epic目标清晰可实现
  • 故事范围适当
  • 成功标准可衡量
  • 依赖关系已识别

转交给故事经理

故事经理交接:

"请为此brownfield epic开发详细的用户故事。关键考虑因素:

  • 这是对运行React 18 + TypeScript + Agora SDK的现有系统的增强
  • 集成点:现有管理器类(SttManager、RtmManager)、事件系统、API调用层
  • 要遵循的现有模式:管理器模式、事件驱动架构
  • 关键兼容性要求:保持现有API不变,性能影响最小化,提供通用TypeScript接口

每个故事必须包含验证现有功能保持完整的验证步骤。

Epic应在保持系统完整性的同时,实现将语音转文字功能封装为可重用SDK的目标。"


创建日期: 2025-09-25 创建者: Claude Code Epic状态: Draft 优先级: High