# 成员统计审查与验证

## 范围与结论

审查插件相对 official/dev `49f9c57` 的本任务差异，以及 Chat 后端相对 develop `ebf0109` 的完整差异；覆盖已部署功能提交 `73809d7` 和本次审查修复。客户端参考 `97800db`，仅运行载体，无源码修改。未追逐其他业务分支或改动测试账号昵称。

保留“基础名单分页、资料按批补齐”的既有架构。Chat 持有查询与权限，插件 Host 持有安全引用和展示投影；UI、SDK、Tools 复用同一业务入口。统计需求通过请求字段表达，不建立第二套数据源或生命周期。

## 已确认并修复的问题

| 问题 | 修复 | 证据 |
| --- | --- | --- |
| 统计聚合失败会阻断成员资料，慢统计会占满资料请求预算 | 统计使用独立 2 秒子上下文；失败仍返回身份，去除响应中的旧计数，取消仍失败 | Handler 回归先失败后通过，覆盖未请求、成功、失败、父请求取消、权限拒绝；校验原成员 extra 未被修改 |
| 非法统计被标记未知，但越界数字仍可能进入缓存校验，导致整批资料更新被拒绝 | Host 统一校验两个非负安全整数，未知值归一化为安全占位，展示依据 statsKnown | 真实 Host、SQLite、公开 SDK 合同覆盖缺失、负数、小数、两个字段分别越界、真实零与非零 |
| 未知统计被成员目录标记为新鲜，后续读取可能直接复用不完整状态 | 复用原有 presentationFailed/stale 判断，未知统计也允许下次正常刷新 | 失败时身份可用；下一次读取补齐；成功后不重复请求，无新增定时器 |

## 架构、数据与资源核对

- 基础分页不等待统计；成员资料最多两批并行、每批 50 人，复用既有请求协调器、取消和生命周期。
- 不把成员身份、资料可用性、统计已知、实际零值、无昵称与权限失效混为一谈；权限拒绝仍清除对应成员缓存，统计失败不删除成员。
- 聚合复用原发送记录与提及记录语义；快记按当前群及目标 sender 过滤，提及计数包括 @所有人，不以当前加载页长度推算总数。
- Mongo 实际请求只包含两次聚合，使用现有 sender/mention 索引。100 条测试数据中快记查询扫描 10 个索引键、10 条文档；提及查询扫描 5 个索引键、0 条文档。Explain 无 COLLSCAN，无新增索引。
- 业务集合没有新增写入、迁移或持久状态。响应 extra 使用既有克隆投影；失败清理不会改动原成员数据。
- 插件沿用已有 statsKnown 数据合同，不增加版本分支、旧接口探测、双读兜底、配置项、依赖、提示词、根 README 或版本号修改。

## 验证

- 插件全量 4915 项通过、6 项跳过；相关测试 32 项通过，覆盖 SDK、官方 DSH ToolRuntime、真实 SQLite、UI 菜单和 500 人慢网络分页；typecheck 通过。
- Chat Handler 包全量测试、相关真实 Mongo 测试、go vet、backend_guard 通过。
- 原有 Chat Mongo 全包的 12 项失败已在未修改基线复现；这不是全包全绿证明。测试机没有 Docker，Mongo 检查使用独立临时目录中的原生 Mongo 7.0.14。
- 初次部署后的真实测试群 23 名成员计数与旧完整名单逐人一致，100 人群全部资料与统计已取得；51 个空昵称为测试账号现有数据，按用户要求不处理。

## 既有问题与边界

此前额外发现的入群提示问题（空群昵称丢事件、邀请人跨页丢引用）位于未修改的基线投影逻辑，本轮未混入统计修复，也不声称它们已经修复。

尚未做 Windows/Linux 实机和长期压力测试。无平台代码变更；本轮不能据此承诺任何环境下绝无缺陷。最终提交、部署和桌面复验状态在交付时分别记录。

## 最终交付状态

后端审查修复已提交并推送为 `ae68cc6accd0a32f05c902b813315fab18d93247`，develop 集成提交 `69959942884643f21f5c83884201c735c55a318c` 与功能分支源码树一致；测试流水线 #668 签出该 SHA，构建、分发、重启均为 SUCCESS。

插件最终 tgz 已通过包清单、路径检查，并安装到官方 DSH 0.1.1-rc.2 的全新 Profile。隔离运行验证了 7 名成员在统计不可用时仍返回身份，后续恢复为 0 至 6 条。统计未知/恢复没有额外协议探测或全名单请求。

本任务 Arkme Test 已重启加载最终代码并保持运行；真实百人群缓存包含 100 名成员，100 人统计均已知，非零数包括 280、101、4、2、1。成员面板与输入框可用；重启后窗口置前即正常显示，未见 renderer/slot 崩溃。原有正式客户端未被操作。

插件版本保持 0.1.49；客户端、DSH 上游源码未改。审查专用 Mongo、合成 Profile 进程与合成凭据已清理，真实测试客户端和用户数据保留。

## 提交前基线复核

后端 MR 从最新 master `aee1dc3` 仅提取本次两笔提交，未包含 develop 的其他功能；新基线上的 Handler 全包、相关 Mongo/Explain、go vet 和规范检查通过。

插件提交前已适配 dev `4b70c9c`。该上游提交中的 `src/services/conversation-directory-service.ts` 引用了未入库的 `src/chat-pin-projection.ts`：本分支和未修改的独立 dev worktree 均报相同 TS2307。此前 4915 项全量通过对应初审基线；适配后 4 个相关测试文件、36 项通过，另一个合同测试文件被上述上游缺文件阻断。未将此上游置顶投影修复混入成员统计 PR，也未将当前门禁记为全绿；测试客户端保留已验收的运行产物。
