# 系统性 Review 2026-05-09 (META-F27)

> **触发**：用户在 F23 收尾后问"当前完成多少 / 剩多少 / 完整计划是什么 / 是否需要 review 文件夹合理性 / 假数据 / 历史遗漏"
> **执行**：plan owner read AGENTS.md + PROJECT_GOAL + PROJECT_MAP + working-principles + 最近 4 份 retrospection + backlog Active+Resolved，并行派 5 个 Explore agent 做 dead code / normalized JSON 孤儿 / figma-sync 脚本 / docs 组织 / 完成度量化五维深度审计
> **目的**：识别 dead code / 假数据 / 历史遗漏 / 双源混乱 + 量化进度 + inform F20 baseline scope
> **本报告身份**：plan owner audit report，非自动改动；用户读后决定哪些 cleanup 立刻 commit / 哪些挪进 backlog / 哪些不动

---

## TL;DR

1. **总完成度 ~70%**（roadmap 16 段：✅ 7 / 🟡 4 / 🔴 3 / 🔵 2）。架构、决策、token、样板、EP 导航、T4-spike 全完成。
2. **v0.1 真正阻塞物：npm 发布链路完全缺档**——`CHANGELOG.md` / `INSTALL.md` / `.github/workflows/` 全无，仅 `package.json` exports 配置好。这比 F20 baseline 更优先（F20 是回归保护，npm 文档是 "客户怎么装"）。
3. **dead code 真候选只有 4 项**（src/legacy/index.ts 0 consumer / 3 个仓库根 .mjs / 2 个无 alias 的 audit 脚本），数量远小于 backlog META-F27 entry 当初列举的"双源混乱"清单。
4. **backlog META-F27 entry 自己有 2 处失实**（CheckBox 双目录不存在 / canonical-components.json 等所谓"未消费 JSON"实际全活）——**review 修正了这些声明**。
5. **figma-data/normalized 11 顶层 JSON + 3 子目录全部活跃，0 孤儿**。Agent B 实证消费链可追，无清理空间。
6. **真死 audit 脚本：2 个**（`audit-canonical-figma-alignment.mjs` 1071 行 + `audit-component-token-fidelity.mjs` 1809 行 = 共 2880 行无 npm alias、无脚本调用、仅 docs 历史 reference）。可删。
7. **docs/internal 顶层 30+ 历史 report 应聚合到 `_reports/` 子目录**——不影响功能但 onboarding 时新 AI 容易误读为当前 SoT。
8. **F20 边界建议**：先做"必删 cleanup"（src/legacy + 3 untracked + 2 死 audit + 真源分叉链接补），再录 baseline，避免 36 张基线锁进当前噪音。
9. **必读链路缺 2 个项目级真源链接**：`mockup-conventions.md` / `figma-component-catalog.md` 已 commit 但 AGENTS.md 必读链路未收录——必须立刻补。

---

## 1. 完成度量化（应做多少 / 已做多少 / 剩多少）

### 1.1 PROJECT_GOAL roadmap 16 段（基于 Agent E + 实证验证）

| roadmap 段 | 状态 | 完成% | 替代/吸收 entry | 关键 commit / 备注 |
|---|---|---|---|---|
| 0-3 架构层 | ✅ | 100% | — | working-principles + 翻译层 6 文件 + meta-rules |
| 4 模式聚类 | ✅ | 100% | — | 134→10 项压缩 |
| 5 决策 B1-B10 | ✅ | 100% | — | 全按推荐方案 |
| 6.1 翻译层登记 | ✅ | 100% | — | 无代码改动 |
| 6.2a/b Token | ✅ | 100% | — | 5 组件 hex→token + 10 新 token |
| 6.3 删除自创（Notification.success/type） | 🔴 | 0% | — | 未启动；可 post-launch |
| 6.3.5 canonical 反向 audit | ✅ | 100% | 被 Phase X.4.2 替代 | 19 components canonical 完全对齐 figma（`038ff35b`）|
| 6.4 运行时能力（showCount/multiple/editable） | 🔴 | 0% | — | 未启动；可 post-launch |
| 6.5 微结构修复 | 🟡 | ~60% | 被 Phase A4/X.4.2 吸收 | warning glyph / 按钮色 / side pop close 已修；PromptMessage L width 待 |
| T2 样板（Badge/Tooltip） | ✅ | 100% | — | `f6e9a77a` |
| **T2 批量（19 base + 18 page）** | 🟡 | **~85%** | — | base components 全 ✅；docs page 18 个全 toggle-aware ✅；F24 page theme 范式（inject vs prop）双轨待用户决策 |
| T3 EP 导航 | ✅ | 100% | — | `aaa537ff`（22 page 元数据）|
| T4-spike Badge 验证 | ✅ | 100% | — | `b9e5ac3c`（"AI 拿 URL → 1:1 还原"PASS）|
| T4 batch Code Connect | 🔵 | 0% | DEFERRED | Pro plan 限制（需 Org/Ent seat）|
| **npm 包化** | 🔴 | **~30%** | — | exports / version 0.1.0 ✅；CHANGELOG / INSTALL.md / publish CI/CD 全缺 |
| v0.1 上线 | 🟢 | ~70% | — | API 稳定 ✅、docs 完整 ✅；npm 文档 ❌、F20 baseline ❌ |

