|
|
@@ -25,17 +25,18 @@ Draft
|
|
|
- [ ] 添加权限提升条件判断逻辑
|
|
|
- [ ] 实现权限自动提升功能 (AC: 2, 3)
|
|
|
- [ ] 创建autoPromoteToAdmin方法
|
|
|
- - [ ] 实现群创建者登录逻辑
|
|
|
- - [ ] 调用modifyGroup API添加管理员权限
|
|
|
+ - [ ] 实现权限检查逻辑:检查当前用户是否为creator或已在admins列表中
|
|
|
+ - [ ] 调用modifyGroup API添加管理员权限(使用forceUpdateAdmins=true)
|
|
|
- [ ] 添加权限提升成功/失败处理
|
|
|
+ - [ ] 实现权限提升后的状态更新
|
|
|
- [ ] 添加错误处理和降级机制 (AC: 4)
|
|
|
- - [ ] 实现权限提升失败时的优雅降级
|
|
|
- - [ ] 添加错误日志记录
|
|
|
- - [ ] 确保权限提升失败不影响正常课堂加入
|
|
|
+ - [ ] 实现权限提升失败时的优雅降级:捕获modifyGroup异常,继续正常课堂加入流程
|
|
|
+ - [ ] 添加错误日志记录:使用console.error记录权限提升失败详情
|
|
|
+ - [ ] 确保权限提升失败不影响正常课堂加入:权限提升操作在try-catch块中执行
|
|
|
- [ ] 优化用户体验和提示信息 (AC: 5)
|
|
|
- - [ ] 添加权限提升过程中的用户提示
|
|
|
- - [ ] 实现成功/失败状态反馈
|
|
|
- - [ ] 确保提示信息友好且不干扰主要功能
|
|
|
+ - [ ] 添加权限提升过程中的用户提示:"正在获取管理员权限..."
|
|
|
+ - [ ] 实现成功/失败状态反馈:"权限获取成功" / "权限获取失败,但课堂已成功加入"
|
|
|
+ - [ ] 确保提示信息友好且不干扰主要功能:使用轻量级toast提示,不阻塞课堂加入流程
|
|
|
- [ ] 添加单元测试 (AC: 1-5)
|
|
|
- [ ] 编写权限检查逻辑的单元测试
|
|
|
- [ ] 测试权限提升成功场景
|
|
|
@@ -58,12 +59,20 @@ Draft
|
|
|
- **群组管理**: AliVCIMGroupManager类提供queryGroup和modifyGroup方法 [Source: alivc-im.iife.d.ts#L32-L118]
|
|
|
- **群组信息**: ImGroupInfo接口包含creator和admins字段 [Source: alivc-im.iife.d.ts#L756-L797]
|
|
|
- **权限修改**: ImModifyGroupReq接口支持admins字段更新 [Source: alivc-im.iife.d.ts#L1241-L1264]
|
|
|
+- **关键API调用**: modifyGroup需要forceUpdateAdmins=true来强制更新管理员列表 [Source: alivc-im.iife.d.ts#L1241-L1264]
|
|
|
|
|
|
### 现有joinClass方法分析
|
|
|
- **当前逻辑**: 在666-820行实现完整的课堂加入流程 [Source: useClassroom.ts#L666-L820]
|
|
|
- **权限检查位置**: 在获取群组信息后(682行)添加权限提升逻辑 [Source: useClassroom.ts#L682]
|
|
|
- **关键变量**: groupInfo包含creator和admins信息 [Source: useClassroom.ts#L679-L682]
|
|
|
|
|
|
+### 权限提升具体实现细节
|
|
|
+- **权限检查逻辑**: 在获取groupInfo后,检查当前用户是否为creator或已在admins列表中
|
|
|
+- **权限提升条件**: 仅对Teacher角色且非creator/非admin的用户进行权限提升
|
|
|
+- **群创建者登录逻辑**: 无需额外登录操作,直接使用当前IM引擎实例调用modifyGroup API
|
|
|
+- **权限提升API调用**: 使用forceUpdateAdmins=true,将当前用户添加到admins列表
|
|
|
+- **降级机制**: 权限提升失败时不影响正常课堂加入流程,仅记录错误日志
|
|
|
+
|
|
|
### 项目结构约束
|
|
|
- **文件组织**: 遵循移动端组件架构模式 [Source: architecture/source-tree.md#L36-L46]
|
|
|
- **测试位置**: 单元测试位于`__tests__`目录 [Source: architecture/source-tree.md#L141-L142]
|
|
|
@@ -73,20 +82,22 @@ Draft
|
|
|
**测试标准和框架**
|
|
|
- **测试框架**: Vitest + Testing Library [Source: architecture/coding-standards.md#L27-L30]
|
|
|
- **测试位置**: `__tests__`文件夹与源码并列 [Source: architecture/coding-standards.md#L28]
|
|
|
-- **测试文件**: `src/client/mobile/components/Classroom/__tests__/useClassroom.test.ts`
|
|
|
+- **测试文件**: `src/client/mobile/components/Classroom/__tests__/useClassroom.test.ts`(需要创建测试目录和文件)
|
|
|
- **测试类型**: 单元测试,覆盖权限检查、提升逻辑、错误处理
|
|
|
- **覆盖率目标**: 核心业务逻辑 > 80% [Source: architecture/coding-standards.md#L29]
|
|
|
|
|
|
**测试要求**
|
|
|
-- 测试权限检查逻辑的正确性
|
|
|
-- 验证权限提升成功和失败场景
|
|
|
-- 确保降级机制不影响正常功能
|
|
|
-- 测试用户提示信息的显示逻辑
|
|
|
+- 测试权限检查逻辑的正确性:验证isCreator和isAdmin判断逻辑
|
|
|
+- 验证权限提升成功场景:模拟modifyGroup成功调用
|
|
|
+- 验证权限提升失败场景:模拟modifyGroup异常抛出
|
|
|
+- 确保降级机制不影响正常功能:验证权限提升失败后课堂仍能正常加入
|
|
|
+- 测试用户提示信息的显示逻辑:验证toast提示的正确触发
|
|
|
|
|
|
## Change Log
|
|
|
| Date | Version | Description | Author |
|
|
|
|------|---------|-------------|---------|
|
|
|
| 2025-09-28 | 1.0 | 初始故事创建 | Bob (Scrum Master) |
|
|
|
+| 2025-09-28 | 1.1 | 完善权限提升实现细节和错误处理模式 | Bob (Scrum Master) |
|
|
|
|
|
|
## Dev Agent Record
|
|
|
*此部分由开发代理在实施期间填充*
|