# Meeting Attendance 单元测试报告（2026-03-04）

## 1. 变更背景

- 问题：`/meetingattendance/integrations/outlook` 候选会议在未勾选“包含历史会议”时，部分应显示的系列会议（`seriesMaster`）被隐藏。
- 影响范围：`GET /meeting-attendance/integrations/outlook/candidates` 的系列主会议过滤逻辑。

## 2. 测试范围与类型选择

- 类型：单元测试（Unit）
- 原因：本次修复为纯后端过滤判定逻辑（基于同步游标新鲜度），无需数据库事务或跨系统交互。

## 3. 执行命令

```bash
cd backend
npx jest test/modules/meeting-attendance/unit/outlook-sync.service.spec.ts --runInBand --config '{"transform":{"^.+\\.ts$":"ts-jest"},"testRegex":".*\\.spec\\.ts$","moduleFileExtensions":["ts","js","json"],"moduleNameMapper":{"^@/(.*)$":"<rootDir>/src/$1","^@core/(.*)$":"<rootDir>/src/core/$1","^@engines/(.*)$":"<rootDir>/src/engines/$1","^@modules/(.*)$":"<rootDir>/src/modules/$1","^@common/(.*)$":"<rootDir>/src/common/$1"}}'
```

## 4. 测试结果

- 结果：通过
- 用例数：4
- 通过：4
- 失败：0

覆盖场景：
- 游标不存在 -> 不启用严格系列过滤
- 游标过旧（超过 10 分钟）-> 不启用严格系列过滤
- 游标在 10 分钟内 -> 启用严格系列过滤
- 系列实例快照已存在但被筛选条件过滤 -> 不回退请求 Outlook（避免无意义外部请求）

## 5. 最小复现/验证步骤

1. 打开 Outlook 同步页面：`http://localhost:3000/meetingattendance/integrations/outlook`
2. 保持“包含历史会议”未勾选，观察候选系列是否仍显示。
3. 若本地快照游标滞后（>10 分钟），系列主会议不应被严格未来实例过滤误隐藏。
4. 勾选“包含历史会议”前后，列表差异应主要来自历史/取消筛选，不应出现“仅因快照滞后导致的系列漏显”。

## 6. 偏离与阻断

- 无。
