# Brainstorm Summary - Change: weapp-capsule-safearea - Date: 2026-06-24 ## 确认的技术方案 采用「统一移入 TopBar + 自动包裹 right slot」的方案: 1. 新增 `CapsuleSafeArea.vue` 组件,基于 `uni.getMenuButtonBoundingClientRect()` 计算胶囊安全宽度,以 wrapper 形式给 slot 内容加 `margin-left`。 2. `TopBar.vue` 内部自动用 `CapsuleSafeArea` 包裹 right slot,页面无需感知安全区。 3. 三个首页组件和 `TaskListView` 从自定义 header 重构为使用 `TopBar`;`ScheduleView` 的「今天」「新增排班」均移入 `TopBar` right slot。 ## 关键取舍与风险 - **取舍**:选择 TopBar 自动包裹而非 spacer/composable,是因为最符合「统一移入 TopBar」的目标,页面改造成本最低。 - **风险**:`uni.getMenuButtonBoundingClientRect()` 可能获取失败,使用基于屏幕宽度的估算值兜底。 - **风险**:横屏/旋转时胶囊尺寸变化,当前不做实时监听,后续如需可单独提 change。 ## 测试策略 - `npm run type-check` - `npm run build:mp-weixin` - 微信开发者工具真机检查 - H5 构建确认布局无回归 ## Spec Patch 将回写 `openspec/changes/weapp-capsule-safearea/specs/weapp-capsule-safearea/spec.md`: - 明确首页、任务列表需要从「自定义 header」重构为使用 `TopBar`。 - 明确 `ScheduleView` 中「今天」和「新增排班」均移入 `TopBar` right slot。 - 明确 `CapsuleSafeArea` 采用 wrapper 形式给 slot 内容加 `margin-left`。 - 补充 API 失败时的回退行为验收场景。