拆分客户/员工工作台,落地登录关怀、待办统计、公告双栏布局;同步接口映射 AI、H5 订单与相关页面优化。 Co-authored-by: Cursor <cursoragent@cursor.com>
373 lines
15 KiB
Markdown
373 lines
15 KiB
Markdown
# 管理端人文关怀设计方案
|
||
|
||
> **文档状态**:P0 / P1 / P2(本机配置页)已落地;租户服务端配置待接
|
||
> **编写日期**:2026-08-09
|
||
> **最近更新**:2026-08-09(双工作台:员工 AdminWorkplace / 客户 CustomerWorkplace)
|
||
> **范围**:管理端(`OmsLoginType.User`)登录关怀与工作台「今日关照」;不含 H5 客户侧对客安抚
|
||
> **关联代码**:`src/utils/admin-login-care.ts`、`LoginCareBanner.vue`、`AdminLoginCareToast.vue`、`src/views/home/workplace/*`
|
||
> **关联规范**:`docs/前端页面设计规范.md`
|
||
> **目标读者**:产品、前端、后端(轻量)、运营
|
||
|
||
---
|
||
|
||
## 0 阅读指引
|
||
|
||
| 角色 | 优先阅读 |
|
||
| --- | --- |
|
||
| 产品 / 运营 | §1~§4、§8 |
|
||
| 前端 | §3~§7、§9 |
|
||
| 后端 | §6、§7 |
|
||
| 测试 | §8、§9 |
|
||
|
||
**分期对照(务必先对齐)**
|
||
|
||
| 阶段 | 名称 | 是否独立菜单页 | 交付物 |
|
||
| --- | --- | --- | --- |
|
||
| **已完成** | 登录瞬间关怀 | 否 | 登录横幅 + 登录成功液态卡片 |
|
||
| **P0** | 工作台「今日关照」 | 否(工作台模块) | 右侧卡片:减压文案 + 待办摘要 + 快捷入口 |
|
||
| **P1** | 关照增强 | 否 | 交接提示、旺季条、收工仪式、周一/五语气 |
|
||
| **P2** | 运营配置 | **是(设置子页)** | 开关、旺季区间、生日墙隐私、文案覆盖 |
|
||
| **不做** | 「关怀中心」一级菜单 | — | 易空、与 OMS 主路径脱节 |
|
||
|
||
---
|
||
|
||
## 1 背景与目标
|
||
|
||
### 1.1 为什么要做
|
||
|
||
物流中后台一线长期面对:预警、超时、客诉、非工作时间值守。产品若只堆 KPI,容易「系统很忙、人很累」。人文关怀的目标不是鸡汤,而是:
|
||
|
||
1. **被看见**:非工作时间、节假日、入职周年、好久不见等,用轻提示确认「系统知道你还在」。
|
||
2. **减压力**:把「今天最该先做的」说清楚,避免一上来面对整屏数字。
|
||
3. **可关闭、可配置**:不骚扰;敏感信息(同事生日)默认克制。
|
||
|
||
### 1.2 建设目标
|
||
|
||
1. **分层触达**:登录瞬间(低频、仪式感)≠ 工作台日常(高频、可行动)。
|
||
2. **跟业务挂钩**:P0 起接入真实待办/预警数量,文案服务于「先做什么」。
|
||
3. **视觉统一**:沿用登录关怀液态暖色卡片质感,工作台卡片与现有 workplace 风格协调。
|
||
4. **先模块后配置页**:员工侧不新增一级菜单;管理员配置进 P2 设置子页。
|
||
|
||
### 1.3 设计原则
|
||
|
||
1. **一事一触达**:同一天同类关怀不重复轰炸(登录卡与工作台可互补,不复制全文)。
|
||
2. **减压优先于激励**:待办很高时,文案侧重「按优先级、不必一次清完」,禁止催促口吻。
|
||
3. **无数据不硬猜**:没有员工档案 / 待办接口时,降级为通用欢迎,不编造。
|
||
4. **隐私默认关**:同事生日墙、部门曝光需显式开启。
|
||
5. **不做成考勤**:禁止「你又迟到登录」类话术;深夜提醒只关心身体,不考核。
|
||
|
||
---
|
||
|
||
## 2 现状(已完成)
|
||
|
||
### 2.1 登录页横幅 `LoginCareBanner`
|
||
|
||
- 挂载:管理端登录页(`shellReady` 后)。
|
||
- 优先级:节假日 → 非工作时间 → 时段问候。
|
||
- 视觉:右上液态暖色卡片(模糊色斑 + 轻微形变)。
|
||
|
||
### 2.2 登录成功卡片 `AdminLoginCareToast`
|
||
|
||
- 挂载:`App.vue` 全局 Teleport,进系统后再弹出(避免登录页卸载冲掉)。
|
||
- 能力:生日 / 即将生日、入职周年、节假日 Toast、好久不见(≥7 天)、司龄里程碑、连续深夜(近 7 天 ≥3 个深夜日)、非工作时间致谢。
|
||
- 本地存储(按 userId):
|
||
- `oms-admin-care-last-login:{userId}`
|
||
- `oms-admin-care-late-night:{userId}`
|
||
|
||
### 2.3 主题色液态预设
|
||
|
||
- 页面配置抽屉中「暖色液态质感」小卡片(蜜桃/暖杏/…/雾蓝/焰红等),与关怀视觉同源,**不改变关怀业务逻辑**。
|
||
|
||
### 2.4 明确不在「已完成」内
|
||
|
||
| 项 | 说明 |
|
||
| --- | --- |
|
||
| 工作台日常关照 | 未做 |
|
||
| 待办减压文案 | 未做 |
|
||
| 交接班 / 旺季 / 收工 | 未做 |
|
||
| 运营配置页 | 未做 |
|
||
| 客户侧安抚话术 | 另案,不在本文 |
|
||
|
||
---
|
||
|
||
## 3 信息架构与落点决策
|
||
|
||
### 3.1 三层落点
|
||
|
||
```
|
||
登录瞬间(低频仪式)
|
||
├─ LoginCareBanner(未登录)
|
||
└─ AdminLoginCareToast(刚进系统)
|
||
|
||
日常工作(高频可行动) ← P0 / P1 主战场
|
||
└─ 工作台右侧「今日关照」模块
|
||
|
||
运营治理(低频配置) ← P2
|
||
└─ 系统设置 / 页面配置旁「人文关怀」子页
|
||
(或「系统管理 → 人文关怀」;禁止一级业务菜单)
|
||
```
|
||
|
||
### 3.2 为什么不要独立「关怀中心」页
|
||
|
||
| 问题 | 说明 |
|
||
| --- | --- |
|
||
| 路径空 | 关怀不是每天要「打开办理」的业务单 |
|
||
| 与主任务脱节 | 员工主路径是订单 / 预警 / 轨迹,不是关怀列表 |
|
||
| 内容易鸡汤化 | 没有待办挂钩时,页面只剩文案 |
|
||
| 维护成本 | 多一套路由、权限、空态 |
|
||
|
||
**结论**:员工侧 = 工作台模块;配置侧 = 设置子页(P2)。
|
||
|
||
### 3.3 能力 × 落点矩阵
|
||
|
||
| 能力 | 登录横幅 | 登录成功卡 | 工作台「今日关照」 | 设置页 |
|
||
| --- | --- | --- | --- | --- |
|
||
| 时段 / 非工作时间 | ✓ | ✓ | 可摘要一行 | 开关 |
|
||
| 节假日 | ✓ | ✓ | 当日条 | 日历/文案 |
|
||
| 生日 / 入职周年 | | ✓ | 当日高亮一行 | |
|
||
| 好久不见 / 连续深夜 | | ✓ | 可选弱提示 | 阈值 |
|
||
| 待办减压 + 数量 | | | **✓ 主** | |
|
||
| 交接班标红摘要 | | | ✓ P1 | |
|
||
| 旺季提示 | | | ✓ P1 | ✓ 区间 |
|
||
| 今日收工 | | | ✓ P1 按钮 | |
|
||
| 同事生日墙 | | | ✓ P2(可关) | ✓ 隐私 |
|
||
| 首次成就 | | 一次弹 | | |
|
||
|
||
---
|
||
|
||
## 4 P0 工作台「今日关照」(开工首选)
|
||
|
||
### 4.1 位置与布局
|
||
|
||
- **页面**:`src/views/home/workplace/index.vue`
|
||
- **位置**:右侧栏,`MarketingShortcuts` 与 `QuickOperation` 之间。
|
||
- **组件**:`CareTodayPanel.vue`
|
||
- **交互原则(P0 已落实)**:
|
||
- 可收起,记住本机偏好,默认不强迫;
|
||
- **只给一条**角色相关待办 + 一条「看一眼轨迹预警」软入口;
|
||
- 高压时文案减压(「不必一次清完」),禁止催促;
|
||
- 无待办时平静空态,不堆数字;
|
||
- 客户门户不展示。
|
||
- **视觉**:液态暖色轻卡片,贴合工作台 panel,不抢主任务区。
|
||
|
||
建议信息结构(上 → 下):
|
||
|
||
```
|
||
┌─────────────────────────────┐
|
||
│ 今日关照 · 日期 [收起] │
|
||
│ 一句主文案(减压 / 节假日) │
|
||
│ 一句附注 │
|
||
│ [看一眼轨迹预警] │
|
||
│ [待发货 12 · 可点进去] │ ← 按角色最多一条
|
||
└─────────────────────────────┘
|
||
```
|
||
|
||
### 4.2 文案优先级(工作台主句)
|
||
|
||
同一时刻只展示 **一条主文案**(可另附数据行):
|
||
|
||
1. 生日当天(若有档案)
|
||
2. 入职周年当天
|
||
3. 节假日
|
||
4. 待办高压(如超时预警 ≥ 阈值,默认 5)→ 减压句
|
||
5. 非工作时间
|
||
6. 周一 / 周五语气(P1,可先留 hook)
|
||
7. 默认:「稳稳推进就好」+ 时段
|
||
|
||
登录成功卡已说过的「好久不见 / 深夜」:**工作台当天不再重复全文**,最多以极短弱提示或干脆省略。
|
||
|
||
### 4.3 待办数据(P0 最小集)
|
||
|
||
优先复用已有工作台/订单统计,避免新造大接口。
|
||
|
||
| 字段 | 含义 | 来源建议 |
|
||
| --- | --- | --- |
|
||
| `pendingCount` | 待处理(定义需产品拍板:待审 / 待打单 / 待预报等) | 扩展 `GET /order/workplace-stats` 或现有字段映射 |
|
||
| `overdueWarningCount` | 超时/标红预警数 | 轨迹预警或现有 warning API |
|
||
| `jumpPending` | 待办列表路由 | 前端常量 |
|
||
| `jumpWarning` | 预警列表路由 | 前端常量 |
|
||
|
||
**拍板项(实施前确认)**
|
||
|
||
1. `pendingCount` 具体统计口径(按租户角色是否不同)。
|
||
2. 无权限或接口失败时:隐藏数字行,只保留文案(不报错打断工作台)。
|
||
|
||
### 4.4 前端状态
|
||
|
||
- 模块可本地折叠(`localStorage`:`oms-admin-care-panel-collapsed`)。
|
||
- 不依赖登录卡是否已弹;工作台独立拉数。
|
||
- 管理端用户可见;客户登录进工作台时 **不展示**(与现有 Marketing 等客户模块区分)。
|
||
|
||
### 4.5 P0 明确不做
|
||
|
||
- 收工写库、交接班详情、旺季配置后台、生日墙、独立路由页。
|
||
|
||
---
|
||
|
||
## 5 P1 关照增强(工作台内演进)
|
||
|
||
| 项 | 状态 | 说明 |
|
||
| --- | --- | --- |
|
||
| 周一 / 周五语气 | **已做** | 无更高优先级时微调主文案 |
|
||
| 旺季条 | **已做** | 前端常量:11–12 月;春节前后窗口(复用节假日表) |
|
||
| 开班引导 | **已做** | 上午 + 问题件 > 0:轻提示(不伪称精确「上一班」统计) |
|
||
| 今日收工 | **已做** | 本机仪式 + 可撤销;不写服务端、非考勤 |
|
||
| 角色口吻 | **已做** | 财务 / 客服 / 操作 / 轨迹 / 销售附注分支 |
|
||
|
||
---
|
||
|
||
## 6 P2 运营配置页(此时才「有页面」)
|
||
|
||
### 6.1 何时需要独立页
|
||
|
||
当出现以下任一需求时开工 P2,否则继续只用代码常量 + 本地存储:
|
||
|
||
- 运营要配旺季起止、而不发版;
|
||
- 要开关「同事生日墙」「深夜提醒」;
|
||
- 要覆盖默认文案(多语言仍走 i18n,覆盖存租户配置)。
|
||
|
||
### 6.2 页面定位
|
||
|
||
- **名称**:人文关怀
|
||
- **路由**:`/system/humanCare`(`SystemHumanCare`)
|
||
- **入口**:系统管理菜单(若开启「菜单来自后端」,需在 RBAC 菜单中补一条指向该路由)
|
||
- **受众**:租户管理员 / 运营,**不是**一线每人打开的页。
|
||
- **存储(首版)**:`localStorage` 键 `oms-admin-care-settings`;页面已提示多设备不同步。后续换 `GET/PUT /system/care-settings`。
|
||
|
||
### 6.3 配置项草案
|
||
|
||
| 键 | 类型 | 默认 | 说明 |
|
||
| --- | --- | --- | --- |
|
||
| `careEnabled` | bool | true | 总开关 |
|
||
| `loginBannerEnabled` | bool | true | 登录横幅 |
|
||
| `loginToastEnabled` | bool | true | 登录成功卡 |
|
||
| `workplacePanelEnabled` | bool | true | 今日关照 |
|
||
| `longAbsenceDays` | int | 7 | 好久不见阈值 |
|
||
| `lateNightThreshold` | int | 3 | 近 7 日深夜天数阈值 |
|
||
| `overdueCareThreshold` | int | 5 | 触发减压文案的超时数 |
|
||
| `peakSeason` | `{start,end}?` | null | 旺季窗口 |
|
||
| `birthdayWallEnabled` | bool | false | 同事生日墙 |
|
||
| `clockOutEnabled` | bool | true | 收工按钮 |
|
||
|
||
存储:租户级配置表或现有系统参数;前端缓存到内存,变更后刷新。
|
||
|
||
---
|
||
|
||
## 7 接口与数据(分期)
|
||
|
||
### 7.1 P0
|
||
|
||
| 接口 | 用途 |
|
||
| --- | --- |
|
||
| 现有 `getEmployeeByUser` | 生日、入职、姓名(工作台主文案可选) |
|
||
| 现有 / 扩展 `workplace-stats` | pending / overdue 数量 |
|
||
|
||
建议响应扩展(示意):
|
||
|
||
```json
|
||
{
|
||
"pendingCount": 12,
|
||
"overdueWarningCount": 3
|
||
}
|
||
```
|
||
|
||
若短期不能改后端:前端用已有 stats 字段做最佳映射,并在模块注释标明「口径待对齐」。
|
||
|
||
### 7.2 P1~P2
|
||
|
||
| 接口 | 用途 |
|
||
| --- | --- |
|
||
| `GET /system/care-settings` | 读配置 |
|
||
| `PUT /system/care-settings` | 写配置(权限) |
|
||
| `GET /system/care/team-birthdays?days=7` | 生日墙(P2,需隐私) |
|
||
|
||
---
|
||
|
||
## 8 交互与文案规范
|
||
|
||
1. **语气**:平视、具体、可执行;避免「加油冲」「打工人」网络烂梗。
|
||
2. **长度**:主文案 ≤ 28 字;附注 ≤ 40 字。
|
||
3. **频率**:登录成功卡每登录一次;工作台主文案随数据刷新,不额外弹窗。
|
||
4. **关闭**:卡片右上可折叠;P2 提供总开关。
|
||
5. **i18n**:`workplace.care.*` / 既有 `login.care.*`;配置覆盖仅中文首版可接受,英文回落默认。
|
||
|
||
---
|
||
|
||
## 9 验收标准
|
||
|
||
### 9.1 P0
|
||
|
||
- [ ] 管理端工作台右侧出现「今日关照」,客户账号不出现。
|
||
- [ ] 有待办/预警数据时展示数字且可跳转;失败时优雅降级。
|
||
- [ ] 节假日 / 生日 / 周年当日主文案正确(可与登录卡并存但不重复堆砌)。
|
||
- [ ] 高压待办时出现减压文案,无催促措辞。
|
||
- [ ] 视觉不破坏现有 workplace 布局;符合前端规范主色变量。
|
||
|
||
### 9.2 P1
|
||
|
||
- [ ] 收工仅仪式或本地防抖,不误写考勤。
|
||
- [ ] 旺季条可关。
|
||
- [ ] 交接提示有数据才显示。
|
||
|
||
### 9.3 P2
|
||
|
||
- [ ] 无权限不可进配置页。
|
||
- [ ] 总开关关闭后登录卡与工作台模块均不展示。
|
||
- [ ] 生日墙默认关闭。
|
||
|
||
---
|
||
|
||
## 10 实施顺序(评审通过后)
|
||
|
||
1. **文档评审**(本文)——确认 pending 口径、模块摆放、是否跳过 P1 直接并行。
|
||
2. **P0 前端**:`CareTodayPanel` + i18n + workplace 接入;stats 映射。
|
||
3. **P0 后端**(若需):`workplace-stats` 补字段。
|
||
4. **P1**:收工 / 旺季 / 交接 / 周一口吻。
|
||
5. **P2**:配置页 + 权限 + 生日墙。
|
||
|
||
---
|
||
|
||
## 11 开放问题(已拍板)
|
||
|
||
| # | 问题 | 结论 |
|
||
| --- | --- | --- |
|
||
| 1 | `pendingCount` 统计口径与角色差异? | **有角色差异**:数据沿用 `workplace-stats` 的数据权限范围;展示时按角色偏好只引导 **一条** 待办(财务→待支付、客服→问题件优先、操作→待发货等),避免堆指标。 |
|
||
| 2 | 超时预警跳转? | **`/track/warningOrder`** |
|
||
| 3 | P2 入口? | **系统管理菜单**(人文关怀配置页,P2 再做) |
|
||
| 4 | 管理端子角色是否全开? | **先全部开放**(仅隐藏客户门户) |
|
||
|
||
---
|
||
|
||
## 13 双工作台(客户 / 员工)
|
||
|
||
| | 客户门户 `isCustomerPortal()` | 管理端员工 |
|
||
| --- | --- | --- |
|
||
| 组件 | `CustomerWorkplace.vue` | `AdminWorkplace.vue` |
|
||
| 入口判断 | `home/workplace/index.vue` | 同上 |
|
||
| 问候 Banner | ✓(含余额) | ✓(无余额) |
|
||
| 统计 / 订单分析 / 费用分析 | ✓ | **不展示** |
|
||
| 开始业务卡片 / 营销入口 | ✓ | **不展示** |
|
||
| 公告列表 | ✓ | **不展示** |
|
||
| 今日关照 | 不展示 | **左下左列**(节奏标签并入;仅一个主行动) |
|
||
| 常用入口 | 下单流程 | **左下右列**,按角色 3~4 个 |
|
||
| 世界时间 | 统计卡底部可折叠 | **融进今日待办底部**,默认展开,小卡片网格 |
|
||
| 公告 | 右侧栏 | **右侧栏公告卡**(与客户工作台同组件) |
|
||
|
||
布局:**左右双栏**(对齐客户工作台比例)。
|
||
左:问候 + 今日待办(stat-card)+ 世界时间小卡 → 关照 | 快捷入口。
|
||
右:公告(撑满高度)。
|
||
待办有量按紧急度排序;收工仅本页仪式,不影响考勤。
|
||
|
||
---
|
||
|
||
## 12 附录:与登录关怀的边界
|
||
|
||
| | 登录瞬间 | 今日关照 |
|
||
| --- | --- | --- |
|
||
| 时机 | 进系统前后 10 秒内 | 整天可看 |
|
||
| 目的 | 仪式、被看见 | 减压、行动 |
|
||
| 数据 | 员工档案 + 本地访问记录 | 业务待办 + 档案 |
|
||
| 失败策略 | 有通用欢迎即可 | 隐藏数字、保留一句 |
|
||
|
||
两者共用 `admin-login-care.ts` 的节假日 / 周年 / 时段工具函数,**避免两套日期逻辑**。
|