**总：✅ 7 / 🟡 4 / 🔴 3 / 🔵 2**

### 1.2 retrospection 时间线对照

| 日期 | 主题 | 完成 phase | commit |
|---|---|---|---|
| 2026-04-28 | design-system-audit | 0-3 + 1-3 阶段 | checkpoint |
| 2026-04-29 | meta-rules + bridge-goal | T1a v1 audit + meta-rules.md | `ccf48a0` |
| 2026-04-30 | t4-spike-validated | T4-spike PASS | `b9e5ac3c` |
| 2026-05-06 | t2-sample-extension + Phase A bootstrap | T2 样板 + A1/A2 auto-discovery | `f9ca71c3` |
| 2026-05-07 | phase-a4-deep-debug | A4.0 fix + A4.1 NotificationPage | `8679c3a3` |
| 2026-05-08 | phase-x4-2 + Badge rename | 19 components 对齐 + Badge 三轮 figma roundtrip | `038ff35b` |
| 2026-05-09 (a) | f23-formitem-page-rewrite | F23 完成（toggle-aware 范式收尾）| `5bbc1149` |
| 2026-05-09 (b) | microapps-mockup-retrospect | MicroApps mockup + 库债登记 | `68fc376c` |

**缺复盘的阶段**（D6 实证）：6.2a/b、6.3.5、F19/F20/F22 没有专属 retrospection（散落在 prompt、execution-report、retrospection 中合并提及）。**不强求补**——execution-report 已沉淀；但 onboarding 时需要先看 backlog Resolved + retrospection 双途径。

### 1.3 v0.1 上线 ready check

| 上线条件 | 状态 | 缺什么 |
|---|---|---|
| 19 canonical 组件 API 稳定 | ✅ | — |
| 18 docs page toggle-aware | ✅ | — |
| package.json exports / version 0.1.0 | ✅ | — |
| **CHANGELOG.md** | 🔴 | 整个文件不存在 |
| **INSTALL.md / docs/GETTING_STARTED.md** | 🔴 | 整个文件不存在 |
| **.github/workflows/ (publish CI)** | 🔴 | 整个目录不存在 |
| F20 visual baseline (36 张 dark+light) | 🔴 | 待录制 |
| F21 pre-commit hooks | 🔴 | 待 F20 done |
| 60 unpublished cleanup | 🟡 | 范围未澄清 |

**v0.1 临界路径建议**（修正 Agent E 排序）：

```
[NOW] cleanup commit (本 review 决策的清理项)
  → [NOW] 补 npm 包化 3 个 entry: NPM-001 CHANGELOG / NPM-002 INSTALL / NPM-003 publish workflow
    → INFRA-F20 visual baseline
      → INFRA-F21 pre-commit hooks
        → v0.1 publish
```

**关键发现**：原 v2 plan 完全没把 npm 发布链路文档化纳入，PROJECT_GOAL 里只一句"npm 包化"。这是**本次 review 最重要的暴露问题**——发布前的工程债比代码质量债更紧迫。

---

## 2. Dead code 真候选清单（4 项）

> 修正 backlog META-F27 entry 中的部分声明，实际可删项远少于当初列举。

