外部服务接入清单
编制:2026-05-19 · 从系统待完善清单中提取所有需要接入第三方服务/平台/API 的项目
一、通知推送(P0 — 阻塞上线)
| 通道 |
所需服务 |
接入方式 |
配置项 |
优先级 |
| MQTT |
EMQX / Mosquitto / 阿里云物联网平台 |
Spring Integration MQTT 或 Eclipse Paho Java Client |
hss.mqtt.broker-url hss.mqtt.username hss.mqtt.password |
P0 |
| 微信小程序订阅消息 |
微信开放平台·小程序·订阅消息 |
后端调用 POST https://api.weixin.qq.com/cgi-bin/message/subscribe/send |
hss.wechat.app-id hss.wechat.app-secret |
P0 |
| 短信 |
阿里云短信 / 腾讯云短信 |
对应 SDK(aliyun-sms-sdk / tencentcloud-sdk-java-sms) |
hss.sms.access-key hss.sms.secret-key hss.sms.sign-name hss.sms.template-id |
P0 |
代码位置:NotificationSender.java:76-97 — 三个通道的 doSend() 方法体目前仅写日志。
二、文件存储(P1 — 限制可用性)
| 服务 |
接入方式 |
配置项 |
优先级 |
| MinIO(自建) 或 阿里云 OSS / AWS S3 |
对应 Java SDK |
hss.storage.endpoint hss.storage.access-key hss.storage.secret-key hss.storage.bucket |
P1 |
代码位置:EvidenceService.java:28 (presignUpload) + :60 (getSignedUrl) — 目前返回本地路径,非真实预签名 URL。
三、地图与定位(P1 — 影响调度精度)
| 服务 |
接入方式 |
配置项 |
优先级 |
| 高德地图 / 百度地图 API |
HTTP REST API(地理编码 + 驾车距离 + ETA) |
hss.map.provider hss.map.api-key |
P1 |
使用场景:
DispatchAlgorithm.calculateDistanceScore() — 人员与服务地址真实行车距离(当前用 Haversine 直线距离 + 上次签到位置估算)
EtaService.estimateTravelMinutes() — 区域间路程时间(当前按区域编码前缀估算)
- 申请单地址 → 经纬度地理编码(当前需要手动填写
address_lat / address_lng)
四、微信支付(P1 — 已实现 SDK,缺生产配置)
| 配置项 |
说明 |
获取方式 |
WECHAT_APPID |
小程序 AppId |
微信公众平台 → 开发 → 开发管理 → 开发设置 |
WECHAT_MCHID |
商户号 |
微信支付商户平台 → 账户中心 |
WECHAT_APIV3_KEY |
API v3 密钥(32位) |
商户平台 → API 安全 → 设置 APIv3 密钥 |
WECHAT_SERIAL_NO |
商户证书序列号 |
商户平台 → API 安全 → 申请 API 证书 |
WECHAT_PRIVATE_KEY_PATH |
商户私钥文件路径(PEM) |
证书申请时生成的 apiclient_key.pem |
WECHAT_NOTIFY_URL |
支付回调地址 |
必须是公网可访问的域名 |
代码位置:WechatPayService.java — JSAPI 下单、退款、回调验签解密均已实现,缺真实商户号配置。
五、微信小程序发布(P1 — 阻塞发布)
| 项目 |
说明 |
获取方式 |
| 小程序 AppId |
manifest.json:44 当前为空 |
微信公众平台 → 开发 → 开发管理 |
| 服务器域名白名单 |
manifest.json:46 urlCheck 需改为 true |
小程序后台 → 开发管理 → 服务器域名 |
| request 合法域名 |
后端 API 地址 |
需配置 https://your-domain.com |
| uploadFile 合法域名 |
文件上传地址 |
需配置对象存储域名 |
六、域名与 HTTPS(P1 — 上线必需)
| 项目 |
说明 |
优先级 |
| 域名注册 |
官网 + API 服务域名 |
P1 |
| SSL 证书 |
Let's Encrypt / 云服务商免费证书 |
P1 |
| ICP 备案 |
中国大陆法律要求 |
P1 |
| 公安备案 |
部分省市要求 |
P2 |
七、监控与运维(P2)
| 服务 |
接入方式 |
优先级 |
| Prometheus + Grafana |
Micrometer + Spring Boot Actuator(已集成 actuator) |
P2 |
| 日志集中化 |
ELK / 阿里云 SLS / Loki |
P2 |
| APM |
SkyWalking / 阿里云 ARMS |
P2 |
八、无需外部服务,纯代码修复项(已处理)
以下项目已在本次修复中通过代码改动解决,无需外部服务:
| # |
项目 |
修复方式 |
| P0-1 |
StateMachine 守卫条件 |
transition() 增加 evaluateConstraint() |
| P0-2 |
验证结果被忽略 |
submit() 增加 if (!result.passed()) throw |
| P0-3 |
审核人空检查 |
改为 if (equals) throw BusinessException |
| P0-4 |
SQL 注入 |
LeadController 改为参数化查询 ? |
| P0-5 |
.gitignore 缺失 |
创建 .gitignore |
| P0-6 |
Dockerfile Maven 镜像 |
改为 maven:3.9-eclipse-temurin-17(JRE 镜像当前不可用) |
| P1-1 |
批量作业失败无日志 |
BatchJobService + ScheduledTasks 增加 FAILED 日志 |
| P1-2 |
EvidenceService 数组越界 |
增加 try-catch NumberFormatException |
| P1-3 |
Nginx 安全头 |
HSTS + CSP + Permissions-Policy |
| P1-4 |
.dockerignore |
website/.dockerignore |
| P1-5 |
FK 约束 + 索引 V12 |
hss_notification_receipts.outbox_id 等 FK + 4 个索引 |
| P2-1 |
delivery 水印导出 |
api.js 导出 addWatermark |
| P2-2 |
execute 离线队列 |
catch 块调用 OfflineQueue.add() |
| P2-3 |
轨迹启动 |
checkin.vue 签到成功后 startTrajectory() |
| P2-4 |
iOS 权限嵌套 |
manifest.json 修复 JSON 结构 |
优先级总结
| 级别 |
外部服务数 |
代码修复数 |
| P0(阻塞上线) |
3(MQTT Broker + 微信订阅消息 + 短信 SDK) |
6 |
| P1(影响核心功能) |
3(对象存储 + 地图 API + 域名证书) |
12 |
| P2(增强完善) |
3(监控 + CI/CD + 微信配置) |
6 |
总计:需接入 9 个外部服务/平台,其余已全部通过代码修复解决。