# B-185 / B-171 第二批交互补齐验收与回退

分支：`agent/agent/7b089146`
基线：`fb58da6`（B-171 第一批完成点）
架构：B-90；视觉：B-91 `changlian-visual-spec-v2.md`

本批不换标、不部署、不发安装包；LiveKit 未迁。

## 提交主题（可逐项 `git revert`）

从新到旧回退：先 B-189，再 B-188 验收补记与 `d9d5853`，再原第二批验收提交，再按下表从下往上 `git revert`。

| 主题 | SHA | 主要文件 |
|---|---|---|
| 状态线性图标与 toast/断网横幅动效 Token | `ce2a3ae059be4de480b73ee585d36a051b303fd0` | `app_tokens.dart`、`state_views.dart` |
| 手机会话页：搜索、+ 菜单、长按置顶/删除、去掉置顶角标 | `7f131457f7f5d0a30ca81414c7dc94ede6f59d84` | `conversation_view.dart` |
| 通讯录部门分组、职务行、申请窄屏 | `49b346d375e9b9b62c3a59c6f6970c7facfba94b` | `contacts_logic.dart`、`contacts_view.dart`、`friend_requests_view.dart` |
| 聊天输入区、语音气泡、大图、录音与字号映射 | `3b87812db8945c3b7fa6d4c0eddddb35f5ab10f3` | `chat_*.dart`、`apply_official_styles.dart` |
| 工号查询防抖、控制器生命周期、开关、资料页工号 | `26622676ed4f4898385d8e9e686296eb56adf4be` | `add_colleague_page.dart`、`app_pages.dart`、`company_login_page.dart`、`my_info_view.dart`、`personal_info_view.dart` |
| 断网横幅恢复后 300ms 收起、底栏 12px | `d1657ea29f0fc59f248f2108d7cfb9bcc239921e` | `home_view.dart` |
| PC 第二批登录/会话/聊天/添加同事/职务行/i18n | `a44537da4e8ce7b5b17b491c05592ad21cdd0bca` | `pc-client/src/pages/**`、`ApplicationItem`、`i18n`、`global.scss`、`docs/acceptance/pc-boundary.md` |
| 第二批验收记录 | `a4d21ef36777440812c6746cd792eeaf7685cd5c` | `docs/acceptance/b171-batch2.md` |
| B-188 定点返工：PC 会话置顶改 `setConversation` | `d9d5853f73aa8060c9ed768c326f00d691847e3e` | `pc-client/src/pages/chat/ConversationSider/ConversationItem.tsx` |
| B-188 验收补记 | `e40ece1` | `docs/acceptance/b171-batch2.md` |

回退 B-188：先 `git revert e40ece1`，再 `git revert d9d5853f73aa8060c9ed768c326f00d691847e3e`。

## B-189 语音区返工（相对 `e40ece1`）

依据：B-187 打回三项阻塞 + 输入框/`按住 说话` 底色 `searchBg`。不处理其余黄色建议。

| 主题 | SHA | 主要文件 |
|---|---|---|
| 未听红点、录音浮层入场/取消区、50–60s 时限、searchBg | `15d7f1935e38c18d127319346cf03d278b596b2c` | `chat_voice_*.dart`、`chat_item_view.dart`、`chat_input_box.dart`、`apply_official_styles.dart`、`styles.dart` |

回退 B-189：先 `git revert` 本补记提交，再 `git revert 15d7f1935e38c18d127319346cf03d278b596b2c`。

静态核对（对照代码，非运行）：

- 未听红点：接收且 `message.isRead == false` 时在气泡右侧 8px `danger`；播放走既有 `_playVoiceMessage` + `_markMessageAsRead`，不另造状态。
- 浮层入场：150ms ease-out 透明度 0→1，`Styles.motionOf` 接到 `AppMotion.reduce` / `AppDuration.overlay`；取消区保持 `rgba(0,0,0,0.7)` 黑卡，仅垃圾桶与提示改 `danger`；切换时长走 `AppDuration.overlaySwitch`。
- 50s：计时改 `warning` 文案「还可说 N 秒」；60s：既有 `ChatRecordVoiceView` 中断→dispose→一次 `onCompleted`，toast「已达最长 60 秒，已自动发送」。实例级 `_completed` 避免重复发送；timer 在 dispose 取消。
- 输入框与「按住 说话」底色改为 `Styles.c_F2F3F5` ← `AppColors.searchBg`，不再用 `c_F0F2F6`/`chatBg`。