| 候选 | 路径 | 行数 | 验证证据 | 删除影响 |
|---|---|---|---|---|
| **src/legacy/index.ts** | `src/legacy/index.ts` | ~50 | grep `from.*src/legacy` 0 命中 | 0 consumer，可直接删；如担心外部包用 `@tvu/design-system/legacy` subpath，先 grep `package.json` exports 确认未暴露 |
| **`.f19-cell-labels.mjs`** | 仓库根 untracked | ~80 | playwright 一次性 dark/light label diff，F19 已收尾 | transient 探索脚本，删 |
| **`.f19-visual-audit.mjs`** | 仓库根 untracked | ~120 | playwright 一次性 18 page 截图，F19 已收尾 | transient，删 |
| **`.light-theme-audit.mjs`** | 仓库根 untracked | ~150 | Phase X.4.2 contrast scan 一次性，2026-05-08 复盘已记录方法论 | transient，删 |

### 2.1 backlog META-F27 entry 失实声明修正

| backlog 原声明 | 实际验证 | 修正 |
|---|---|---|
| `src/components/CheckBox/Checkbox.vue` vs `src/components/Checkbox/Checkbox.vue` — 2 个目录大小写不一致 | `find src/components -maxdepth 1 -type d` 实际只有 `Checkbox/`（小写 'box'）一个 | **不存在双目录**。macOS case-insensitive filesystem 当初误判 |
| 已知未消费可疑 JSON：`canonical-components.json` / `skeleton-promotion-plan.json` / `canonical-wrapper-skeletons.json` / `button-generation-sample.json` / `published-vs-code.audit.json` 是否仍 import 不确定 | Agent B 实证全部仍是当前 sync chain 输出且有消费方 | **无孤儿** |
| `src/icons/registry.ts` (legacy) vs `src/icons/catalog/index.ts` (new) — 双 icon registry | catalog 已完全覆盖 registry；registry 0 直接 import；但 `src/icons/index.ts` 仍 re-export `iconRegistry` / `resolveIcon` | **不算 dead**（公共 API surface），是 graceful fallback 设计 |
| `src/legacy/index.ts` 仍 export BaseFormItem; `playground/App.vue` 仍 import — 是否真活仍未知 | grep 0 命中 `from.*src/legacy`；playground/App.vue 直接 import `src/components/`，**不经过** legacy | **legacy/index.ts 真死**；playground/App.vue 不依赖 legacy（但仍非默认入口）|

**结论**：META-F27 entry 当初凭印象列举的"双源混乱"，本次实证后**只有 src/legacy/index.ts 一个真问题**。其它都是误判或 graceful 设计。

### 2.2 不动但应监控

- `src/icons/registry.ts`：保留作 fallback。下次 major bump 时考虑挪到 `src/icons/legacy.ts` + 在 `src/icons/index.ts` 注释标 deprecated（便于外部 bundle tree-shake 提示）
- `playground/App.vue` + `playground/legacy-main.ts`：保留作历史展示页；不在 `pnpm dev` 默认链路（user 手动访问 `/legacy.html` 才加载）。**建议**：在 `playground/legacy.html` 顶部加 banner "Legacy demo — see /index.html for canonical docs"

---

## 3. figma-sync 脚本死代码

### 3.1 真死 audit 脚本（2 个，共 2880 行）

| 脚本 | 行数 | 输出文件 | 状态 |
|---|---|---|---|
| `figma-sync/audit-canonical-figma-alignment.mjs` | 1071 | `docs/internal/canonical-figma-alignment-report.md` | 无 npm alias / 无脚本调用 / 仅 docs 历史 reference / mtime 2026-05-07 18:18 |
| `figma-sync/audit-component-token-fidelity.mjs` | 1809 | `docs/internal/component-token-fidelity-report.md` + `figma-data/normalized/component-token-fidelity.audit.json`（已 2026-05-08 删）| 无 alias / 无调用 / 仅 retrospection 历史 reference / mtime 2026-04-29 |

**Agent C 误判修正**：`audit-page-t2-sample.mjs` 不是死脚本——它是**手动 gate 工具**：
- F23 prompt 直接 `node figma-sync/audit-page-t2-sample.mjs` 调用
- 多份 retrospection / overnight summary 提及 "audit-page-t2-sample 18 page exit 0" 作为完成标记
- 只是没在 `package.json` 里挂 npm script alias

