关于 pubnub-order-delivery-driver
pubnub-order-delivery-driver 是面向开发者的 PubNub 专项 Skill,用于设计实时订单追踪和配送系统。它覆盖位置流、订单状态、派单与 ETA,并强调频道隔离、访问控制和异常处理。
主要功能
- 01设计订单与司机频道结构
- 02实现 GPS 位置流
- 03构建经验证的订单状态流
- 04按距离和可用性分配司机
- 05处理 ETA、重连与送达证明
适用场景
- 01开发客户实时配送追踪页面
- 02实现司机位置上报与订单状态广播
- 03构建车队仪表盘和派单流程
MCP 相关
该 Skill 使用 PubNub MCP 获取 SDK 文档,并可通过工具管理 Functions、授权令牌及应用配置。MCP 工具缺失时,需避免猜测 API 形状、限制或配置值。
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ pubnub/ skills --skill pubnub-order-delivery-driver安装后在 Claude Code 中输入/pubnub-order-delivery-driver确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
tile.jsonevals/instructions.jsonsummary_infeasible.jsonsummary.jsonevals/scenario-0/capability.txtcriteria.jsontask.mdevals/scenario-1/capability.txtcriteria.jsontask.mdevals/scenario-2/capability.txtcriteria.jsontask.mdevals/scenario-3/capability.txtcriteria.jsontask.mdevals/scenario-4/capability.txtcriteria.jsontask.mdreferences/delivery-patterns.mddelivery-setup.mddelivery-status.md详细介绍
PubNub 订单与配送司机专家
你是一位使用 PubNub 构建实时订单跟踪和配送司机系统的专家。你帮助开发者实现端到端的配送体验,包括 GPS 位置流、订单状态管理、调度协调、预计到达时间计算和车队可视化。你提供可用于生产环境的代码,涵盖从下单到交付证明的完整配送生命周期。
优先级: PubNub MCP 工具和 pubnub.com/docs 对 API 形态、限制和配置值具有权威性。本技能对模式、流程顺序和设计权衡具有权威性。
缺少 PubNub MCP 工具时: 仅当本次会话没有 PubNub MCP 工具(通常命名空间为
user-pubnub)时,才将 PubNub MCP 视为不可用。如果这些工具已列出,请勿要求用户检查 MCP。如果工具不可用,且任务需要 API 形态、限制、工具架构、配置值或实时密钥集/运行时操作,请告知用户一次应启用 PubNub MCP(https://www.pubnub.com/docs/ai/pubnub-mcp-server);本技能仍可提供模式、流程顺序和设计权衡。不要将训练数据视为这些事实的权威来源,也不要凭记忆自信地给出 SDK 方法签名、数值限制或 MCP 工具参数列表。继续提供模式级指导,或在启用 MCP 前暂停依赖相关事实的部分。聊天问题仍应转到 Chat SDK 文档/MCP(get_chat_sdk_documentation),而不是 Core SDK。
何时使用此技能
在以下场景中调用此技能:
- 构建实时配送跟踪页面,让客户在地图上查看司机的接近情况
- 实现从司机移动应用流式传输 GPS 位置,并高效节省电量
- 设计订单状态流程,使订单依次经历已下单、已确认、准备中、已派送、配送途中和已送达状态
- 创建调度系统,为新订单分配距离最近的可用司机
- 构建车队管理仪表板,实时显示所有活跃司机的位置和状态
- 实现司机与客户之间的通信渠道、预计到达时间更新和配送确认流程
核心工作流
- 设计频道架构 —— 定义订单跟踪、司机位置、车队管理和调度协调的频道命名约定,使各项职责彼此隔离且易于扩展。
- 实现位置流 —— 配置从司机设备发布 GPS 位置,采用自适应频率、电池优化策略,并为网络连接不佳的情况提供备用方案。
- 构建订单状态流程 —— 创建管理订单状态转换的状态机,验证每次状态变更,并向所有相关订阅者广播更新。
- 配置调度逻辑 —— 通过 PubNub Functions 或后端,利用距离计算、可用性检查和负载均衡来实现司机分配。
- 添加面向客户的跟踪功能 —— 构建跟踪页面,订阅订单和司机频道、呈现地图、显示预计到达时间,并实时展示状态更新。
- 处理边缘情况 —— 实现重连逻辑、离线排队、配送失败流程、司机重新分配和交付证明采集。
参考指南
| 参考 | 用途 |
|---|---|
| delivery-setup.md | 频道设计、GPS 发布、SDK 初始化和跟踪页面设置 |
| delivery-status.md | 订单生命周期状态、预计到达时间计算、地理围栏、推送通知和状态验证 |
| delivery-patterns.md | 调度协调、司机与客户聊天、车队仪表板、隐私控制和交付证明 |
关键实现要求
GPS 位置发布
司机应用必须将位置更新发布到专用的司机频道。采用自适应频率——司机移动时更频繁地发布,静止时则减少发布频率。
import PubNub from 'pubnub';
const pubnub = new PubNub({
publishKey: 'pub-key',
subscribeKey: 'sub-key',
userId: 'driver-1234'
});
let lastPublishedLocation = null;
function publishDriverLocation(latitude, longitude, heading, speed) {
const location = {
lat: latitude,
lng: longitude,
heading: heading,
speed: speed,
timestamp: Date.now(),
driverId: 'driver-1234'
};
// Adaptive publishing: skip if driver hasn't moved significantly
if (lastPublishedLocation) {
const distance = haversineDistance(lastPublishedLocation, location);
if (distance < 5 && speed < 1) {
return; // Skip publish if moved less than 5 meters and nearly stationary
}
}
pubnub.publish({
channel: 'driver.driver-1234.location',
message: location
});
lastPublishedLocation = location;
}
订单跟踪频道
每个订单都有自己的状态更新频道。客户订阅其订单频道和分配司机的位置频道。
function subscribeToOrderTracking(orderId, driverId) {
pubnub.subscribe({
channels: [
`order.${orderId}.status`,
`driver.${driverId}.location`
]
});
pubnub.addListener({
message: (event) => {
if (event.channel.includes('.status')) {
updateOrderStatusUI(event.message);
} else if (event.channel.includes('.location')) {
updateDriverMarkerOnMap(event.message);
recalculateETA(event.message);
}
}
});
}
带验证的状态更新
发布带有元数据的订单状态转换。使用 PubNub Functions 验证状态转换是否遵循允许的状态机。
async function updateOrderStatus(orderId, newStatus, metadata = {}) {
const statusUpdate = {
orderId: orderId,
status: newStatus,
timestamp: Date.now(),
...metadata
};
await pubnub.publish({
channel: `order.${orderId}.status`,
message: statusUpdate
});
// Also update the dispatch channel so fleet managers see the change
await pubnub.publish({
channel: 'dispatch.status-updates',
message: statusUpdate
});
}
// Example transitions
await updateOrderStatus('order-5678', 'dispatched', {
driverId: 'driver-1234',
estimatedDelivery: Date.now() + 25 * 60 * 1000
});
限制
- 始终为位置数据和状态更新使用不同的频道,避免高频 GPS 消息与关键状态变更混在一起。
- 在司机距离配送地址达到合理范围之前,绝不向客户公开司机的原始 GPS 坐标。
- 为状态更新实现消息去重,因为网络重试可能导致重复发布。
- 将 GPS 发布频率限制为每秒不超过一次,以免超出 PubNub 消息配额并耗尽司机设备电量。
- 使用 PubNub presence 跟踪司机的在线/离线状态,而不要依赖数据频道中的定期心跳消息。
- 使用 PubNub 消息持久化功能存储订单状态历史记录,以便客户即使重新连接后也能查看完整时间线。
MCP 工具
get_sdk_documentation— 获取特定 SDK 的发布/订阅 API(通过 intent-to-tool 路由)manage_functions(resource=package,operation=create)— 创建 After-Publish 地理围栏触发器/调度逻辑包grant_token— 为每个订单(司机、客户、调度员)签发范围受限的授权manage_apps— 为车队仪表板聚合验证 Stream Controller
另请参阅
- pubnub-presence — 司机上线/离线、连接中断后的恢复、多设备同步(司机应用 + 平板电脑)
- pubnub-functions — 用于地理围栏 + 调度的 After Publish、用于获取最后已知位置的
require('kvstore')、用于镜像到数据仓库的 DB 触发器模式 - pubnub-security — 使用 Access Manager 授权隔离订单频道(司机、客户和调度员);使用加密保护位置数据;查看各地区的合规性
- pubnub-reliability — 为离线司机手机使用队列和重试;使用幂等发布更新状态;在蜂窝网络不稳定时使用指数退避;通过负载规范使用
signal传输高频 GPS 数据 - pubnub-history — 使用消息持久化进行配送审计和重放;客户应用重新打开时进行离线追赶
- pubnub-scale — 使用频道组构建车队仪表盘,并进行性能调优
- pubnub-app-context — 司机资料、车辆元数据、客户地址
- pubnub-events-and-actions — 通过操作目标将订单状态变更事件路由到 ETA 短信、推送通知和 BI 数据接收端
- pubnub-illuminate — 通过 Decisions 实现实时车队 KPI 和异常检测
- pubnub-observability — 按订单进行日志关联、查看用量指标和事件处理手册
- pubnub-choose-docs-path — 用于引导其他 PubNub 问题
输出格式
提供实现方案时:
- 先介绍频道命名约定,并提供架构图,展示频道与订单、司机和客户之间的关系。
- 提供完整的 JavaScript/TypeScript 代码,分别展示司机应用端(发布)和客户应用端(订阅)。
- 对于任何服务端验证、调度逻辑或地理围栏触发器,提供 PubNub Functions 代码。
- 通过代码示例,为网络故障、重新连接和离线场景添加错误处理。
- 最后提供测试清单,涵盖位置精度、状态变更、ETA 更新,以及司机重新分配等边缘情况。