|
|
@@ -0,0 +1,108 @@
|
|
|
+# Epic 006: 直播课堂管理员权限自动优化
|
|
|
+
|
|
|
+## Epic Goal
|
|
|
+
|
|
|
+优化直播课堂的joinClass功能,当老师用户加入非自己创建的课堂时,自动登录群创建者账号并授予管理员权限,确保老师能够正常管理课堂。
|
|
|
+
|
|
|
+## Epic Description
|
|
|
+
|
|
|
+### Existing System Context
|
|
|
+
|
|
|
+- **当前相关功能**: useClassroom.ts中的joinClass方法负责处理用户加入课堂的逻辑,包括群组信息查询、权限检查等
|
|
|
+- **技术栈**: React + TypeScript, Alibaba Cloud RTC/IM SDK, Hono.js后端API
|
|
|
+- **集成点**: 阿里云IM群组管理API、RTC频道管理、用户认证系统
|
|
|
+
|
|
|
+### Enhancement Details
|
|
|
+
|
|
|
+- **新增/修改内容**: 在joinClass方法中添加管理员权限自动提升逻辑,当检测到当前老师用户不是群创建者且不在管理员列表中时,自动执行权限提升流程
|
|
|
+- **集成方式**: 通过现有的IM群组管理API调用modifyGroup方法,新增管理员权限检查和处理逻辑
|
|
|
+- **成功标准**: 老师用户能够无缝加入任何课堂并获得必要的管理权限,无需手动干预
|
|
|
+
|
|
|
+## Stories
|
|
|
+
|
|
|
+1. **Story 1: 实现管理员权限自动提升功能**
|
|
|
+ - 在joinClass方法中添加群组创建者和管理员列表检查逻辑
|
|
|
+ - 实现权限状态判断,识别需要权限提升的场景
|
|
|
+ - 创建权限提升方法,处理群创建者登录和modifyGroup调用
|
|
|
+ - 添加错误处理和降级机制,确保功能健壮性
|
|
|
+ - 优化用户体验,提供友好的提示信息
|
|
|
+
|
|
|
+## Compatibility Requirements
|
|
|
+
|
|
|
+- [x] 现有API保持不变
|
|
|
+- [x] 数据库架构无变化
|
|
|
+- [x] UI变更遵循现有模式
|
|
|
+- [x] 性能影响最小化
|
|
|
+
|
|
|
+## Risk Mitigation
|
|
|
+
|
|
|
+- **主要风险**: 权限提升失败导致老师无法正常管理课堂
|
|
|
+- **缓解措施**: 实现优雅的降级处理,确保即使权限提升失败也能正常加入课堂
|
|
|
+- **回滚计划**: 如果新功能出现问题,可以回退到原有的joinClass逻辑
|
|
|
+
|
|
|
+## Definition of Done
|
|
|
+
|
|
|
+- [ ] 所有故事完成且验收标准满足
|
|
|
+- [ ] 现有功能通过测试验证
|
|
|
+- [ ] 集成点正常工作
|
|
|
+- [ ] 文档适当更新
|
|
|
+- [ ] 现有功能无回归
|
|
|
+
|
|
|
+## 技术实现要点
|
|
|
+
|
|
|
+基于对useClassroom.ts:666-820行joinClass方法的分析,需要在以下位置添加优化逻辑:
|
|
|
+
|
|
|
+```typescript
|
|
|
+// 在获取群组信息后添加权限检查
|
|
|
+let groupInfo;
|
|
|
+try {
|
|
|
+ groupInfo = await gm!.queryGroup(classId);
|
|
|
+
|
|
|
+ // 新增:权限自动提升逻辑
|
|
|
+ if (role === Role.Teacher && groupInfo) {
|
|
|
+ const isCreator = groupInfo.creator === userId;
|
|
|
+ const isAdmin = groupInfo.admins?.includes(userId) || false;
|
|
|
+
|
|
|
+ if (!isCreator && !isAdmin) {
|
|
|
+ // 需要权限提升
|
|
|
+ await autoPromoteToAdmin(gm!, classId, userId, groupInfo.creator);
|
|
|
+ }
|
|
|
+ }
|
|
|
+} catch (err) {
|
|
|
+ console.error('获取群组信息失败:', err);
|
|
|
+}
|
|
|
+```
|
|
|
+
|
|
|
+## 验证清单
|
|
|
+
|
|
|
+**范围验证:**
|
|
|
+- [x] Epic可在1个故事内完成(功能相对简单)
|
|
|
+- [x] 无需架构文档
|
|
|
+- [x] 增强遵循现有模式
|
|
|
+- [x] 集成复杂度可控
|
|
|
+
|
|
|
+**风险评估:**
|
|
|
+- [x] 对现有系统风险低
|
|
|
+- [x] 回滚计划可行
|
|
|
+- [x] 测试方法覆盖现有功能
|
|
|
+- [x] 团队对集成点有足够了解
|
|
|
+
|
|
|
+**完整性检查:**
|
|
|
+- [x] Epic目标清晰可实现
|
|
|
+- [x] 故事范围适当
|
|
|
+- [x] 成功标准可衡量
|
|
|
+- [x] 依赖项已识别
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+**Story Manager Handoff:**
|
|
|
+
|
|
|
+"请为此棕地史诗开发详细的用户故事。关键考虑因素:
|
|
|
+
|
|
|
+- 这是对运行React + TypeScript + Alibaba Cloud RTC/IM SDK的现有系统的增强
|
|
|
+- 集成点:阿里云IM群组管理API、用户认证系统
|
|
|
+- 要遵循的现有模式:useClassroom.ts中的joinClass方法模式
|
|
|
+- 关键兼容性要求:保持现有API不变,确保向后兼容
|
|
|
+- 每个故事必须包含验证现有功能保持完整的检查
|
|
|
+
|
|
|
+该史诗应在提供{Epic Goal}的同时保持系统完整性。"
|