Sfoglia il codice sorgente

📝 docs(story): update permission promotion implementation details

- refine permission check logic: verify if current user is creator or in admins list
- update modifyGroup API call to include forceUpdateAdmins=true parameter
- add specific error handling: catch modifyGroup exceptions, continue classroom joining process
- enhance user prompts: "正在获取管理员权限...", "权限获取成功" and "权限获取失败,但课堂已成功加入"
- add permission promotion implementation details section with logic explanation
- update test requirements to cover isCreator and isAdmin judgment logic
- add version 1.1 change log entry for implementation details refinement
yourname 2 mesi fa
parent
commit
3fb0e201b1
1 ha cambiato i file con 24 aggiunte e 13 eliminazioni
  1. 24 13
      docs/stories/006.001.story.md

+ 24 - 13
docs/stories/006.001.story.md

@@ -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
 *此部分由开发代理在实施期间填充*