# mobile-next SDK 兼容门禁验收记录（docs/acceptance）

> 目标：官方 `mobile-next` 基线只把 `flutter_openim_sdk` 切到 `3.8.3+hotfix.12` 后，对接现网
> （OpenIM API `http://192.168.200.11:10002` / WS `ws://192.168.200.11:10001`）完成双机冒烟。
> 任一核心门禁失败即停止后续迁移并在本卡汇报；不得以「同属 3.8.3」代替实测。

## 冒烟矩阵（2026-08-19，两 x86_64 模拟器 emulator-5554/5556，真实 OpenIM 现网）

- 测试账号：`t1001`（Test One，emulator-5554）、`t1002`（Test Two，emulator-5556）。
- 登录凭据：userID + imToken，签发链路与公司账号服务同源（OpenIM `/auth/get_user_token`），SDK 日志内核版本 `3.8.0`（hotfix 内核 3.8.3-patch12）。

| # | 能力 | 方法 | 结果 | 证据 |
|---|---|---|---|---|
| 1 | SDK 初始化 | App 启动 `initSDK(apiAddr, wsAddr, listener)` | 通过 | 双端 `IM SDK Status: connecting → connectionSucceeded → syncStart → syncEnded`（GoLog 日志） |
| 2 | 登录（userID+imToken） | 双端自动登录 | 通过 | 双端 `login start` → `login success`（82ms/161ms）→ `conn start`（ws sendID/token，sdkVersion=3.8.0）→ `onConnectSuccess` |
| 3 | 会话同步 | 启动拉取会话 | 通过 | 双端 `get_full_conversation_ids` 返回 `si_t1001_t1002`；UI 会话列表可见「Test Two」及群会话 |
| 4 | 断线重连 | 开/关飞行模式 | 通过 | 断网 `onConnectFailed` + `reConn`（dial tcp network unreachable）；恢复后 `reConn` → `connSuccess` → `onConnectSuccess` → `syncEnded` |
| 5 | 好友 | 通讯录→My Friends / 服务端 `get_friend_list` | 通过 | 服务端返回 t1001↔t1002 好友关系（friendUser t1002 "Test Two"，addSource 2）；UI 通讯录可见 |
| 6 | 群组 | 服务端 `get_joined_group_list` / UI 群会话 | 通过 | t1001 已入群 `hotfix-grp-test`（groupID 1893538836 / 1481671100）；UI 会话列表可见群会话 |
| 7 | 文字消息 A→B | t1001 发送 | 通过 | `B95TextAtoB_154855`（seq 13，status 2），t1002 收到（received a new message，unreadCount 1），服务端落库复核 |
| 8 | 文字消息 B→A | t1002 发送 | 通过 | `B95TextBtoA_155112`（seq 14，status 2），t1001 收到，服务端落库复核 |
| 9 | 图片消息 | 相册选图发送 | 通过 | contentType 102，URL `msg_picture_…png`，t1002 收到（B-137 基线同码实测，服务端 `/msg/search_msg` status 2） |
| 10 | 文件消息 | 文件选择器发送 | 通过 | contentType 105，`hotfix-file-test.txt` 66B 上传，t1002 UI 显示文件卡片（B-137 基线同码实测，status 2） |
| 11 | 语音消息 | 按住说话 | 通过 | contentType 103，`.m4a` 33,866B 上传，t1002 收到（B-137 基线同码实测，status 2） |

服务端 `/msg/search_msg` 复核：消息均 `status=2`（已发送）。

## 完成标准核对

- [x] `mobile-next` 官方原版 debug/release 可复现构建（见 `docs/upstream/build-and-rollback.md`，本卡实测 SHA256 与包/签名）。
- [x] SDK hotfix.12 兼容冒烟逐项有「通过」结果与证据（初始化/登录/会话同步/断线重连/好友/群组/文字双向/图片/文件/语音），非版本号相近代替实测。
- [x] 任一核心门禁失败即停止：本阶段全部通过，可进入后续公司功能迁移（第 4 阶段）。
- [x] 旧版 `mobile/`、`pc-client/`、`account-service/`、现网服务器与已发布安装包均未改动。

## 已知差异 / 备注

- 登录链路：HTTP 工号密码校验（account-service `/api/login`）属公司业务层，本阶段未接入 mobile-next（符合「不得公司业务迁移」）；SDK 登录使用与账号服务同源的 userID+imToken 实测通过。
- hotfix 插件自身 `android/build.gradle` 声明 AGP 8.7.3/compileSdk 35，被应用工程工具链（AGP 7.3.1/compileSdk 34）覆盖，行为以应用工程为准，双构建均通过。
- 语音通话（LiveKit）不在本阶段范围，未测。
- 图片/文件/语音三条在 B-137 基线以相同代码完成实测，本卡按同码基线复核服务端落库记录。

## 回退

见 `docs/upstream/build-and-rollback.md`；SDK 接入提交（`2c9dab1`）改 3 个 `pubspec.yaml` + 1 个 `pubspec.lock` + 1 个实测记录文档，可单独 `git revert`（会一并撤掉该文档）。