**建议**：`audit-page-t2-sample.mjs` 应**补 npm script alias**（如 `"audit:page-t2": "node figma-sync/audit-page-t2-sample.mjs"`）以提高可发现性，否则下次 onboarding 容易再误判为死。

### 3.2 命名混乱

- `audit-design-system.mjs` 命名过简
- `generate-docs-figma-members.mjs` 顺序反常（应 `generate-figma-docs-members`）
- `audit-canonical-figma-alignment.mjs` 名过长（且死）

**建议**：归在 cleanup 第二批，与"真死 2 个删除"一起做命名统一（重命名 + npm script 同步更新）。

### 3.3 无 npm alias 但活的脚本（2 个）

| 脚本 | 用途 | 建议 |
|---|---|---|
| `generate-docs-figma-members.mjs` (581 行) | 生成 `figma-data/normalized/docs-figma-members/` 20 文件，被 `audit-page-t2-sample.mjs` + `audit-canonical-figma-alignment.mjs` 消费 | 补 npm alias `generate:docs-figma-members` |
| `auto-tokenize-exact-match.mjs` (164 行) | F25 phase C tokenize 工具 | 补 alias `tokenize:exact-match` 或挪到 `figma-sync/tools/`（标识 helper 类） |

---

## 4. figma-data/normalized/ 孤儿审计（结论：0 孤儿）

> Agent B 实证：11 顶层 JSON + 3 子目录全部活跃。

| 文件 / 目录 | size | 消费方 | 状态 |
|---|---|---|---|
| canonical-components.json | 142K | 5 脚本读 | 活 |
| components.manifest.json | 8.1M | 3 脚本读 | 活（核心索引）|
| components-tokenized.index.json | 2.2M | 2 脚本读 | 活 |
| design-system-candidates.json | 476K | 2 脚本读 | 活 |
| figma-styles.json | 6.8K | 1 脚本读 | 活（手动 plugin export，EXTRACT-006 待自动化）|
| variables.json | 9.7K | 5 脚本读 | 活 |
| published-vs-code.audit.json | 13K | audit 输出 | 活 |
| skeleton-promotion-plan.json | 380B | 3 脚本读/写 | 活 |
| button-generation-sample.json | 32K | generate-vue.mjs 输出 | 活（过渡样本）|
| canonical-wrapper-skeletons.json | 2.1K | generate-canonical-wrappers 输出 | 活（人工报告）|
| tokenized-diff-report.json | 171K | audit-tokenized-diff 输出 | 活 |
| components-tokenized/ (4797) | — | 5 脚本读/写 | 活 |
| docs-figma-members/ (20) | — | 3 脚本 | 活 |
| figma-mcp-cache/ (19) | — | 1 脚本读 | 活（MCP 真值缓存）|

**结论**：META-F27 entry 当初列举的"未消费可疑 JSON"清单**全部失实**。`figma-data/normalized/` 是 sync chain 当前产出，无清理空间。

**应做**：在 `docs/PROJECT_MAP.md` 第 2 节"数据来源"表中**补一行说明 `figma-mcp-cache/`**（手动 MCP 回填，不是自动 pipeline 输出，否则下次 sync 时新 AI 不知道为什么这目录不被 extract.mjs 写入）。

---

## 5. docs/ 与 docs/internal/ 组织合理性

### 5.1 应挪位置（建议批量做，不阻塞 v0.1）

| 类别 | 当前位置 | 建议挪到 | 数量 |
|---|---|---|---|
| Phase 执行报告 | `docs/internal/*-execution-report.md` | `docs/internal/_reports/phase-execution/` | 7 |
| t2-sample audit reports | `docs/internal/t2-sample-audit-report.*.md` | `docs/internal/_reports/t2-sample/` | 18 |
| canonical/component audit | `docs/internal/canonical-figma-alignment-report.md` 等 | `docs/internal/_reports/audits/` | 10+ |
| Phase 6.2a 细化报告 | `docs/internal/phase-6.2a-*.md` | `docs/internal/_reports/archived/phase-6.2a/` | 3 |
| 长期 plan v1 | `docs/internal/long-term-plan-2026-04-28.md` | `docs/internal/_plans/long-term-plan-v1-deprecated.md` | 1 |
| pixel review | `docs/checkbox-pixel-review.md` / `docs/radio-pixel-review.md` | `docs/internal/_reports/pixel-reviews/` | 2 |
| 历史 baseline | `docs/input-select-first-pass.md` | `docs/internal/_reports/t1-baselines/` | 1 |
| Component completeness audit | `docs/2026-04-27-component-completeness-audit.md` | `docs/internal/_reports/` | 1 |

