# Sketch 测量正确但页面结构仍然漂移

> **问题标签**: `sketch`, `measure`, `设计稿还原`, `结构漂移`, `route title`, `l10n`, `cta`, `bottom button`
> **框架**: Flutter
> **严重程度**: 高

---

## 🔍 问题识别

### 用户描述关键词
- "设计稿左边和生成页右边对不上"
- "参数都测到了，但页面结构还是错了"
- "顶部入口被做成了底部按钮"
- "标题/分组被现有页面语义改写了"

### 问题特征
- [ ] 标题被替换成现有路由标题或 i18n 文案
- [ ] 设计稿顶部入口卡片被迁移成底部固定 CTA
- [ ] 原本单列结构被套成“常用/其他”之类的业务分组
- [ ] 搜索栏、section 标题、列表顺序与设计稿不一致
- [ ] 颜色/阴影看起来接近，但整体骨架就是不对

---

## 🎯 核心原理

**根本原因**：测量工具只提供节点参数而没有提供页面级结构合同，AI 在已有业务项目中会优先套用现成页面语义、通用组件和 CTA 习惯。结果变成“样式参数部分正确，但页面信息架构错误”。

这类问题不能靠继续微调 padding、borderRadius 或 icon size 解决，必须回到页面骨架级别重建约束。

---

## ✅ 正确解决方案

### 1. 先锁定页面级 contract

- 首轮优先使用 `sketch_measure(cmd: "compact")`
- 先读取 `restorationContract.pageTitle / blockOrder / bodyCopyLedger / hardRules`
- 代码结构必须逐块对应 `blockOrder`，不能因为现有业务组件更顺手就改骨架

### 2. 明确优先级

1. `restorationContract`
2. 设计稿截图中的真实结构
3. Token 与局部可复用样式
4. 现有项目里的标题、文案、分组和 CTA 习惯

### 3. 典型修正动作

- 把标题改回测得值，而不是沿用现有管理页标题
- 把顶部入口恢复到顶部，不再做成底部固定按钮
- 拆掉通用列表组件附带的“常用/其他”分组
- 按设计稿重新排列搜索栏、section 标题和卡片的层级顺序

---

## ❌ 常见错误排查路线（避免重复）

| 尝试方向 | 为什么无效 | 浪费时间 |
|----------|-----------|---------|
| 继续调 padding / gap | 结构错了，间距再准也不对 | 1-2 轮 |
| 继续调颜色/阴影 | 样式接近不代表骨架正确 | 1 轮 |
| 复用现有业务组件再微调 | 组件自带 section/header/footer/CTA，会持续污染结构 | 2-3 轮 |
| 把文案当成可自由产品化内容 | 会掩盖标题和 section 的真实层级 | 1 轮 |

---

## 🧪 快速核对清单

- [ ] 标题等于 `restorationContract.pageTitle`
- [ ] 每个顶层块都能在 `blockOrder` 中找到对应项
- [ ] `bodyCopyLedger` 中的关键文案没有被改写
- [ ] 未新增 contract 中不存在的 bottom CTA / section / icon
- [ ] 若存在 `topPrimaryEntry`，它仍在顶部区域

---

## 🔗 相关规范

- `design-restoration`
- `sketch-pitfalls`
- `sketch-mcp`