← 返回首页系统设计方案使用说明状态与流程OAuth 对接计划未来功能计划

工单中心系统设计方案

1. 业务理解

1.1 工单的本质

工单的本质:把「问题/需求」转化为有责任人、有时限、有闭环结果的任务。它是运营质量管理的抓手——每一条现场事件都有迹可循、有人跟进、有结果可查,沉淀为可统计、可考核的数据。

1.2 现状梳理

  1. 现场提交:车辆出现问题,现场直接提交工单;
  2. 客服代建:后台客服听到游客反馈后,代为提交工单,并通知现场运维人员处理。

1.3 系统定位

工单中心 = 统一接入、统一分派、统一跟踪、统一考核的中枢。

2. 系统定位与总体架构

2.1 总体架构

┌─────────────────────────────────────────────────────────────┐
│  接入层                                                      │
│  开放 API(外部系统接入) | 车辆平台事件 | 客服录入          │
├─────────────────────────────────────────────────────────────┤
│  核心层(工单引擎)                                          │
│  工单建模 | 状态机 | 分派引擎 | SLA 引擎 | 飞书通知引擎      │
├─────────────────────────────────────────────────────────────┤
│  应用层                                                      │
│  客服工作台(Web) | 现场运维端(飞书) | 管理后台           │
├─────────────────────────────────────────────────────────────┤
│  数据层                                                      │
│  MySQL(核心表见 §9)                                        │
└─────────────────────────────────────────────────────────────┘

2.2 技术栈

2.3 接入方式

接入方 方式 说明
外部系统(车厂等) 开放 API(/open/v1) 创建工单、查询、状态回传,见 §8
车辆平台 事件接入 低电量、遇困等事件自动建单,见 §5.4、§8.5
客服 Web 工作台录入 代游客建单
现场运维 飞书端 接单、处理、回填,见 §7

3. 统一工单模型与类型

3.1 工单号

格式:WO-YYYYMMDD-6位序号,全局唯一,如 WO-20261013-000123。

3.2 类型枚举

code 名称 归属
repair 维修 内部(现场运维闭环)
move 挪车 内部
charge 充电 内部
rescue 遇困 内部(自动驾驶场景)
maintenance 保养/巡检 内部(计划性)
cleaning 清洁消毒 内部(计划性)
accident 事故 内部(含保险定损流转)
infra 基础设施维护 内部(充电桩/站点设备)
ota 远程诊断/升级 内部(自动驾驶场景)
procurement 采购 外部(车厂系统接入)
after_sales 售后 外部(车厂系统接入)
类型设计为可配置枚举 + JSON 扩展字段:未来新增类型(如车辆报废/下线、跨站点车辆调配)不改核心表结构,仅需新增类型定义、扩展 JSON 结构与 sla_config 行。

3.3 来源枚举

code 名称 说明
user_report 游客反馈 游客口头反馈,由现场/客服代为录入
cs_create 客服录入 客服接到反馈后代建
auto_event 系统事件自动 车辆平台事件自动触发建单
external_api 外部系统接入 车厂系统等通过开放 API 推送

3.4 优先级

优先级 定义
P1 紧急:涉及安全或运营中断(如车遇困、车辆挡路)
P2 高:影响运营但可短时容忍
P3 普通:常规维修、计划性工作(如挪车、充电)

3.5 主字段清单

字段 说明
work_order_no 工单号,全局唯一
type 类型(§3.2 枚举)
source_type 来源(§3.3 枚举)
source_system 来源系统标识(外部接入时必填)
priority 优先级 P1/P2/P3
title / description 标题 / 问题描述
vehicle_id 车辆 ID(外部工单可空)
station_id / location_text / lat / lng 站点 / 位置文字 / 经纬度
status 状态(§4 状态机)
cs_id 受理客服
assignee_id 处理人(现场运维)
sla_response_minutes / sla_complete_minutes SLA 响应/完成时限(分钟)
responded_at / completed_at / closed_at 分派(响应)/ 完成 / 关闭时刻
external_order_no 外部系统单号(外部工单必填,用于幂等)
parent_order_id 关联父工单(如遇困单 → 后续维修单)
created_by 创建人
cancel_reason / reject_reason 取消 / 驳回原因

3.6 类型扩展字段(JSON)

不同工单类型的差异化信息存扩展字段(表 work_order_ext):

4. 状态机

4.1 主状态(各类型共用一套)