**总计 43+ 文件待挪**。**建议**：单独一个 cleanup commit 做所有迁移，commit message: `chore(docs): consolidate historical reports into docs/internal/_reports/`。

### 5.2 必读链路缺的项目级真源（**必补**）

| 文件 | 当前状态 | 应在哪 |
|---|---|---|
| `docs/internal/mockup-conventions.md` | ✅ commit `dbed7b68`，AGENTS.md 必读链路 ❌ 未收录 | AGENTS.md 必读链路第 6 项 + PROJECT_GOAL.md 受众表新增"UI Designer / Mockup 创建者" |
| `docs/internal/figma-component-catalog.md` | ✅ commit `197c7abd`，AGENTS.md 必读链路 ❌ 未收录 | AGENTS.md 必读链路第 7 项（"AI mockup 任务第一个查"）|
| `docs/docs-site-dx-parity-spec.md` | tracked，但仅 session-handoff 隐含引 | session-handoff.md 必读 + AGENTS.md Quick Reference |
| `docs/component-generation-pitfalls.md` | tracked，未在主路线 | session-handoff 或 component-review-rules 前置 |

**风险**：这两个 mockup 文件是 plan owner 在 2026-05-09 mockup 任务收尾时主动产出的项目级硬约束，但 AGENTS.md 必读链路未更新——**新 session 开 mockup 任务的 AI 可能完全看不到**。**这是当前已 commit 文档与 onboarding 链路的最严重分叉**。

### 5.3 真源分叉

| 分叉点 | 现状 | 严重度 | 建议 |
|---|---|---|---|
| 硬规则在 3 处分别维护 | AGENTS.md 6 条 + meta-rules.md 元规则 + working-principles.md 7 个原则；有重叠（颜色 hardcode = bug 同时在 AGENTS.md#4 + working-principles.md#4）| 🟡 Medium | 在 3 个文件之间补交叉脚注；不强求合并（各自有不同抽象层）|
| API 形态判定仅在 working-principles | meta-rules / AGENTS 未引 | 🟢 Low | 在 AGENTS.md 硬规则段补"详见 working-principles.md 原则 #1" |
| `docs-site-dx-parity-spec.md` Codex 纪律 | 仅 session-handoff 隐含 | 🟡 Medium | 加 session-handoff 必读 + AGENTS.md Quick Reference |

---

## 6. F20 visual baseline 边界建议

> META-F27 entry 第 8 项要求："review 完后输出 F20 应该 scan 哪些 page、skip 哪些"清单。

### 6.1 Pre-F20 必删 cleanup（避免锁进基线）

```bash
# 1. 删 dead code (4 项)
rm src/legacy/index.ts
rm .f19-cell-labels.mjs
rm .f19-visual-audit.mjs
rm .light-theme-audit.mjs

# 2. 删真死 audit 脚本 (2 项)
rm figma-sync/audit-canonical-figma-alignment.mjs
rm figma-sync/audit-component-token-fidelity.mjs
# 同时删 docs/internal/canonical-figma-alignment-report.md (该脚本输出)
# 同时删 docs/internal/component-token-fidelity-report.md (该脚本输出)
```

**这些与 docs page 视觉无关，但删除让 F20 commit 范围更干净**。

### 6.2 F20 应录 baseline 的 18 page（不变）

`playground/docs/pages/*Page.vue` 全部 18 页，每页 dark + light 两 theme = 36 张。spec 扫描 `playground/docs/pages/` 自动发现（不硬编码 18 list）。

### 6.3 F20 录前必修的小问题

| 问题 | 影响 | 决策 |
|---|---|---|
| F24 page theme 注入双轨（CheckboxPage / RadioPage / SwitchPage 用 `props.isDark` vs F19 改的 page 用 `inject('docsTheme')`）| 范式不统一但 baseline 都能录，无视觉差 | **F20 前不修**；F20 baseline 后再决策 F24 路线 A/B/C |
| Phase X.4.2 提到的 60 unpublished cleanup | 范围未定义；可能是 figma-data/raw 中的研究稿组件 | **F20 前定义清楚**；不清理就录 baseline 没问题，但会让"unpublished 是否影响 docs page" 这个问题悬而未决 |

