epic-006-live-classroom-admin-optimization.md 3.7 KB

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

  • 现有API保持不变
  • 数据库架构无变化
  • UI变更遵循现有模式
  • 性能影响最小化

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);
}

验证清单

范围验证:

  • Epic可在1个故事内完成(功能相对简单)
  • 无需架构文档
  • 增强遵循现有模式
  • 集成复杂度可控

风险评估:

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

完整性检查:

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

Story Manager Handoff:

"请为此棕地史诗开发详细的用户故事。关键考虑因素:

  • 这是对运行React + TypeScript + Alibaba Cloud RTC/IM SDK的现有系统的增强
  • 集成点:阿里云IM群组管理API、用户认证系统
  • 要遵循的现有模式:useClassroom.ts中的joinClass方法模式
  • 关键兼容性要求:保持现有API不变,确保向后兼容
  • 每个故事必须包含验证现有功能保持完整的检查

该史诗应在提供{Epic Goal}的同时保持系统完整性。"