2
0
Эх сурвалжийг харах

📝 docs(prd): add epic for live classroom admin permission optimization

- create epic document for live classroom admin permission auto-optimization
- define epic goal: optimize joinClass function to automatically grant admin rights to teachers joining classrooms
- document enhancement details, including permission check and auto-promotion logic
- outline technical implementation points in useClassroom.ts
- add compatibility requirements and risk mitigation strategies
- include verification checklist and definition of done criteria
yourname 2 сар өмнө
parent
commit
3832a9fd01

+ 108 - 0
docs/prd/epic-006-live-classroom-admin-optimization.md

@@ -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}的同时保持系统完整性。"

+ 2 - 0
src/client/mobile/components/Classroom/useClassroom.ts

@@ -681,6 +681,8 @@ export const useClassroom = ({ user }:{ user : User }) => {
       try {
         groupInfo = await gm!.queryGroup(classId);
 
+        console.debug('groupInfo', groupInfo)
+
         // 检查闭门课堂权限
         if (groupInfo && groupInfo.groupMeta) {
           try {