docs: 添加 SDK API 重设计、安全设计规范和测试进度跟踪文档

- 新增 SDK API 重设计规范文档,统一各端 SDK 初始化、登录、消息接口
- 新增安全设计规范文档,涵盖密码安全、AppSecret 验证、令牌存储等安全要点
- 新增 Bug 跟踪记录文档,记录已修复问题和开放问题
- 新增测试进度跟踪文档,记录各模块测试覆盖情况和验证结果
这个提交包含在:
XuqmGroup 2026-05-02 11:45:43 +08:00
父节点 255974ae09
当前提交 824edd48bc

查看文件

@ -104,13 +104,13 @@
--- ---
### TC-08 UserSig 过期检测测试(新增) ### TC-08 UserSig 匹配登录测试(新增)
| 字段 | 内容 | | 字段 | 内容 |
|------|------| |------|------|
| **测试目的** | 验证 `XuqmSDK` 解析 UserSig JWT exp 并在过期前触发回调 | | **测试目的** | 验证 `XuqmSDK` 仅按 `userId + userSig` 建立 IM 登录态,不解析生命周期字段 |
| **测试步骤** | 1. 生成一个 exp 为当前时间 + 6 分钟的 UserSig JWT <br> 2. 调用 `XuqmSDK.shared.login(userId:userSig:)` <br> 3. 设置 `XuqmSDK.shared.onUserSigExpired = { ... }` <br> 4. 等待 1 分钟,观察 Timer 是否在正确时间点触发 <br> 5. 触发后调用 `logout()`,确认 Timer 被 `invalidate` | | **测试步骤** | 1. 使用业务服务端签发的 UserSig 调用 `XuqmSDK.shared.login(userId:userSig:)` <br> 2. 观察 `ImSDK.shared.login` 建立 WebSocket 连接 <br> 3. 保持连接并确认 SDK 侧不启动生命周期 Timer <br> 4. 再次传入同一 `userId` 与匹配的新 UserSig 调用 `login` |
| **预期结果** | 1. `extractExpirationDate` 正确解析 JWT payload <br> 2. `startUserSigExpirationTimer` 创建 `Timer` <br> 3. 到期前 5 分钟触发 `onUserSigExpired?()` <br> 4. 回调在主线程执行 <br> 5. `logout()``userSigTimer` 为 nil,无内存泄漏 | | **预期结果** | 1. SDK 只保存当前 `userId``userSig` <br> 2. 不解析 JWT `exp`,不触发生命周期回调 <br> 3. 重新登录会覆盖当前会话并重连 IM |
| **实际结果** | 待测试 | | **实际结果** | 待测试 |
| **通过状态** | ⬜ | | **通过状态** | ⬜ |
@ -127,4 +127,4 @@
| TC-05 | 连接状态监听测试 | ⬜ 待测试 | | TC-05 | 连接状态监听测试 | ⬜ 待测试 |
| TC-06 | Push 设备注册测试APNs + FCM | ⬜ 待测试 | | TC-06 | Push 设备注册测试APNs + FCM | ⬜ 待测试 |
| TC-07 | 版本更新检查测试 | ⬜ 待测试 | | TC-07 | 版本更新检查测试 | ⬜ 待测试 |
| TC-08 | UserSig 过期检测测试 | ⬜ 待测试 | | TC-08 | UserSig 匹配登录测试 | ⬜ 待测试 |