Install
openclaw skills install parcel-station-chatBuild a courier station AI chat system with Express, GPT-5.5, local JSON DB, OCR, and WeChat-style frontend.
openclaw skills install parcel-station-chat快速搭建快递驿站 AI 客服系统。Express 后端 + GPT-5.5 对话 + JSON 本地数据库 + 面单 OCR + 微信风格聊天前端。
用户 (微信小程序/浏览器)
│
POST /api/chat
POST /api/ocr
GET /api/packages/:code
│
┌───────▼──────────────────────┐
│ Express server.js (v3.1) │
│ ├ loadApiConfig() → SU2 │
│ ├ buildLookupBlock() │
│ │ ├ extractPickupCode() │
│ │ └ extractTrackingTail() │
│ ├ callAI() → GPT-5.5 │
│ └ handleFallback() │
├──────────────────────────────┤
│ db.js (JSON 文件存储) │
│ ├ findByPickupCode() │
│ ├ findByTrackingTail() │
│ ├ findByPhoneTail() │
│ ├ listPackages() (分页) │
│ └ insertPackage() │
├──────────────────────────────┤
│ ocr.js (GPT-5.5 Vision) │
│ └ recognizeWaybill() │
└──────────────────────────────┘
1-2-25001
│ │ ││││
│ │ │││└── 001 = 当天第1个包裹
│ │ ││└─── 25 = 日期(当月第几天)
│ │ └┴──── 5位日期序号(DDNNN)
│ └────── 排号
└──────── 货架号
正则:/(\d{1,2})\s*[--—–]\s*(\d{1,2})\s*[--—–]\s*(\d{5})/
mkdir parcel-help && cd parcel-help
npm init -y
npm install express
JSON 文件存储,零原生依赖。关键函数:
findByPickupCode(code) — 取件码查询findByTrackingTail(tail) — 运单号后5位查询findByPhoneTail(tail) — 手机尾号4位查询listPackages({page, pageSize, q}) — 分页+搜索insertPackage(p) — 新增包裹(含冲突检测)种子数据:12条包裹覆盖全部货架,当天日期自动计算。
调用 GPT-5.5 Vision 识别面单,返回 JSON:
{"pickup_code":"","tracking_no":"","recipient_name":"","recipient_phone_tail":"","carrier":"","confidence":"low|medium|high"}
注意:AI 可能返回 markdown 包裹的 JSON,parseOcrJson 需处理 ```json ```。
核心逻辑流程:
loadApiConfig() → 读 SU2_API_KEY + baseUrlbuildLookupBlock(message) → 自动识别取件码/运单号尾号callAI() → 带会话历史 + 查库结果handleFallback() → 本地关键词+查库会话管理:30分钟 TTL,保留最近5轮对话。
微信风格聊天界面,注意:
node server.js
# 聊天界面: http://localhost:3000
# 管理后台: http://localhost:3000/admin.html
# 健康检查: http://localhost:3000/api/health
| 方法 | 路径 | 说明 |
|---|---|---|
| GET | /api/health | 健康检查(版本、AI状态、数据库总量) |
| POST | /api/chat | 聊天(message + image + sessionId) |
| POST | /api/ocr | 面单识别(image) |
| GET | /api/packages | 包裹列表(page, pageSize, q) |
| POST | /api/packages | 录入包裹 |
| GET | /api/packages/:code | 按取件码查询 |
better-sqlite3 在 Windows 编译失败 → 换 JSONtaskkill /F /IM node.exe 后可能输出乱码,但服务正常curl.exe 在 PowerShell 中 JSON 引号会转义出错 → 用 Invoke-RestMethod