用户:「安排对齐」。 ## 先量差距(不靠感觉) 鸿蒙侧的调色板与 WebUI **根本不同**:`#1A73E8`(Google 蓝)vs 品牌 `#2563EB`、 `#333333` vs slate-900 `#0F172A`、`#F5F7FA` vs `#F8FAFC`、`#FF4444` vs red-600… 共 217 处硬编码色值散在 7 个页面里。 功能面:鸿蒙是 收件箱/会话/联系人 三个 tab,**缺 发件箱 / 授权 / 日历 / 管理**, 也没有玻璃悬浮底栏、主题壁纸同步、Composer 共用组件。 ## 第一阶段(已完成并可验收) - `common/Theme.ets` 补齐文字/浅底/语义令牌,页面里的旧调色板**全量替换为令牌** (共 203 处),`hvigorw assembleHap` **BUILD SUCCESSFUL**。 - 判据:`cross-client-theme.test.mjs` 新增"鸿蒙页面里不得再出现旧调色板色值" (6 条全绿,含扰动自检)。这条防的是**新页面又随手写个"差不多"的颜色** —— 漂移就是这么开始的,而此前没有任何判据会红。 ## 计划文档:docs/HARMONY-ALIGN-PLAN.md 写清两件事,免得每轮重新猜"还差什么": - **差距表**(逐项,标出"缺页面/交互不同/观感不同"的性质); - **分期**:P2 发件箱(与收件箱同构,风险最低)→ P3 授权页(备注必须随决策送达模型 —— WebUI 侧踩过这个坑)→ P4 主题/壁纸同步(服务端"无记录"时以本地为准) → P5 玻璃悬浮导航 → P6 日历(最大,单独排)。 ## 如实说明 鸿蒙**视觉未验证**:本机 `hdc list targets` 为空、HAP 未签名 ⇒ 只能保证编译通过 + 令牌一致,观感需要设备或签名后由人眼确认。文档里也把这条写进"验收纪律"。
3.3 KiB
3.3 KiB
鸿蒙客户端与 WebUI 的对齐计划
用户(2026-09-14):「安排对齐」。这份文档把差距与分期写清楚, 免得每轮都从"感觉还差什么"重新猜。
一、现在的差距(有据可查)
| 能力 | WebUI | 鸿蒙 | 差距性质 |
|---|---|---|---|
| 收件箱 | ✅ | ✅ | — |
| 会话 | ✅(通信页签) | ✅(独立 tab) | 交互不同 |
| 联系人 | ✅ | ✅ | — |
| 发件箱 | ✅(通信页签) | ❌ | 缺页面(数据现成) |
| 授权(权限决策) | ✅(通信页签 + 详情内决策) | ❌ | 缺页面(API 现成) |
| 日历 | ✅ | ❌ | 缺页面(最大一块) |
| 管理(用户管理) | ✅(我的页底部,管理员可见) | ❌ | 缺页面 + 权限判定 |
| 写信 | ✅ 共用 Composer | ✅ 独立实现 | 组件未统一 |
| 底部/侧边导航 | ✅ 悬浮玻璃条 | ⚠️ 系统 TabBar | 观感不同 |
| 主题 / 壁纸(账号级) | ✅ 服务端同步 | ❌ | 未接 |
| 设计令牌 | ✅ :root |
✅ Theme.ets |
已对齐(判据钉住) |
二、已经做完的(本轮之前)
- 设计令牌共用:
common/Theme.ets与 WebUI 的:root一一对应 (品牌蓝、圆角 14/8、导航玻璃 0.72、语义色、字号),并由client/electron/test/cross-client-theme.test.mjs钉住取值一致性。 - 旧调色板清除:页面里的
#1A73E8(Google 蓝)/#333333/#F5F7FA等 与 WebUI 不同的写死色值,全部换成令牌(203 处)。 - 修掉只剩第一个 tab 高亮的 bug(
currentIndex === 0写死)。
三、分期(按"能独立验收"切)
P1 设计语言(已完成) —— 令牌 + 颜色替换 + 编译通过。
P2 发件箱:复用现有列表组件,接口 /mail/sent。验收:能看到已发邮件、
点开进详情;空态有说明。为什么先做它:与收件箱同构,风险最低。
P3 授权页:导航加一项「授权」,列表用 permission_* 字段,
决策走 POST /permission/{id}/decide;详情内也支持决策。
验收:待决列表与 WebUI 同口径(未决 = 无 permission_result);
点同意/拒绝后状态立刻变;拒绝时可填备注(备注必须随决策送达模型 ——
WebUI 侧踩过这个坑,见 gateway/handler/permission.go 的 Note 传递)。
P4 主题/壁纸同步:接 GET/PUT /me/appearance + 图片走带认证的 fetch。
验收:换账号后外观跟随;服务端"无记录"时以本地为准(不要用默认值覆盖 —— 同 WebUI)。
P5 玻璃悬浮导航:自定义底栏(圆角 + 半透明 + backgroundBlurStyle),
取代系统 TabBar。注意:视觉验收需要设备或签名 HAP,
本机 hdc list targets 为空 ⇒ 只能保证编译与结构,观感要人眼确认。
P6 日历:网格 + 事件读写 + 左右滑动翻页(复用 WebUI 的手势阈值: 水平 ≥40px、≥1.5× 垂直、<600ms)。这一块最大,单独排。
四、验收纪律(照 WebUI 那套)
- 每个页面都要有点它的判据(WebUI 侧就是因为只验结构没验点击, 漏掉了"侧栏点了不翻页")。
- 判据不许只看截图:要量几何/对比度/命中区。
- 无法验证的要如实标注(例如"编译通过、视觉未验"),不能写成"已完成"。