# Meeting Attendance Outlook Sync E2E 报告（2026-03-04）

## 范围
- Outlook 同步页面：候选会议、已纳管会议、同步设置
- 绑定/取消绑定/对账
- 系列会议展开与子会议展示
- 会议详情参会人展示（内部+外部）
- 签到流程冒烟（从会议进入签到页到结束）

## 环境
- URL: `http://localhost:3000/meetingattendance`
- 浏览器: Playwright MCP (Chromium)
- 账号: `yq.yang@ff.com`（Meeting Attendance Admin）
- 执行时间: 2026-03-04

## 用例记录

### 第1组（1-6）
1. 候选列表基础加载
- 结果：通过
- 证据：候选首屏 20 行，存在 `Series Master`（如 `IT meeting (102)`）

2. 默认“包含已取消”筛选
- 操作：未勾选 `Include cancelled`
- 结果：通过
- 证据：当前页 `cancelledRowsCount=0`

3. 候选分页切页回退
- 操作：候选 `Next` 后再 `Prev`
- 结果：部分通过
- 说明：数据能回到第一页且不为空；但页面滚动位置跳到下方（`scrollY` 从 0 到 1519），存在体验问题

4. 系列展开与子实例展示
- 结果：通过
- 证据：`IT meeting` 展开后子实例 102 条，显示 `Occurrence`，且操作为 `Exclude occurrence`（非纳管按钮）

5. 候选单项纳管反馈
- 结果：通过
- 证据：点击 `Manage` 后约 2.3s 返回 toast：`Managed successfully`

6. 已纳管取消纳管反馈
- 结果：通过
- 证据：点击 `Unmanage` 后约 1.3s 返回 toast：`Unmanaged (future sync stopped, history retained)`

### 第2组（7-12）
7. 触发对账反馈
- 结果：通过
- 证据：点击 `Run Reconcile` 后 405ms 内出现 toast：`Reconcile triggered and data refreshed`

8. 已绑定会议总览（Administrator 专属）权限
- 结果：受限（符合预期）
- 证据：当前 `Meeting Attendance Admin` 访问 `/meetingattendance/integrations/outlook/bindings-all` 返回 `Insufficient Permissions`

9. 会议详情参会人一致性（会议 `cmmbf3bhc1tuljx5hwsymbjj4`）
- 结果：通过
- 证据：
  - 内部参会人：2（Channing Matthews、Yongqiang Yang）
  - Outlook 外部参会人：7（含 Organizer + 外部参会人）
  - 未发现“内部参会人被重复写入外部参会人列表”的问题

10. 签到流程冒烟（会议详情内手动签到）
- 操作：将 2 位参会人状态改为 `On Site` + `Online`
- 结果：通过
- 证据：统计卡片实时变更为 `1 On Site / 1 Online / 0 Not Checked In`

11. 候选接口性能（快照链路）
- 结果：通过
- 证据：点击候选 `Refresh` 后 `GET /integrations/outlook/candidates` 94ms 返回，`status=200`，`total=66`，`sourceLagSeconds=109`

12. 系列子会议纳管入口与分页滚动体验回归
- 结果：通过（已修复）
- 证据：
  - 系列 `Occurrence` 子行无 `Manage` 按钮（`hasChildManage=0`）
  - 分页切换后锚定到候选区块（`sectionTop` 回到约 12px），不再跳到其它模块

## 总结
- 通过：10
- 受权限阻断（预期）：1
- 失败：0

### 第3组（13-18）
13. 筛选一致性：包含已取消
- 结果：通过
- 证据：未勾选时 `0` 条已取消；勾选后当前页 `13` 条已取消。

14. 筛选一致性：仅显示未纳管
- 结果：通过
- 证据：勾选后当前页 `Managed/已纳管` 标签数量为 `0`。

15. 候选分页往返稳定性
- 操作：第1页 -> 第4页 -> 第1页
- 结果：通过
- 证据：
  - 第4页首条存在（非空）
  - 返回第1页后首条恢复 `IT meeting`
  - 区块锚定正常（`sectionTop≈12`）

16. 候选纳管 -> 已纳管可见
- 结果：通过
- 证据：纳管后 toast `Managed successfully`；在已纳管区按标题关键词可检索到目标绑定。

17. 数据同步到会议管理可见
- 结果：通过
- 证据：会议管理页可见同步会议卡片，含统一时间展示（会议时区 + 观察者时区）。

18. 同步设置保存反馈
- 结果：通过
- 证据：点击 `Save` 后约 1.1s 出现 toast `Saved successfully`。

## 终版结论
- 通过：16
- 受权限阻断（预期）：1（`bindings-all` 仅 Administrator 可访问）
- 失败：0

### 第4组（Administrator 补测，19-22）
账号：`itadmin@ff.com`（邮箱免密登录）

19. `bindings-all` 权限与入口
- 结果：通过
- 证据：Administrator 账号可访问 `/meetingattendance/integrations/outlook/bindings-all`，左侧可见 `Bound Meetings` 菜单。

20. `bindings-all` 系列展开
- 结果：通过
- 证据：首个系列展开后可见 `Occurrence/Exception` 子行，当前样本子行数 `102`。

21. `bindings-all` 分页锚定体验
- 结果：通过
- 证据：翻页后页面锚定在 `outlook-bindings-all-section`（未跳转到其他模块）。

22. `bindings-all` 搜索与刷新
- 结果：通过
- 证据：按标题关键词搜索后结果收敛，刷新后列表恢复并正常分页。

## 最终交付状态
- 全链路（数据获取、同步、会议详情、签到状态完成）MCP 实测已完成。
- 发现问题已修复并回归通过（系列子会不可单独纳管、分页跳转体验）。
- 上线说明已落地：`docs/setup/04-meeting-attendance-outlook-go-live.md`。