created 已创建 → assigned 已分派 → processing 处理中 → pending 挂起
                                                    ↘ completed 已完成 → closed 已关闭
stateDiagram-v2
    [*] --> created: 建单
    created --> assigned: 客服分派
    assigned --> processing: 运维接单/开始处理
    processing --> pending: 需等待(备件/外部反馈)
    pending --> processing: 恢复处理
    processing --> completed: 处理完成、回填结果
    completed --> closed: 客服确认关闭
    created --> cancelled: 录入错误取消
    assigned --> rejected: 处理人退回(附原因)
    processing --> rejected: 处理人退回(附原因)
    rejected --> assigned: 重新分派
    closed --> [*]

4.2 流转规则

5. 角色、权限与流程

5.1 角色与职责

角色 主要权限 使用端
客服 建单、分派、回访、关闭 Web 工作台
客服主管 已分派后取消审批、报表查看 Web 工作台
现场运维人员 接单、转派、处理、回填、完成 飞书端
运营管理员 SLA 配置、人员管理、报表 管理后台
外部系统(车厂等) 仅本系统工单的创建与状态同步 开放 API

游客不建账号:反馈经客服或现场运维转述录入系统。

5.2 通用流程

创建 → 客服分派(规则建议 + 人工确认)→ 运维飞书接单 → 处理
→ 回填结果 → 完成 → 客服确认关闭(可选)

5.3 内部工单流程要点

5.4 遇困流程(rescue,自动驾驶场景)

车辆感知困境 → 平台事件上报 → 自动建单(source_type=auto_event,优先级 P1)
→ 客服分派 → 先远程尝试解除(记录尝试过程)→ 成功则完成
→ 失败则到场救援 → 完成;如需维修,关联生成后续维修单
车辆平台事件格式由 M2 阶段定义(见 §10);事件接入与人工确认可配置:默认直接自动建单,必要时改为推送客服确认后建单。

5.5 外部工单流程(procurement / after_sales)

6. 分派与 SLA

6.1 分派规则

客服手动选人,系统按以下维度给出建议(人工可改):

  1. 站点 → 该站点运维人员;
  2. 技能匹配(维修 / 充电等);
  3. 当前在单负荷(在单量少的优先)。

6.2 SLA 配置

SLA 按 优先级 × 类型 配置(表 sla_config),示例默认值:

优先级 响应时限 完成时限
P1 10 分钟 2 小时
P2 30 分钟 4 小时
P3 2 小时 24 小时
数值仅为示例,以 sla_config 可配置为准。
计划性类型(maintenance / cleaning / 计划充电)可配置为只设完成时限、不设响应时限,按排期执行,不计入响应考核。

6.3 计时口径

6.4 超时升级

SLA 超时 → 飞书通知升级至客服主管,由主管人工介入:

  1. 催办:飞书提醒当前处理人加速处理,不改变分派;
  2. 改派:主管手动更换 assignee_id(走转派日志);
  3. 升级优先级:P3→P2 / P2→P1(可选,默认不自动升)。
超时升级动作按类型可配置:突发类(维修/事故/遇困)超时后允许自动改派(如分配给同站点空闲运维),计划类(保养/清洁)仅通知主管不自动改派。

7. 现场运维端(飞书集成)

现场运维人员通过飞书完成接单与处理闭环,不单独开发移动 App,能力边界受飞书平台约束。

能力 实现
新单 / 超时通知 飞书机器人推送(按站点群或私聊个人)
接单 / 转派 / 完成 消息卡片按钮,一键操作
简单回填 卡片表单(处理结论、结果)
复杂回填 跳转 H5 补充页(照片、备件清单),飞书内置浏览器打开
单内沟通 工单评论,飞书通知触达,沟通记录落库
降级预案:若运维人员无飞书账号,飞书端能力可降级为 H5 网页版,接口保持不变。

7.1 飞书用户映射

运维人员在 users 表中维护 feishu_user_id(飞书 open_id);新单/通知/超时升级时,系统通过 feishu_user_id 推送机器人消息或卡片;无飞书账号的运维人员不纳入分派池,由管理员在 users 表中补全映射后生效。

8. 外部系统接入(开放接口规范)

8.1 认证

复用公司 OAuth2 认证中心(webman oauth 项目):外部系统在认证中心注册客户端,使用 client credentials 流程获取令牌,调用时携带 Authorization: Bearer <token>。

8.2 接口清单(一期)

统一前缀 /open/v1,REST + JSON。

