新增 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 原型 |

View File

@@ -0,0 +1,63 @@
# OneOS 设计规范 v2 · 设计决策
| 项 | 内容 |
|----|------|
| 日期 | 2026-07-22 |
| 状态 | 已落地文档包 |
| 产物 | `src/resources/design-system/`DESIGN.md + chapters/0009 + tokens.json + oneos-ds-tokens.css |
## 背景
既有 v1 规范仅覆盖中后台列表页(筛选 / KPI / 表 / 分页)。产品需要基于当前平台重做设计规范,约束 Web 与 App 全部页面的显示与组件,实现全站统一。
## 决策
### App 范围
**原生 App + 微信小程序 + H5 现场端**(三端全含),与仓库中 `vehicle-inspection-app` / `miniprogram` / `web` 及 PC 中后台并列。
### 文档策略
在现有 [`src/resources/design-system/`](../../src/resources/design-system/) **扩写为 v2**,不另建 `design-system-v2` 目录。
-`DESIGN.md`:总览与导航
- `chapters/0009`:完整约束清单落地
- v1 列表强制规则并入 `04-patterns.md`,并继续指向 `vm-shared/DESIGN.md`
### 主色
沿用原型现行 **`#32a06e`**`vehicle-management` / `field-theme`)。
`oneos-web-legacy``#10b981` 标为遗留,新页禁止。
### 暗色模式
本版明确 **仅浅色**;若未来需要,须先补映射表。
### 工程入口
- `tokens.json` schemaVersion **2**
- 新增 `oneos-ds-tokens.css` 供非列表页与共享变量引用
- 列表页仍强制 `vehicle-management/style.css` + 公共组件
## 章节结构
```text
00 总则 → 01 Foundations → 02 Layout → 03 Components
→ 04 Patterns → 05 Content → 06 A11y → 07 Platform
→ 08 Tokens 附录 → 09 迁移检查清单
```
编写优先级见 `PRIORITY.md`Foundations / Tokens → Layout 模板 → Patterns → Components → 平台差异 → Content/A11y → 检查清单。
## 成功标准
- 任意新页可定位到唯一页面模板与 Token 来源
- Web 列表验收项不弱于 v1
- App/小程序/H5 有热区、安全区、导航对照表
- AI 提示词指向 v2 章节
## 非目标(本轮)
- 不批量改既有业务页面样式代码
- 不实现暗色主题
- 不合并改造 legacy `oneos-tokens.css` 文件内容(仅在规范中标注弃用路径)

View File

