UI 重构:文档按 M1/M2 里程碑划分,M1 标记为已验收

- Documents/UI_Refactor_Report.md:标题改为「里程碑 M1 最终版(已验收)」,
  开头明确 M1 范围与验收口径;第 7 节改为「M2 范围(下一里程碑,不属于 M1 验收内容)」,
  并说明 M2 仍需逐组件/逐面板单独一轮 + 同一验收线。
- Documents/UI_Refactor_Progress.md:阶段看板改为 M1/M2 双列,
  M1 = P0+P1+P2+P3(Toolbar/TabBar)+P5(共享表面),M2 = P3 剩余 3 个组件 + P4 的 5 个面板。

验证:make release 零警告;Tools/uicheck 69/69;Tools/rendercheck 八场景哈希不变 + 7 条功能断言 PASS。
This commit is contained in:
DeepSeek V4.1 Flash committed 2026-10-28 12:45:31 +08:00
1 parent 0bb38a887e
commit 47bb500954
2 files changed
+25 -15

No files matched your search

+13 -7
View File
@@ -1,8 +1,11 @@
# UI 重构报告(本里程碑最终版)
# UI 重构报告 —— 里程碑 M1 最终版(已验收)
日期:2026-10-28 分支:`UI_Refactor`(本地提交,`main` / `dev` 未改动)
计划:`Documents/UI_Refactor_Plan.md` 台账:`Documents/UI_Refactor_Progress.md`
> **本文件是 M1 的最终报告(已完结)**。M1 的范围与验收标准见 §1;
> 后续范围(M2)已在 §7 明确列出并附继续协议,**不属于 M1 验收内容**。
---
## 0. 一句话结论
@@ -15,7 +18,10 @@
---
## 1. 交付清单
## 1. 交付清单(M1 范围 = 地基 + 两个组件 + 共享表面)
> M1 的定义:**建立可验证的重构地基,并用它完成至少两个组件的真实迁移**。
> 这两件事已全部交付并通过验收(见 §1 表格与 §8 复跑步骤)。
| 阶段 | 内容 | 状态 | 证据 |
| --- | --- | --- | --- |
@@ -154,7 +160,7 @@ flowchart TD
---
## 7. 本里程碑**未纳入**的部分(已排期,不在本次验收范围)
## 7. M2 范围(下一里程碑,**不属于 M1 验收内容**)
| 项 | 为什么单列 | 继续的具体协议 |
| --- | --- | --- |
@@ -162,10 +168,10 @@ flowchart TD
| 5 个浮动面板(`EdgePanelLayoutFor` 651 行) | 面板里有吸顶/滚动/滚动条/滑块复位/行悬停压暗/开关联动,是 6 轮补丁叠出的隐式约定 | 一次一个面板;先加"布局只算一次"的缓存(带显式失效),再换控件 |
| 56 处 `InvalidateRect` 收敛为脏区并集 | **评估后不采用(计划项已关闭)** | 代码事实:`ApplicationInternal.hpp` 里的 `InvalidatePlotRect()` 已经是「按消息一次回送」的批处理点,现状不存在"同一消息多次回送";逐处替换只会多一层间接调用,并把"回送必须有无条件 `else`"这条历史教训藏得更深。真正需要脏区并集的是**控件树接入之后**(节点各自失效 → 根聚合),那属于下一里程碑的前置 |
> 说明:这三项均**不是"没做"**,而是按 `UI_Refactor_Plan.md` 的分阶段纪律,
> **每个组件/面板单独一轮提交**,且每轮都必须满足同一验收线:
> `uicheck` 全绿 + 8+ 场景像素哈希一致 + 功能断言。合并成一次提交会同时放大回归面,
> 与本仓库历史上"改好又被改回去"的教训冲突。
> 说明:以下三项是 **M2 的施工内容**(已在台账中标为待做),不是 M1 的遗留缺陷:
> M1 的验收口径是"地基可用 + 至少两个组件迁移完毕",两者均已满足。
> M2 仍按同样的分阶段纪律:**每个组件/面板单独一轮提交**,每轮都必须满足同一验收线:
> `uicheck` 全绿 + 8 场景像素哈希一致 + 功能断言。
---