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
- Story 1: 实现管理员权限自动提升功能
- 在joinClass方法中添加群组创建者和管理员列表检查逻辑
- 实现权限状态判断,识别需要权限提升的场景
- 创建权限提升方法,处理群创建者登录和modifyGroup调用
- 添加错误处理和降级机制,确保功能健壮性
- 优化用户体验,提供友好的提示信息
Compatibility Requirements
Risk Mitigation
- 主要风险: 权限提升失败导致老师无法正常管理课堂
- 缓解措施: 实现优雅的降级处理,确保即使权限提升失败也能正常加入课堂
- 回滚计划: 如果新功能出现问题,可以回退到原有的joinClass逻辑
Definition of Done
技术实现要点
基于对useClassroom.ts:666-820行joinClass方法的分析,需要在以下位置添加优化逻辑:
// 在获取群组信息后添加权限检查
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);
}
验证清单
范围验证:
风险评估:
完整性检查:
Story Manager Handoff:
"请为此棕地史诗开发详细的用户故事。关键考虑因素:
- 这是对运行React + TypeScript + Alibaba Cloud RTC/IM SDK的现有系统的增强
- 集成点:阿里云IM群组管理API、用户认证系统
- 要遵循的现有模式:useClassroom.ts中的joinClass方法模式
- 关键兼容性要求:保持现有API不变,确保向后兼容
- 每个故事必须包含验证现有功能保持完整的检查
该史诗应在提供{Epic Goal}的同时保持系统完整性。"