@@ -0,0 +1,214 @@
# 故障处置(车辆运维)设计规格
| 项 | 说明 |
|---|---|
| 日期 | 2026-07-22 |
| 状态 | 已确认 |
| 方案 | 方案一:新建原型 + 工作台同源数据 |
| 原型 ID拟定 | `vehicle-fault-handling` |
| 菜单 | OneOS → 车辆运维 → 故障处置 |
| 关联 | `oneos-web-workbench-new`(预警 KPI + 运维看板故障登记) |
---
## 1. 问题与目标
运维需要承接 **AI 故障机器人**上报的原始故障(聊天摘要、图片、视频),在系统内完成处置、挂起与归档,并满足 **30 天闭环** 时限与催办。处置记录须足够详细,作为日后向整车厂索赔的**证据链**基础。
**本期目标**
1. 新建「故障处置」列表 + **独立详情页**,完成待处理 → 处理中 → 挂起 → 已归档。
2. 证据链多附件与归档硬门槛。
3. 时限与通知规则演示(含短信/邮件模板与发送记录,不接真实通道)。
4. 工作台预警 KPI + 运维看板「故障登记」与本模块同口径。
**非目标(二期 / 占位)**
- AI 对话上报界面(机器人仅作数据来源)
- 真实短信 / 邮件网关
- 品牌 · 车型 · 部位 · 等级完整分类统计看板
- 按品牌车型一键出具故障证明与自动分析结论(本期仅入口占位)
---
## 2. 信息架构
```text
OneOS
└── 车辆运维(新一级菜单)
├── 故障处置 ← 本期主功能
├── 分类统计 ← 二期占位
└── 故障证明 ← 二期占位
```
- 新建原型目录:`src/prototypes/vehicle-fault-handling/`
- 不改造旧合包 `oneos-web-ops` 内「故障管理」页为唯一入口;旧页可暂并存,导航以新菜单为准。
- AI 上报:无 UI以种子数据模拟「已入库的待处理原始记录」。
---
## 3. 状态机
| 状态 | 进入条件 |
|------|----------|
| 待处理 | AI 上报后系统自动入库 |
| 处理中 | 运维首次保存处置内容(可分次保存) |
| 挂起 | 运维选择暂时挂起,**必须填写挂起原因** |
| 已归档 | 通过归档硬门槛,完成闭环 |
**流转规则**
- `待处理` → 首次保存 → `处理中`
- `待处理` / `处理中` → 挂起 → `挂起`
- `挂起` → 恢复继续 → `处理中`
- `处理中` → 归档校验通过 → `已归档`
- **挂起不可直接归档**;须先恢复为处理中,补齐硬门槛后再归档
---
## 4. 时限规则文档中的「SLA」含义
此处 **SLA = 处理时效约定**,非另有系统模块:
- 时针从 **故障记录上报时刻** 起算,**30 个自然日内必须已归档**
- **暂时挂起不停表**(挂起期间仍计入 30 天)
| 时机 | 条件 | 收件人 | 通道 | 频次 |
|------|------|--------|------|------|
| 临期 | 未归档,且剩余天数 ≤ 7未逾期进入临期窗口时触发 | 当前处理人;无人接手 → 运维主管 | 短信 + 邮件 | 进入临期窗口触发一次 |
| 逾期升级 | 已超 30 天,仍未归档 | **固定运维主管** | 短信 + 邮件 | 逾期当天 1 次;之后 **每周 1 次**,直至归档 |
原型:展示「通知记录」列表与模板正文;标记「已发送(演示)」,不接真实通道。
### 4.1 通知模板
**临 7 天 · 短信**
```text
【OneOS故障】${故障号} ${车牌/车型} 将于 ${截止日} 到期剩7天仍未归档请尽快处置。详情见故障处置。
```
**临 7 天 · 邮件**
- 标题:`【故障临期提醒】${故障号} 距闭环截止还剩 7 天`
- 正文须含:故障号、车辆、上报时间、当前状态、截止日、处理人、系统链接
**超 30 天 · 短信**
```text
【OneOS故障·逾期】${故障号} 已超 30 天未归档(状态:${状态}),请主管督促闭环。
```
**超 30 天 · 邮件**
- 标题:`【故障逾期升级】${故障号} 已超过 30 天未归档`
- 正文须含:上述字段 + 逾期天数、历史挂起原因摘要、末次催办时间
---
## 5. 页面结构
采用 **列表 + 独立详情页**(非抽屉)。
### 5.1 列表页
- 筛选:状态、等级、品牌/车型、临期、逾期
- 搜索:故障号、车牌
- 列:故障号/车辆、部位·等级、状态、剩余天数(或逾期天数)、操作「处置」
- 临期 / 逾期视觉标识
### 5.2 详情页分区
1. **原始记录(只读)**AI 聊天摘要、图、视频
2. **处置主档**:故障时间、地点、部位、等级、处置结果、备注、关联车辆(品牌/车型/车牌)
3. **证据链**多附件图片、视频、PDF、Word 等常用类型);可预览示意;记录文件名、类型、上传人、时间
4. **挂起与通知**:挂起原因历史;短信/邮件发送记录
5. **底栏**:保存(→ 处理中)· 挂起 · 归档(硬门槛)
### 5.3 归档硬门槛
必须全部满足方可归档:
- 故障时间、地点、部位、等级、处置结果
- 至少 **1** 个证据附件
- 备注选填
任一缺失:阻断归档并提示缺项。
---
## 6. 工作台接入
数据与 `vehicle-fault-handling` **同源**(本地共享种子 / `src/common` 模块,未接真实 API
### 6.1 欢迎区预警 KPI运维角色可见多角色并集规则沿用工作台现规
| 指标 | 口径 | 点击 |
|------|------|------|
| 临 7 天未归档 | 未归档且剩余天数 ≤ 7 且未逾期 | 故障处置列表 · 临期筛选 |
| 已超 30 天未归档 | 未归档且已过截止日 | 列表 · 逾期筛选 |
| 待处理积压 | 状态 = 待处理 | 列表 · 待处理 |
### 6.2 运维看板「故障登记」
- 总数 = 全部故障记录(含已归档)
- 已归档 = 状态为已归档
- 闭环率 = 已归档 / 总数
- 可辅显:挂起数、临期数
- 可见性:主管/兼岗全量 + 按人筛;普通运维本人/本地区(沿用现有 `OpsCockpit` 规则)
---
## 7. 数据对象(摘要)
`FaultRecord` 主要字段:
- 标识故障号、上报时间、截止时间、来源AI
- 状态与处理人
- 原始:聊天摘要、媒体列表
- 处置:时间、地点、部位、等级、结果、备注、车辆引用
- 证据附件列表、挂起历史、通知历史
二期统计 / 证明所需的品牌、车型、部位、等级字段在一期处置主档中已采集,证明生成逻辑本期不做。
---
## 8. 组件与实现边界(实现阶段指引)
| 单元 | 职责 | 依赖 |
|------|------|------|
| `vehicle-fault-handling` 原型 | 列表、详情、状态流转、证据链、通知演示 | 共享故障种子 |
| 共享数据模块(如 `src/common/vehicle-fault/` | 记录类型、状态派生、时限计算、看板/KPI 聚合 | 无真实 API |
| `oneos-web-workbench-new` | KPI 瓦片 + OpsCockpit 故障列改读共享数据 | 共享模块 |
| 导航 | `nav-menu.json` 增加车辆运维 / 故障处置;`nav:sync` | — |
错误处理:归档校验失败明确列出缺项;挂起无原因不可提交。
---
## 9. 已确认决策记录
| 决策点 | 选择 |
|--------|------|
| AI 端 | 仅数据来源,不做对话 UI |
| 落地路径 | 方案一:新原型 + 工作台同源 |
| 菜单 | 车辆运维 → 故障处置 |
| 中间态名称 | 处理中 |
| 挂起与时针 | 不停表 |
| 临 7 天含义 | 未归档且剩余天数 ≤ 7未逾期 |
| 一期范围 | 处置闭环 + 证据链;统计/证明占位 |
| 归档 | 硬门槛 |
| 工作台 | 预警 + 看板都接 |
| 临期收件人 | 处理人,无人接手→主管 |
| 逾期 | 固定主管;当天 1 次 + 每周 1 次 |
| 详情布局 | 列表 + 独立详情页 |
---
## 10. 验收重点(设计层)
1. 种子数据入库即为待处理;保存后为处理中;挂起必填原因;归档卡硬门槛。
2. 列表可按临期/逾期筛选;详情可看原始记录与证据链。
3. 通知记录可演示临期与逾期模板内容。
4. 工作台运维角色可见三类故障预警;看板故障登记闭环率与模块数据一致。
5. 菜单路径正确;二期入口为占位说明。

View File

@@ -0,0 +1,178 @@
# 车辆采购合同 + 验车入库 · UI 对齐 Linear产品浅色设计规格
**日期:** 2026-07-22
**状态:** 规格已确认 · UI 已按本规格落地2026-07-22
**范围决议:** 全链路PC 两端 + 外勤三端)· 一波交付 · 列表壳 vm-page · 设计基底 Linear 产品浅色
---
## 1. 背景与目标
现有 `vehicle-purchase-contract``vehicle-inspection` 及根下迁入的外勤三端(`vehicle-inspection-{web,miniprogram,app}`)功能已通,但视觉与交互未对齐项目标准主题与列表壳规范:硬编码 Ant Design `#10b981`、自定义 `vpc-`/`vi-` 页头与筛选条、与车辆管理 / 保险采购等业务页不一致。
**目标:** 在**不改业务规则**的前提下,按 Linear 产品浅色 token + vm-page 壳层,一波重做 PC 列表/表单/详情与外勤三端视觉与布局,使采购→验车→外勤→入库链路观感统一、可验收。
**非目标:** 不改审批阈值、VIN 校验、拒收重交、入库桥、分期付款逻辑;不上 Linear 营销深色 + 薰衣草主色;不单独进导航的外勤页仍从验车详情链出。
---
## 2. 设计事实源(优先级)
| 优先级 | 来源 | 用途 |
|--------|------|------|
| 1 | `src/themes/linear/DESIGN.md` | 品牌与组件原则事实源(标准参考主题) |
| 2 | `src/prototypes/vehicle-management/style.css``--ln-*` / `--vm-*` | **产品浅色落地**inverse 白底 + 主色 `#32a06e` |
| 3 | `src/prototypes/vm-shared/DESIGN.md` | 列表壳结构:筛选卡、工具栏、分页、禁止重复大标题等 |
| 4 | 既有参考页 | 保险采购 / 租赁合同列表与详情分区习惯 |
**明确采用的 Linear 落地方式(已确认):**
选项 1 — Linear 产品浅色,与车辆管理一致;**不**采用官网深色 `#010102` + `#5e6ad2`
**ConfigProvider** `colorPrimary: '#32a06e'`(或读 CSS 变量等价),字体栈对齐 `--vm-font`Inter + 系统/苹方)。
---
## 3. 信息架构与页面结构
### 3.1 车辆采购合同(`vehicle-purchase-contract`
**列表(默认)**
```text
vm-page vpc-page
├── 筛选卡(「筛选条件」):关键词、状态、审批类型;查询 / 重置
├── KPI 行(可选可点筛选):草稿 / 待审或审批中 / 已通过 / 已生成验车
└── vm-table-section
├── 工具栏右对齐:新建合同
├── 表格 + OperationActions查看 / 编辑 / 提交审批 / 发起工单等既有动作)
└── TablePagination
```
- 列表页**禁止**独立 h1 大标题 + 功能说明副标题(侧栏已标明模块名)。
- 金额、数量列使用 `tabular-nums` / `ln-numeric` 既有约定。
**创建 / 编辑 / 查看**
```text
顶栏:返回列表 + 标题(新建/编辑/查看 + 合同编号)+ 主操作(保存草稿 / 提交 / 关闭)
主体白底分区hairline + radius-card
1. 合同主体(买/卖/丙方与角色)
2. 车型与价格(型号编码、产地、单价数量、实时总价与审批类型提示条)
3. 分期付款计划
4. 交付与验车约定
5. 质保 / 关联协议 / 附件
```
- ≥500 万自动「非正常审批」提示条保留,样式用 `--ln-primary-soft` / success 语义,不用另套色板。
- 查看态只读;草稿可编辑;状态驱动操作按钮与现逻辑一致。
### 3.2 验车入库(`vehicle-inspection`
**列表**
```text
vm-page vi-page
├── 筛选卡:关键词、任务状态;查询 / 重置
├── KPI待验车 / 验车中 / 已完成
└── 表格 + 操作(进入详情 / 结案等)+ TablePagination
```
**详情**
```text
顶栏:返回 + 任务编号/车型摘要 + 结案、入库等主操作
├── 任务摘要Descriptions / 分区字段,对齐交接验收表语境)
├── 外勤入口Web / 小程序 / APP点击绑定 activeInspectionId 并打开 /prototypes/.../index.html
└── 车辆明细表VIN、里程、电机号、状态、拒收原因、重交操作
```
### 3.3 外勤三端(同波)
| 原型路径 | 壳 |
|----------|-----|
| `src/prototypes/vehicle-inspection-web/` | Web 外勤 |
| `src/prototypes/vehicle-inspection-miniprogram/` | 小程序壳 |
| `src/prototypes/vehicle-inspection-app/` | APP 壳 |
- 视觉Linear 浅色语义(主色绿、白/浅灰 canvas、hairline 卡片);字号 ≥16px触控目标 ≥44px`cursor-pointer`;尊重 `prefers-reduced-motion`
- 逻辑:继续共用 `field-core.js`;《车辆交接验收表》图例 √/N/×/O、双签、双角度照片、拒收重交**行为不变**。
- 三端仅外框/底栏差异,表单与列表结构对齐,避免三套互不相干的样式常量。
---
## 4. 视觉与组件规则(摘要)
| 项 | 约定 |
|----|------|
| 主色 | `#32a06e``--ln-primary` |
| 画布 | `--ln-canvas-parchment` / `--vm-bg` |
| 卡片面 | `--ln-surface-card` + `--ln-hairline` + radius 8/12 |
| 正文/次要 | `--ln-ink` / `--ln-muted` |
| 成功/警告/错误 | `--ln-success` / `--ln-warning` / `--ln-error` |
| 焦点 | 控件边框改主色vm-focus-border 模式),避免装饰性外发光 |
| 图标 | Lucide/SVG不用 emoji 作图标 |
| 列表操作列 | `OperationActions` + 既有 `vm-operation-actions` |
---
## 5. 业务规则(本轮冻结,仅 UI
以下保持现有实现与 `.spec` 文档,**本轮不改判定**
- 合同金额 ≥ 500 万 → 非正常审批,否则正常
- 1 合同 → 1 验车任务;明细按到车追加
- VIN 17 位;交接验收表通过条件;拒收 → 重交 → 重验
- localStorage 桥:`oneos.vp.*`(含 `activeInspectionId`
若 UI 改动导致文案/验收描述变化,**同轮**按 oneos-autoprd 与业务逻辑文档化规则更新 PRD / annotation纯样式可跳过全量重写分区标题、状态文案有语义变化则更新
---
## 6. 文件与依赖(实现边界)
**预期修改**
- `src/prototypes/vehicle-purchase-contract/VehiclePurchaseContractApp.tsx` + `styles/index.css`(收敛到 vm-/ln- 类,去掉重复页头)
- `src/prototypes/vehicle-inspection/VehicleInspectionApp.tsx` + `styles/index.css`
- 外勤三端 `index.html` / 内联或共享样式(可抽公共 CSS 片段到三端复制或单文件引用,以静态可访问为准)
- 可选:各原型补 `DESIGN.md` 一页,声明「基底 = linear 产品浅色 + vm-shared」
**预期不改(除非发现硬编码色破坏一致性)**
- `src/common/vehicle-purchase/*` 业务逻辑
- 审批 mock、工单预填、入库桥算法
**依赖:** 继续 `import '../vehicle-management/style.css'``TablePagination``OperationActions``PrototypeAnnotationHost`
---
## 7. 验收要点
1. 两列表页:无重复大标题;筛选卡 +KPI + 底部分页;主色为 `#32a06e`
2. 合同表单/详情:分区清晰;审批提示条可见且色板正确。
3. 验车详情:外勤三按钮可打开 `/prototypes/vehicle-inspection-*/index.html` 且绑定当前任务。
4. 外勤三端:交接验收表可填报;与 PC 同域 localStorage 互通。
5. 对照车辆管理列表:间距、圆角、边框、字体观感一致(允许业务字段不同)。
6. 对比度正文 ≥ 4.5:1可点击元素有 pointer外勤触控区达标。
---
## 8. 决议记录
| 项 | 选择 |
|----|------|
| 优化深度 | C 全链路(含外勤) |
| 排期 | 一波做完 |
| PC 路线 | A 严格对齐 vm-page |
| Linear 落地 | 1 产品浅色(`--ln-*` / `#32a06e` |
| 产品确认草案 | 2026-07-22 认可 |
---
## 9. 自我检查(写规格时)
- [x] 无 TBD 占位关键路径
- [x] 未混用深色薰衣草与浅色绿主色
- [x] 业务规则与 UI 边界写清
- [x] 外勤 URL 与同波交付写清
- [x] 与用户确认的 C / 一波 / A / Linear-1 一致

View File

@@ -90,7 +90,7 @@
| 3 | 整单待审批 / 审批中 | 转交可用;运维费用只读;**不可**部门撤回改数 |
| 4 | 新办理人要改费用(整单未在审批中) | 若段状态为已提交 → 先走运维部 **撤回**,再编辑保存/提交 |
| 5 | 整单在审批中要改费用 | 先 **整单撤回**,再进入费用明细编辑 |
| 6 | 整单审批完成 | 无转交按钮 |
| 6 | 整单审批完成 | 无转交图标 |
### 3.5 原因
@@ -103,19 +103,21 @@
### 4.1 入口
费用明细页 → **运维**卡片标题栏右侧
费用明细页 → **运维**卡片标题栏:
| 场景 | 可见操作(在权限内) |
|------|----------------------|
| 整单可编 + 运维待提交 | 保存、提交、**转交** |
| 整单可编 + 运维已提交 | 撤回、**转交** |
| 整单待审批 / 审批中 | 费用只读;无保存/提交/撤回;办理人/主管可见 **转交** |
| 整单审批完成 | 无转交 |
| 整单可编 + 运维待提交 | 保存、提交;提交人姓名后 **转交图标** |
| 整单可编 + 运维已提交 | 撤回;提交人姓名后 **转交图标** |
| 整单待审批 / 审批中 | 费用只读;无保存/提交/撤回;提交人姓名后 **转交图标**(办理人/主管) |
| 整单审批完成 | 无转交图标 |
交互:点击转交图标打开转交弹窗。**不提供**「转交记录」入口。
列表页:
- 待审批 / 审批中:**显示「费用明细」**(不限角色),与现网「隐藏」不同,以本规格为准
- 运维组办理人展示随 `opsHandler` 更新
- 待审批 / 审批中:**显示「费用明细」**(不限角色)
- 运维组办理人展示随 `opsHandler` 更新
- **不**增加列表「转交」操作、**不**做批量
### 4.2 转交弹窗
@@ -131,9 +133,7 @@
### 4.3 转交记录
每笔至少记录:时间、操作人、原办理人、新办理人、原因、当时运维段状态、当时整单审批状态
费用明细运维卡片提供「转交记录」入口(时间线或抽屉即可)。
本期**不提供**转交记录查询 UI无抽屉/时间线)。转交原因仍必填,用于确认弹窗与后台留痕(原型可不展示)
---
@@ -144,7 +144,7 @@
| `opsHandler` | **当前办理人**(权威)。初始可由还车人 `returnPerson` 带入;转交只改本字段,**不改**历史还车人 |
| `submitOperation.status` | 运维段提交状态(待提交 / 已提交等既有口径) |
| `submitOperation.name` | **最近一次提交人**;转交不覆盖;新人再次提交时再更新 |
| `opsTransferLogs[]` | 转交记录数组(见 4.3 |
| `opsTransferLogs[]` | 可选后台留痕;**本期无查询 UI** |
列表「运维组」办理人解析:读 `opsHandler`,不再直接绑死 `returnPerson`
@@ -169,9 +169,9 @@
2. 已提交单可转交;新人可撤回后编辑再提交。
3. 主管可代转「非本人」的运维段任务。
4. 整单待审批 / 审批中:列表可进费用明细(不限角色);运维费用只读不可编;办理人/主管仍可转交;费用与审批流不变。
5. 审批完成后无转交按钮
5. 审批完成后无转交图标
6. 不可转给自己或非运维人员;原因为空不可提交。
7. 转交记录可查(时间、人、原因、状态快照)
7. 转交入口为提交人姓名后方图标;无「转交记录」入口
---

View File

@@ -0,0 +1,168 @@
# AutoRDO Web 工作台 · 设计规格
**日期**2026-07-25
**状态**已确认2026-07-25
**范围**:网页粘贴与确认交互 + AutoRDO Skill 对齐 + YunxiaoPMapp 多条上报提示词生成
---
## 1. 目标
为产品经理提供网页工作台:直接粘贴**文本 / 图片 / 语音**,经 Cursor + AutoRDO 清洗后,在网页内对待确认项做选择题确认,答案自动并入需求描述,最后**一键复制**可喂给 Cursor + **YunxiaoPMapp** 的多条「记录需求」提示词,实现快速批量建单。
不替代 AutoRDO / YunxiaoPMapp Skill网页负责编排与确认交互清洗与写云效仍由 Cursor Agent 执行MVP
---
## 2. 已确认决策
| 项 | 决策 |
|---|---|
| 形态 | 网页 + Skill **双轨** |
| Agent | MVP = **Cursor Agent**;预留组织自建 Agent 接口 |
| 多模态 | 网页粘贴展示;图/语音识读由 **Cursor 多模态**完成 |
| 清洗往返 | Cursor 洗完后,把带「待确认」的初稿 **粘回网页** 再出题 |
| 确认结构 | 按**需求条**分页;条内**逐点**选择题;选项外可输入补充 |
| 回填 | 每确认一点 → **自动写入**该条描述,消掉对应待确认 |
| 云效 | **不**直连云效;一键复制上报提示词 → Cursor 调 YunxiaoPMapp |
| 元数据 | 每条含 **优先级、标签、提交部门、提交人**(部门/人可内容预填,可改) |
---
## 3. 端到端流程
```text
① 网页文本域粘贴 文/图/语音(支持多行、编号列表、表格行、空行分段)
↓ 确认(可配置为粘贴后自动)
② 剪贴板 = AutoRDO 清洗提示词 → 粘到 Cursor 跑 AutoRDO
③ 将初稿(含待确认)粘回网页步骤 2
④ 按需求 1/N 分页;条内逐点选择题 + 可选补充输入
→ 答案实时并入描述;填写优先级/标签/提交部门/提交人
↓ 全部确认且元数据齐全
⑤ 一键复制「YunxiaoPMapp 多条记录需求」提示词
⑥ 粘到 Cursor → YunxiaoPMapp 按条创建多条云效需求
```
---
## 4. 信息架构(三步工作台)
### 步骤 1 · 粘贴素材
- 统一粘贴区:文本 + 图片/语音附件芯片预览
- 主操作:「确认并复制清洗提示词」(可选:粘贴后自动复制)
- 清洗提示词须明示:调用 AutoRDO、多条拆解规则、图/语音由模型识读
### 步骤 2 · 确认待确认
- 粘回区:粘贴 Cursor 返回的 `## 原始诉求AutoRDO` 多份稿
- 解析为需求列表;顶部 Pill需求 1/N
- 左:当前标题 + 描述(确认后实时回填高亮)
- 右:当前待确认题(单选)+「选项不含时自行补充」输入框
- 同页元数据(每条必填):
- 优先级:紧急 / 高 / 中 / 低
- 标签:云效模块标签(可多选;与 YunxiaoPMapp 标签口径对齐)
- 提交部门:输入;若原文可识别则预填
- 提交人:输入;若原文可识别则预填
- 缺任一元数据 → 禁止进入步骤 3 的一键复制
### 步骤 3 · 上报云效
- 展示已生成的上报提示词预览
- 主按钮:一键复制上报提示词
- 次按钮:复制定稿 Markdown可选
- 默认 `推进至=暂不推进`
---
## 5. 提示词契约
### 5.1 清洗提示词(步骤 1 → Cursor
要点:
- 点名使用 `$AutoRDO`
- 输入含粘贴的文本摘要 + 附件说明(图/语音文件名)
- 要求:多条独立诉求拆成多份;不确定标「待确认」;标题+描述;无结尾句号
- 输出格式对齐 AutoRDO Skill 的 `## 原始诉求AutoRDO`
### 5.2 上报提示词(步骤 3 → Cursor
```text
YunxiaoPMapp
请按下列条目依次记录需求;每条保持独立,不要合并。
记录需求:【新增|优化】{标题};描述={已确认描述};优先级={紧急|高|中|低};标签={标签};提交部门={部门};提交人={提交人};推进至=暂不推进
记录需求:…(下一条)
```
约束:
- 一条需求一行(或一块)口令,便于 Skill 拆条
- 描述已无「待确认」、无结尾句号
- 标题含 `【新增】` / `【优化】`(确认阶段或清洗结果已定)
- 网页不写云效;由 YunxiaoPMapp 在 Cursor 侧执行建单
> 注:当前 YunxiaoPMapp 口令面以标题/描述/推进至为主;网页侧**先行产出**优先级/标签/提交部门/提交人字段,便于 Skill 后续消费。若 Skill 尚未落这四字段的写入逻辑,实现阶段需同步扩展 YunxiaoPMapp「记录需求」解析另项
---
## 6. 与现有 Skill 对齐
| 能力 | 来源 | 网页职责 |
|---|---|---|
| 多条拆解、标题描述、待确认 | AutoRDO | 解析初稿、出题、回填 |
| 选择题确认 | AutoRDO `confirm-pending` | 在网页复现同等交互,替代 Cursor Plan 点选 |
| 模块/部门词典 | AutoRDO `oneos-domain` | 生成选项与标签候选时参照(实现时可内嵌摘要或提示词约束) |
| 建单写云效 | YunxiaoPMapp | 仅生成口令;不直连 API |
预留接口(组织 Agent 阶段):
- `POST /clean` ← 素材 → 初稿(替代步骤 ② 人工往返)
- `POST /record` ← 已确认多条 → 建单(替代步骤 ⑥)
MVP 不实现上述 API只在代码边界留 adapter 形状。
---
## 7. 交付物(实现阶段)
1. Axhub 原型页(建议 id`autorodo-web` 或等价命名)
- OneOS V2 设计规范PC + H5
- 三步工作台 + 粘贴往返 + 确认 + 元数据 + 复制口令
2. AutoRDO Skill可选补充「网页往返」口令说明不改变清洗规则
3. YunxiaoPMapp扩展记录需求解析以消费 `优先级/标签/提交部门/提交人`(若尚未支持)
4. 本规格对应实现计划writing-plans
---
## 8. 非目标MVP
- 网页直连云效 API
- 网页内嵌 OCR/ASR
- localhost 桥接 Cursor自动少粘贴
- 完整 AutoPRD 十章生成
---
## 9. 验收要点
1. 粘贴多行/编号/表格/空行分段素材后,能复制出可用的 AutoRDO 清洗提示词
2. 粘回含多条「待确认」的初稿后,按需求分页、条内逐题确认,描述实时更新
3. 选项外补充可替换本题答案并回填描述
4. 每条可填/预填提交部门、提交人,以及优先级、标签;缺一不可复制上报词
5. 一键复制的上报提示词可直接粘到 Cursor驱动 YunxiaoPMapp 多条建单(在 Skill 已支持对应字段的前提下)
6. 页面不发起云效写操作
---
## 10. 开放项(实现前可再定)
- 原型正式目录名 / 导航挂载位置
- 标签候选项是写死 catalog 摘要,还是自由输入 + Skill 侧校验
- 「粘贴后自动复制清洗提示词」默认开或关
- YunxiaoPMapp 四字段写入是否与本原型同迭代交付