跨端对齐:授权栏 navigator_only + 组件按页拆分 + 服务器补 permission_options
用户两项裁定落地(均为 ask_user 明确选择):
① 授权栏口径 = navigator_only(照 WebUI 架构)
· 新建 pages/PermissionPanel.ets —— 详情页的决策面板,
对应 MailView.tsx:693 的 PermissionPanel(审批型 / 主动提问 / 已处理 三态)
· 决策入口从授权栏移到 MailDetailPage;MailDetailPage 原来只显示一个
「权限请求」小标签、根本没有决策入口(比 WebUI 少一整块,且反了:
栏里能决策、点进详情反而不能)
· PermissionTab 删掉内联「同意/拒绝」+ 备注框 + decide():
整卡可点 → onOpenMail(对齐 WebUI PermissionList.tsx:81 的 pick())
· PermissionRequest 补 source_account_id(客户端侧记来源,跳详情要定位网关)
② 服务器补 permission_options —— 修一条真实的、跨端共有的缺口
· mails.permission_options 从 INSERT 起就写进去,但**从来没有任何读路径
选过它** ⇒ 详情端点永远返回空。WebUI 的决策面板读 mail.permission_options,
所以提问型的预设选项**两端全部落空**(审批型靠 ['同意','拒绝'] 兜底蒙混)
· GetMailByID 补选该列 + JSON 反序列化(与 cc_list 同款)
③ 组件按页封装(用户要求「以便与 WebUI 一一对应」)
MainPage.ets 4592 → 3192 行
· pages/PermissionTab.ets 720 行 ↔ PermissionList.tsx
· pages/ContactsTab.ets 796 行 ↔ ContactPanel.tsx
· pages/NavDestinations.ets 181 行 ↔ Navigation 壳
· pages/NavShared.ets 65 行 ↔ 跨栏共用件
④ 判据跟着组件搬家(否则静默失效,不是红)
harmony-logic 的 pageCode / harmony-nav 的 navSrc 改为显式文件名单;
harmony-appearance 的 PANE_SOURCES 补 ContactsTab;harmony-contacts 三个
test 并入 ContactsTab;harmony-logic 的决策断言改指 PermissionPanel,
并新增「授权栏不许再有内联决策」两条(navigator_only 的正形状)。
animation-audit:共享元素转场判据从「同文件共址」改为「按 id 找驱动」。
旧形状把 in/out 端必须在同一文件当成代理,而两端**天然在两处**;
抽出写信页(NavDestinations 持有 in 端)后误报。新判据仍要求每个 id
都有 Motion.morph 驱动 —— 变异实测:把驱动换成裸 animateTo 仍判红。
判据:files=34 checks=556 red=1(仅 build-stamp,产物待重构建)
This commit is contained in:
@ -13,20 +13,47 @@
|
||||
|
||||
## 一、现在的差距(有据可查)
|
||||
|
||||
| 能力 | WebUI | 鸿蒙 | 差距性质 |
|
||||
> ★★ **2026-09-23 更正:这张表曾严重过期,已重写。**
|
||||
>
|
||||
> 原来的表把发件箱/授权/日历/管理/主题壁纸全部标成 **「❌ 缺页面」** ——
|
||||
> 而它们**在那之后全都做完了**(日历 2101 行、我的页 1496 行、写信 968 行、
|
||||
> 管理 682 行;导航也早在 P5 换成了自绘浮动玻璃条)。
|
||||
>
|
||||
> **为什么这是缺陷而不只是"文档旧了"**:这是本文件的**第一节** ——
|
||||
> 任何接手的人(或下一次的我)读到的第一件事就是"还缺一大半",
|
||||
> 而真实进度在四百行之后的 §5.4 分期表里(那里大多是 ✅)。
|
||||
> 照这张表干活会**重做已经做完的东西**。
|
||||
>
|
||||
> 判据:下面每一行都对着**现存代码**重新核过(文件/行数/组件名),不是照印象改的。
|
||||
|
||||
| 能力 | WebUI | 鸿蒙 | 现状 |
|
||||
|---|---|---|---|
|
||||
| 收件箱 | ✅ | ✅ | — |
|
||||
| 会话 | ✅(通信页签) | ✅(独立 tab) | 交互不同 |
|
||||
| 会话 | ✅(收件箱按会话折叠) | ✅(同:收件箱按会话折叠) | **已统一**(平级「会话」tab 已撤,见 §7.15) |
|
||||
| 联系人 | ✅ | ✅ | — |
|
||||
| **发件箱** | ✅(通信页签) | ❌ | 缺页面(数据现成) |
|
||||
| **授权(权限决策)** | ✅(通信页签 + 详情内决策) | ❌ | 缺页面(API 现成) |
|
||||
| **日历** | ✅ | ❌ | 缺页面(最大一块) |
|
||||
| **管理(用户管理)** | ✅(我的页底部,管理员可见) | ❌ | 缺页面 + 权限判定 |
|
||||
| **写信** | ✅ 共用 Composer | ✅ 独立实现 | 组件未统一 |
|
||||
| 底部/侧边导航 | ✅ 悬浮玻璃条 | ⚠️ 系统 TabBar | 观感不同 |
|
||||
| 主题 / 壁纸(账号级) | ✅ 服务端同步 | ❌ | 未接 |
|
||||
| 发件箱 | ✅(通信页签) | ✅(通信页签 `SentTab`) | **已完成**(P2b) |
|
||||
| 授权(权限决策) | ✅(通信页签 + 详情内决策) | ✅(通信页签 `PermissionTab`,**栏内直接决策**) | **已完成**(P3);★ 会话行形状仍在对齐中(见 §一·补) |
|
||||
| 日历 | ✅ | ✅(`CalendarPage` 2101 行,月/周/日 + 农历 + ics 导入导出 + 左右滑翻页) | **已完成**(P6) |
|
||||
| 管理(用户管理) | ✅(我的页底部,管理员可见) | ✅(`AdminUsersPage` 682 行) | **已完成** |
|
||||
| 写信 | ✅ 共用 Composer | ✅ 独立实现(`ComposePage` 968 行) | 组件未统一(**有意**:ArkTS 无法直接复用 React 组件) |
|
||||
| 底部/侧边导航 | ✅ 悬浮玻璃条 | ✅ 自绘浮动玻璃条(**无**系统 `Tabs`/`TabContent`,用系统材质 `Theme.navMaterial`) | **已完成**(P5) |
|
||||
| 主题 / 壁纸(账号级) | ✅ 服务端同步 | ✅(`AppearanceStore` + `/me/appearance`,预设 6 档 + 图片壁纸) | **已完成**(P4;P4c 上传入口未做) |
|
||||
| 设计令牌 | ✅ `:root` | ✅ `Theme.ets` | **已对齐**(判据钉住) |
|
||||
|
||||
### 一·补、现在真正剩下的差距(2026-09-23 实核)
|
||||
|
||||
上面那张表只回答"有没有"。**真正的差距在形状层** —— 以下都是对着两边源码
|
||||
**逐行读出来**的,不是印象:
|
||||
|
||||
| 项 | WebUI | 鸿蒙 | 状态 |
|
||||
|---|---|---|---|
|
||||
| 授权栏·会话行 | 机器人图标 + `agent@path.alias` + 组头时间 + 待决策/已处理胶囊 + `历史 {n}` | 同上(2026-09-23 补齐) | ✅ 已对齐 |
|
||||
| **授权栏·展开层** | 点组头展开 → 逐条 `PermissionRow`(含 `permission_result` 绿√/红✗、**「可能已失效」告警**) | 无展开层(待决已由内联卡片给出**更全**信息) | ⏳ **未做**,见 §5.4 的说明与 `docs/DEBTS.json` |
|
||||
| P4c 外观上传入口 | ✅ | ❌ | ⏳ 未做 |
|
||||
| 视觉观感(配色/材质/动画手感) | — | — | ⚠️ **两端都未逐项验**(需真机上手) |
|
||||
|
||||
★ **没有"缺页面"这一类了。** 剩下的全是**形状/交互细节**与**观感验收**。
|
||||
|
||||
## 二、已经做完的(本轮之前)
|
||||
|
||||
- **设计令牌共用**:`common/Theme.ets` 与 WebUI 的 `:root` 一一对应
|
||||
|
||||
Reference in New Issue
Block a user