Files
Home-Care/docs/外部服务接入清单.md
comclib 4a2eb09606
Some checks failed
CI / backend (push) Has been cancelled
CI / website (push) Has been cancelled
chore: 文档整理 — 移动至 docs/ 目录, 更新 IMPLEMENTATION_PLAN.md
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-22 11:52:03 +08:00

122 lines
5.8 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 外部服务接入清单
> 编制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 合法域名 | 文件上传地址 | 需配置对象存储域名 |
---
## 六、域名与 HTTPSP1 — 上线必需)
| 项目 | 说明 | 优先级 |
|------|------|--------|
| 域名注册 | 官网 + 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 个外部服务/平台,其余已全部通过代码修复解决。**