接口 说明
POST /open/v1/work-orders 创建工单(车厂系统推送采购 / 售后单)
GET /open/v1/work-orders/{no} 查询工单及状态
PATCH /open/v1/work-orders/{no}/status 外部更新进度(中心只更新外部单状态与扩展字段)

8.3 幂等与错误处理

8.4 外推(二期可选)

一期不做「中心 → 外部系统」webhook 外推;如外部系统需要主动感知状态变更,在 M3 阶段按需评估追加。

8.5 车辆平台事件接入(内部)

车辆平台(如自动驾驶调度系统)通过内部接口推送事件,由中心自动建单。

接口 说明
POST /internal/v1/events 车辆平台推送事件(低电量、遇困、故障报警等)

请求体示例:

{
  "event_type": "low_battery",
  "vehicle_id": "V10086",
  "timestamp": "2026-10-13T14:30:00+08:00",
  "location": {"lat": 31.2304, "lng": 121.4737, "text": "A区3号点"},
  "battery_level": 15,
  "event_id": "evt_20261013143000_V10086"
}

9. 数据模型(核心表)

9.1 work_orders(工单主表)

字段 类型 说明
id bigint PK
work_order_no varchar(32) 唯一 工单号
type varchar(20) §3.2 枚举
source_type varchar(20) §3.3 枚举
source_system varchar(50) 来源系统标识
priority varchar(4) P1/P2/P3
title varchar(200) 标题
description text 问题描述
vehicle_id bigint 可空 车辆 ID
station_id bigint 可空 站点 ID
location_text varchar(200) 位置文字描述
lat / lng decimal(10,7) 可空 经纬度
status varchar(20) §4 状态机取值
cs_id bigint 可空 受理客服
assignee_id bigint 可空 处理人
responded_at / completed_at / closed_at datetime 可空 响应/完成/关闭时刻
sla_response_minutes / sla_complete_minutes int SLA 时限(分钟)
external_order_no varchar(64) 可空 外部单号(外部工单必填)
parent_order_id bigint 可空 关联父工单
cancel_reason / reject_reason varchar(500) 可空 取消 / 驳回原因
created_by bigint 创建人
created_at / updated_at datetime 创建 / 更新时间

索引:(status, type)、(assignee_id, status)、(cs_id, status)、(vehicle_id)、(status, station_id)、(source_system, external_order_no)、(parent_order_id)、(created_at)。

9.2 work_order_status_log(状态流转日志)

id、order_id、from_status、to_status、operator_type、operator_id、remark、created_at。

9.3 work_order_ext(类型扩展)

order_id、type、payload(JSON,见 §3.6)。

9.4 work_order_attachments(附件)

id、order_id、url、kind(photo/audio)、created_by、created_at。

9.5 work_order_comments(工单评论)

id、order_id、author_type、author_id、content、created_at。

9.6 sla_config(SLA 配置)

id、type、priority、response_minutes、complete_minutes,(type, priority) 唯一。

9.7 users / stations

9.8 external_systems(外部系统注册)

id、code(唯一)、name、auth_mode(oauth_client_id)。

10. 实施里程碑

里程碑 范围 验收要点
M1 核心闭环 工单模型 + 状态机 + 客服工作台(建单 / 分派 / 查询 / 关闭)+ 运维飞书端(通知 / 接单 / 回填 / 完成)+ 管理后台(SLA 配置 / 人员 / 基础报表) 维修 / 挪车 / 充电 / 保养巡检 / 清洁 / 事故 / 基础设施全流程可跑通;SLA 计时与超时升级生效
M2 事件自动接入 定义车辆平台事件接口格式;低电量自动生成充电单;遇困事件自动建单;OTA / 远程诊断(与车辆平台远程通道配合) 事件触发 → 自动建单 → 分派闭环可跑通;远程诊断可发起并可转线下维修
M3 外部系统接入 开放 API 上线;车厂系统采购 / 售后工单对接 外部系统可建单、查单、回传状态;幂等生效;管理后台可见外部单统计

附录:方案覆盖自检

用户诉求 对应章节
维修 / 挪车 / 充电三类现有工单 §1.2、§3.2、§5.3
自动驾驶「车遇困」工单 §1.2、§3.2、§5.4
工单中心统一管理 §1.3、§2
车厂系统采购 / 售后工单接入 §5.5、§8、§10 M3
现场提交与客服代建两条来源 §1.2、§3.3
现场运维飞书端 §7、§7.1
车辆平台事件自动建单 §5.4、§8.5