## 检查

- `dart format` / `flutter analyze` / Android debug+release：**未跑。** 本环境 PATH 中无 `flutter`/`dart`/`java`，不推定通过。
- PC `npm run lint` / `vite build`：B-189 未改 PC、未重跑。B-188 当时 `npm run build` 通过，见下节。
- 运行截图：无 Flutter 工具链、无测试账号、无客户端进程，**未截图、未实测**未听红点/播放清除/取消手势/50–60s 倒计时/到限自动发送与 toast。不得推定通过。

### B-188 定点返工检查（2026-08-20）

- 改动：`IMSDK.pinConversation(...)` → `IMSDK.setConversation({ conversationID, isPinned: !conversation.isPinned })`。`deleteConversationAndDeleteAllMsg` 未改。
- PC `npm run build`：**通过**（vite `✓ built in 31.30s`，随后写出 `dist-electron/**`）。
- `npx tsc --noEmit`（实际调用 `node node_modules/typescript/bin/tsc --noEmit`）：`ConversationItem.tsx` **无本批新增错误**（无 TS2551 / `pinConversation`）。
- 会话右键「置顶/取消置顶」：**未实测**（无登录运行环境、无客户端进程），不得推定通过。
- 黄色建议：未处理。

`tsc --noEmit` 上游存量错误（非本卡引入，未修）：

- `src/hooks/useGroupMembers.ts` TS18047 ×3（`latestFetchState.current` possibly null）
- `src/layout/LeftNavBar/About.tsx` TS2345 ×2（`OnUploadLogsProgress` 回调类型）
- `src/pages/chat/queryChat/useHistoryMessageList.tsx` TS18047 ×1
- `src/pages/common/ChooseModal/ChooseBox/index.tsx` TS18047 ×2
- `src/pages/common/RtcCallModal/index.tsx` TS2786（`LiveKitRoom` JSX）
- `src/pages/common/RtcCallModal/RtcControl.tsx` TS2786 ×2（`TrackToggle`）
- `src/pages/common/RtcCallModal/RtcLayout.tsx` TS2786（`VideoTrack`）
- `src/pages/common/UserCardModal/index.tsx` TS2345
- `src/utils/imCommon.ts` TS2322 ×11（`string | undefined` → `string`）

## 越界比对（对比 `e26abad`）

零改动：`mobile/`、`pc-client/src/store/`、`pc-client/src/layout/MainContentWrap.tsx`、`pc-client/src/pages/chat/queryChat/ChatFooter/useSendMessage.ts`、`pc-client/src/pages/chat/queryChat/useHistoryMessageList.tsx`、`account-service/`。

`pc-client/electron/`：仅既有 `main/windowManage.ts` 的 `minWidth=1080`、`minHeight=680`（B-171 特批），本批未再改 electron。

`pc-boundary.md` 已扩到与 B-90 / B-185 一致：登录窗、chat **展示**、`AddColleague.tsx` 列入可改；发送/历史/store/SDK 初始化仍冻结。PC 聊天顶栏去掉「语音通话」入口；RTC 死代码未删。

B-189 改动限于 `mobile-next/openim_common` 语音/输入部件、Token 接线、`mobile-next/lib/pages/chat/chat_view.dart` 自定义语音气泡防双重气泡，以及本验收记录。

## 未验证（缺账号环境，禁止推定通过）

- HTTP 正确密码登录
- 双向消息收发
- 服务端好友申请 `status=2`
- LiveKit / 语音通话（本阶段不迁、PC 不建设）
- 登录窗独立 360×480：受 electron 冻结限制，本批只改登录页展示，未改窗口尺寸
- B-189 全部录音/未听红点运行时表现

## 品牌

未换标。手机登录仍按开关保留 OpenIM 标识。不增删品牌资源。

功能质检与视觉审核须重新执行，本卡不自行宣布整批通过。
