mcpField
P
pubnub-order-delivery-driver

pubnub-order-delivery-driver

github.com/pubnub开发641 次安装6 周前更新
代码仓库

关于 pubnub-order-delivery-driver

pubnub-order-delivery-driver 是面向开发者的 PubNub 专项 Skill,用于设计实时订单追踪和配送系统。它覆盖位置流、订单状态、派单与 ETA,并强调频道隔离、访问控制和异常处理。

主要功能

  1. 01设计订单与司机频道结构
  2. 02实现 GPS 位置流
  3. 03构建经验证的订单状态流
  4. 04按距离和可用性分配司机
  5. 05处理 ETA、重连与送达证明

适用场景

  1. 01开发客户实时配送追踪页面
  2. 02实现司机位置上报与订单状态广播
  3. 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.json
evals/
instructions.json
summary_infeasible.json
summary.json
evals/scenario-0/
capability.txt
criteria.json
task.md
evals/scenario-1/
capability.txt
criteria.json
task.md
evals/scenario-2/
capability.txt
criteria.json
task.md
evals/scenario-3/
capability.txt
criteria.json
task.md
evals/scenario-4/
capability.txt
criteria.json
task.md
references/
delivery-patterns.md
delivery-setup.md
delivery-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 位置,并高效节省电量
  • 设计订单状态流程,使订单依次经历已下单、已确认、准备中、已派送、配送途中和已送达状态
  • 创建调度系统,为新订单分配距离最近的可用司机
  • 构建车队管理仪表板,实时显示所有活跃司机的位置和状态
  • 实现司机与客户之间的通信渠道、预计到达时间更新和配送确认流程

核心工作流

  1. 设计频道架构 —— 定义订单跟踪、司机位置、车队管理和调度协调的频道命名约定,使各项职责彼此隔离且易于扩展。
  2. 实现位置流 —— 配置从司机设备发布 GPS 位置,采用自适应频率、电池优化策略,并为网络连接不佳的情况提供备用方案。
  3. 构建订单状态流程 —— 创建管理订单状态转换的状态机,验证每次状态变更,并向所有相关订阅者广播更新。
  4. 配置调度逻辑 —— 通过 PubNub Functions 或后端,利用距离计算、可用性检查和负载均衡来实现司机分配。
  5. 添加面向客户的跟踪功能 —— 构建跟踪页面,订阅订单和司机频道、呈现地图、显示预计到达时间,并实时展示状态更新。
  6. 处理边缘情况 —— 实现重连逻辑、离线排队、配送失败流程、司机重新分配和交付证明采集。

参考指南

参考用途
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

另请参阅

输出格式

提供实现方案时:

  1. 先介绍频道命名约定,并提供架构图,展示频道与订单、司机和客户之间的关系。
  2. 提供完整的 JavaScript/TypeScript 代码,分别展示司机应用端(发布)和客户应用端(订阅)。
  3. 对于任何服务端验证、调度逻辑或地理围栏触发器,提供 PubNub Functions 代码。
  4. 通过代码示例,为网络故障、重新连接和离线场景添加错误处理。
  5. 最后提供测试清单,涵盖位置精度、状态变更、ETA 更新,以及司机重新分配等边缘情况。

评论

支持 Markdown