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