新增 AutoRDO 需求清洗工作台与消息中枢,迭代 OneOS V2 设计规范及租赁合同/工作台/车辆等原型,同步云效技能与导航注册;并归档一批 legacy 原型快照。

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
王冕
2026-07-28 15:50:35 +08:00
parent b14425da5a
commit 5d51a6bf7a
1393 changed files with 488042 additions and 10046 deletions

View File

@@ -0,0 +1,193 @@
# 消息中枢Message Hub重构设计
> 日期2026-07-22
> 状态已确认并完成首期原型2026-07-22分支 `feat/message-hub`
> 范围:产品架构规格 + Web 统一消息中心原型(宽首期)
## 1. 背景与问题
当前 OneOS 原型中的「消息/通知」能力偏弱,实质是工作台站内铃铛阅知(`oneos-web-workbench-new` + `oneos-app-shell` 桥),外加若干业务侧短信/邮件演示。缺少:
- 独立消息中心
- Web / iOS / 安卓 / 鸿蒙 / 微信服务号的统一触达与跳转模型
- 多系统消息源OneOS、车辆数据中台、其他系统的接入约定
- 清晰的「详情 → 来源表单/办理页」深链规则(含外部端双 App
本设计定义统一消息中枢,并指导首期 Web 原型落地。
## 2. 已确认产品决策
| 决策点 | 选择 |
|--------|------|
| 本轮交付 | 规格文档 + Web 统一消息中心原型;移动/服务号以路由表与示意为主,不接真推送/服务号 API |
| 产品入口 | 独立「消息中心」菜单页 + 顶栏铃铛作为未读快捷入口(「查看全部」进入消息中心) |
| 首期广度 | 宽首期:五端触达矩阵 + 多系统消息源样例 |
| 跳转解析 | 消息只携带业务键;各端用**本地路由表**解析目标(不下发各端 URL |
| 消息与触达 | 一条业务事件 = 一条 Message多通道站内/推送/服务号)挂在同一条上 |
| 外部双 App | 占位名 `external-app-a` / `external-app-b`,真名后续替换 |
| 落地架构 | 独立消息中枢:`src/common/message-hub/` + 新原型 `message-center`;工作台铃铛改读中枢 |
## 3. 目标用户与核心任务
- **目标用户**OneOS 内部运营/业务人员Web 为主);五端与外部 App 在原型中用「端模拟器」与路由表示意。
- **核心任务**
1. 在统一列表中看到来自多系统的待办/提醒类消息
2. 打开详情理解上下文与通道触达状态
3. 「去处理」按当前端解析并跳到来源办理页(或明确不可跳)
## 4. 范围
### 4.1 本轮做
- 统一 Message 模型、通道触达态、本地 RouteRule 与 `resolve()`
- 新原型 `message-center`:筛选、列表、详情、端模拟器、去处理
- 工作台/外壳铃铛对接同一中枢(旧 notices 迁移或适配)
- 五端 × 多系统种子与路由表样例(含外部 App A/B 占位)
- `.spec` 路由规则全文 + AutoPRD / 导航登记(实现轮)
### 4.2 本轮不做
- 真实推送 SDK、厂商通道、微信服务号模板下发
- 跨端已读强一致、服务端已读同步
- 外部 App 真唤端 / Universal Link 联调
- 车辆中台真实事件流接入(仅占位样例)
- 独立移动端/鸿蒙原生 UI 工程
## 5. 架构
```text
业务系统(OneOS / vehicle-mid / other / external)
│ 产生业务事件(原型内为种子写入)
┌───────────────────┐
│ message-hub │ Message 池 · ChannelDelivery · RouteRule · resolve()
└─────────┬─────────┘
┌─────┴─────┐
▼ ▼
消息中心页 顶栏铃铛 / 外壳 bridge
(完整 IA) (未读摘要 + 快捷)
resolve(client) → 原型内导航 / 深链示意 / 不可跳提示
```
### 5.1 目录约定
| 路径 | 职责 |
|------|------|
| `src/common/message-hub/` | 类型、种子、路由表、resolve、读写状态localStorage 可选用) |
| `src/prototypes/message-center/` | 消息中心主 UI |
| `src/prototypes/message-center/.spec/` | 路由规则、通道矩阵、验收 |
| `src/common/oneos-app-shell/` | 铃铛桥升级为 Message 摘要同步(兼容旧字段可选) |
| `src/prototypes/oneos-web-workbench-new/` | 铃铛数据源改为中枢 |
## 6. 数据模型
### 6.1 Message
| 字段 | 说明 |
|------|------|
| `id` | 稳定 ID |
| `sourceSystem` | `oneos` \| `vehicle-mid` \| `other-system` \| `external` |
| `bizType` | 如 `approval.arrive``urge.remind``contract.expire``fault.overdue``order.action` |
| `bizId` | 来源业务主键 |
| `title` / `summary` / `detail` | 展示文案 |
| `priority` | 如 normal / high催办类可 high |
| `createdAt` | ISO 时间 |
| `readAt` | 可选;本地已读 |
| `audience` | 角色/用户占位(原型可按角色过滤,对齐现工作台习惯) |
| `channels` | `ChannelDelivery[]` |
### 6.2 ChannelDelivery
| 字段 | 说明 |
|------|------|
| `client` | `web` \| `ios` \| `android` \| `harmony` \| `wechat_oa` |
| `status` | `pending` \| `sent` \| `failed` \| `skipped`(原型模拟) |
| `updatedAt` | 可选 |
说明:通道状态表示「是否对该端做过触达尝试」的演示态,不是跳转 URL。
### 6.3 RouteRule
| 字段 | 说明 |
|------|------|
| `sourceSystem` | 与 Message 一致 |
| `bizType` | 与 Message 一致 |
| `client` | 目标端 |
| `targetTemplate` | URI 模板,支持 `{bizId}` 等占位 |
| `externalApp` | 可选:`external-app-a` \| `external-app-b` |
| `label` | 人读说明 |
**解析优先级**
1. 精确匹配 `sourceSystem + bizType + client`
2. 同系统同 `bizType` 的 fallback`harmony``android` 模板,若配置了 fallback
3. 无规则 → 不跳转UI 明确提示「当前端暂无可跳转目标」
**禁止**:根据标题猜路径;无规则时静默跳首页。
## 7. 交互与闭环
### 7.1 铃铛
- 展示未读数与最近 N 条
- 点击单条:标已读并打开详情卡片(含「去处理」);不在列表行上直接跳转,避免未看清上下文就离开
- 「查看全部」→ `/prototypes/message-center`
### 7.2 消息中心页
- 左:筛选(全部/未读/已读、系统源、业务类型)+ **端模拟器**(切换 `client`,影响解析预览与去处理)
- 右:列表 + 详情(正文、通道触达态、解析预览、去处理)
### 7.3 去处理
1. 标记已读(本地)
2. `resolve(message, simulatedClient)`
3. 命中且为 Web 原型 path → 站内导航(直链或外壳 `ONEOS_SHELL_NAV`
4. 命中且为外部/原生 scheme → 展示示意面板(将打开哪一 App/URI不真唤端
5. 未命中 → Toast/详情内错误态,文案固定可验收
## 8. 种子与路由样例(宽首期)
消息源至少覆盖:
- **oneos**:审批到达、催办、合同/证照到期、账单、系统通知(从现有工作台 notices 映射迁入)
- **vehicle-mid**:故障逾期、车辆状态事件各 ≥1
- **other-system**:通用接入槽 ≥1
- **external**:跳转 App A、App B 的操作类各 ≥1
五端:每条关键 `bizType` 在路由表中为 `web/ios/android/harmony/wechat_oa` 提供模板或显式 `skipped` 说明(如纯 Web 办理类在 wechat_oa 可 skipped + 文案)。
## 9. 视觉与设计基底
沿用现有 OneOS Web 管理端语言工作台、vm 列表习惯、外壳顶栏铃铛),不另起营销风或新主题。实现前对照项目 UI 规范;复杂判定写入 `.spec`
## 10. 验收重点
1. 消息中心可按系统源/已读态筛选,列表与详情一致
2. 端模拟器切换后,同一条消息的解析预览随路由表变化
3. 「去处理」仅在命中规则时跳转;未命中有明确提示
4. 外部 App A/B 仅示意,不真唤端
5. 铃铛未读数与中枢一致;「查看全部」进入消息中心
6. 旧工作台通知种子可在中枢中看到对应映射条目
7. 规格中路由优先级表与代码 `resolve()` 行为一致
## 11. 风险与后续
- 真名替换 `external-app-a/b` 时只改路由表与文案,不改模型
- 接真 API 时 Message 写入改为服务端,客户端仍只持业务键 + 本地/下发的路由表副本
- 跨端已读、推送回执可作为下一阶段,不阻塞本轮原型
## 12. 决策快照(对齐记录)
| 问题 | 用户选择 |
|------|----------|
| 交付深度 | 规格 + Web 消息中心原型 |
| 与铃铛关系 | 独立消息中心 + 铃铛快捷 |
| 首期广度 | 宽(五端 + 多系统) |
| 跳转方式 | 业务键 + 本地路由表(由「服务端多 URL」改为此案 |
| 消息与推送 | 一条事件多通道同一条消息 |
| 外部 App | 占位 A/B |
| 架构 | 独立 message-hub + message-center 原型 |