### 6.4 F20 录后才考虑

- INFRA-F26 timestamp idempotence（影响 commit cap，与 baseline 录制无关）
- BRIDGE-005 boolean/instance-swap schema（API 设计任务）
- CANONICAL-006 Pagination alignment（视觉 fix，会 invalidate baseline，但本就计划 v0.1 后做）

---

## 7. 后续行动建议

### 7.1 NOW（本次 review 决策即可执行）

| Action | 估时 | 备注 |
|---|---|---|
| **A1** 删 src/legacy/index.ts | 5min | 0 consumer 实证 |
| **A2** 删 3 个仓库根 untracked .mjs | 2min | F19/X.4.2 transient |
| **A3** 删 2 个真死 audit 脚本 + 对应 report | 5min | 2880 行无引用 |
| **A4** AGENTS.md 必读链路补 mockup-conventions + figma-component-catalog | 10min | 2 个项目级真源缺收录 |
| **A5** AGENTS.md 必读链路修正 META-F27 entry 失实声明（CheckBox 双目录 / 双 JSON 孤儿） | 5min | 修正 backlog 自身 |
| **A6** package.json 补 `audit:page-t2` + `generate:docs-figma-members` 等缺失 alias | 10min | 提高脚本可发现性 |
| **A7** 单 commit 做所有 docs/internal 历史 report 迁移到 _reports/ 子目录 | 30min | 43+ 文件 mv，纯目录整理 |

**总：~1h** — 一个 cleanup commit 收口。

### 7.2 NEXT（v0.1 物理阻塞）

| Action | 估时 | 备注 |
|---|---|---|
| **B1** 新 backlog entry **NPM-001：CHANGELOG.md 生成** | spec 30min | 列 0.1.0 highlights：19 canonical / 18 toggle-aware page / 翻译层 / Phase X.4.2 / F19/F22/F23/F25 |
| **B2** 新 backlog entry **NPM-002：INSTALL.md + docs/GETTING_STARTED.md** | spec 30min | npm install 命令 / 基础用法 / 主题切换 / 图标使用 |
| **B3** 新 backlog entry **NPM-003：.github/workflows/publish.yml** | spec 30min | tag-triggered npm publish + version bump 流程 |
| **B4** INFRA-F20 visual baseline | 4h | Playwright 36 张 dark+light |

### 7.3 LATER（post-v0.1）

- INFRA-F21（pre-commit hooks）
- INFRA-F25（audit suite formalization）
- CANONICAL-006（Pagination alignment）
- INFRA-F24（page theme 范式决策——当前双轨可生存）
- 6.3 / 6.4（删自创 + 运行时能力）
- BRIDGE-* 库债（设计师 owner 接手）

---

## 8. backlog META-F27 entry 善后

review 完成后，META-F27 entry 应：

1. **状态改 Resolved**，移到 backlog Resolved 段
2. **关联本报告**：`docs/internal/_reports/systematic-review-2026-05-09.md`
3. **修正失实声明**：CheckBox 双目录不存在 / canonical-components.json 等不是孤儿（避免下次 review 重蹈覆辙）
4. **派生新 backlog entry**：
   - `NPM-001` / `NPM-002` / `NPM-003`（v0.1 阻塞）
   - `META-F28` (optional)：定期 review 节奏（每 1-2 月触发一次系统性 review，避免历史孤儿再积累）

---

## 9. 元说明 / 信任度

- **本 review 数据来源**：5 个 Explore agent 并行报告 + plan owner 4 项关键验证（CheckBox 双目录 / src/legacy consumers / npm 包状态 / audit 脚本死活）
- **Agent 误判已修正**：Agent C 把 `audit-page-t2-sample.mjs` 误判为死，已通过 grep prompt + retrospection reference 推翻
- **未深度验证项**：60 unpublished cleanup 范围（Phase X.4.2 复盘提及，但本次 review 未深扫 `figma-data/raw/components/` 真实 unpublished 候选）——建议作为独立 audit 任务
- **本报告权重**：plan owner 报告，**非自动改动**；用户读完决定 §7 的哪些 Action 立刻做、哪些进 backlog、哪些不动
