# Next Session Pickup — Notification 组件双轴重构:收尾构建 + Code 同步

> 生成: 2026-06-10 session 收尾。这是 **Figma 库写操作 + 破坏性 code 同步** 任务(owner-directed,figma-write-scope 授权)。
> 起手第一句: `按 docs/internal/_plans/next-session-pickup-2026-06-10-notification-two-axis-build-and-sync.md 继续 Notification 双轴重构`

---

## 0. 起手必读
6-step onboarding + `git log/status`(注意并行 session 的 dirty 文件 `.claude/settings.json` / `skills/shared-vocab-rules/vocabulary.md` **别动**)。
**Figma 写操作前 mandatory 加载 `figma-use` + `figma-generate-library` 技能**(后者管 component properties / 布尔属性绑定)。

## 1. 已完成(Figma 里,live,**未 publish、未进 code**)
file `YbsPRUVmNdsbN40NNwh1Gn`,Notification 组件集 node **`1408:17154`**。已从扁平 `status` 重构为双轴:
- `form`:slide / dialog / quick confirm · `type`:none/info/success/warning/error/secondary warning · `theme`:dark/light
- 24 变体;category 图标加在 **title 左侧**;占位文案已通用化(标题 `Notification title`、描述 `This is a sample notification message.`、按钮 Cancel/Confirm);Title=`Text/Text_1`#f8f8f8(亮)、Description=`Text/Tips`#9e9e9e(弱化)层次已修。
- **owner 的图标选择(已落 Figma,code 跟随)**:slide warning=`icon/Message/warning 2`(1517:27744 橙实心圆!)、error=`Error 4`(1168:23924 红实心三角!)、success=`Success 2`(1168:20881)、info=`Info 2`(1168:23690)。owner 已知并接受 warning/error 形状与惯例略反。

## 2. 锁定的模型决策(owner 拍板)
- **type 分工**:**slide**={none,info,success,warning,error}(被动告知);**dialog**={none(确认),warning,secondary warning,error}(需决策,**无 success/info**);**quick confirm**={none}。
- **closable + 操作按钮(0/1/2)= 布尔组件属性**(Element/Ant 做法,不做变体爆炸):`closable`(关闭×)/`cancel`/`confirm`(两个按钮布尔组合出 0/1/2)。

## 3. 剩余构建(Figma)
1. **删** `dialog × {success, info} × {dark,light}` = 4 变体(success/info 只归 slide)。当前 dialog 有 6 type,删后留 {none,warning,secondary warning,error}。
2. **建布尔属性**(`figma-generate-library` + use_figma):`closable`/`cancel`/`confirm`,绑定 close×/各按钮的 `visible`。**关键**:slide 当前**无按钮** → 要先给 slide 变体加 2 个(默认隐藏)可 toggle 的 Button instance(用 canonical Button `314:47909` ghost / `314:47919` fill green),再绑布尔属性。
3. **按钮色/文案 normalize**:dialog type=none + quick confirm 的主按钮当前是**红色**但文案是 `Confirm`(上轮 Delete→Confirm 改的,红=销毁色与中性 Confirm 不一致)→ owner 定:主按钮改**绿配 Confirm**(中性确认默认)还是**红配 Delete**(销毁确认);建议中性默认=绿/Confirm,销毁交给布尔/consumer 配置。
4. 截图自验(每步)。
4. **publish**:owner 在 Figma 桌面 Assets→Publish(plugin API 无此方法)。

## 4. Code 同步(breaking,大)
- `pnpm sync:figma-library --with-extract`(⚠️ 文件变了→快门不命中→全量重导 640 图标 ~5min + 组件 extract + 全 audit)。
- **重构 Notification API**:`status` → `form` + `type` + 布尔 props(`closable`/`cancel`/`confirm`)。涉及:`src/canonical/Notification.vue` + `src/components/Notification/Notification.vue` + `NotificationPage.vue`(状态轴改双轴 + **我上轮加的 side-pop demo 现用 `status="side pop"` 必须改**)+ 所有 `<Notification status=>` 调用 + tests + translation/divergences 登记 + **迁移文档 + major changeset**。
- **consumer 迁移映射**(草案,info 归属需 owner 终裁):
  - `status="warning"` → `form="dialog" type="warning"` · `"error"` → `dialog/error` · `"secondary warning"` → `dialog/secondary warning`
  - `"pop confirm"` → `dialog type="none"` · `"quick confirm"` → `quick confirm type="none"`
  - `"side pop"` → `form="slide" type="none"`(或带 category)
  - `"info"` → ⚠️ 旧 info 是 standard(dialog),新模型 info 仅 slide → 迁移到 `slide/info` 还是 `dialog`?**起手问 owner**。
- gate:vitest / vue-tsc / `test:render-verification` + `audit:render-drift-gate`(A 不回归)/ `audit:self-audit-phase2` / `audit:figma-vs-sot`。

## 5. 纪律
- **Figma 是真源,起手先 read 当前 Figma 状态**(本模型本 session 改了很多轮,以 live 为准,别凭本 pickup 假设)。
- owner 直 commit master + push;`src/**` breaking → major changeset + 迁移文档。
- 视觉 commit 需 `VISUAL_COMMIT_APPROVED=1`(owner 看过)。
- 教训(本 session):用 `node.characters=` 改文案会把 styled text 的 fill 压平到首字符样式 → 改完必查颜色/绑定未被改平(本次 slide 描述被压成 Text_1,已修回 Tips)。
