更新文档
This commit is contained in:
parent
1f97307814
commit
4e211ed1fe
@ -15,7 +15,7 @@
|
|||||||
|
|
||||||
首次进入 App 会让你填写:
|
首次进入 App 会让你填写:
|
||||||
|
|
||||||
- `backendUrl`:例如 `http://192.168.1.10:3000`
|
- `backendUrl`:例如 `http://192.168.1.10:7788`
|
||||||
- `apiKey`:后端 `.env` 里的 `SMS_GATEWAY_API_KEY`
|
- `apiKey`:后端 `.env` 里的 `SMS_GATEWAY_API_KEY`
|
||||||
- (不再需要 `deviceId`:由后端根据 `apiKey` 自动归属任务/短信)
|
- (不再需要 `deviceId`:由后端根据 `apiKey` 自动归属任务/短信)
|
||||||
|
|
||||||
@ -24,7 +24,10 @@
|
|||||||
- 启动前台服务轮询后端下发发送任务
|
- 启动前台服务轮询后端下发发送任务
|
||||||
- 注册系统短信接收广播,上报短信内容并解析验证码
|
- 注册系统短信接收广播,上报短信内容并解析验证码
|
||||||
|
|
||||||
你也可以点击 `检测心跳` 按钮,用于手动验证 App 与后端的网络/鉴权通断。
|
你也可以使用 `短信测试` 功能:
|
||||||
|
|
||||||
|
- 在输入框填写国际格式号码,例如 `+8613712345678`
|
||||||
|
- 点击“短信测试”发送一条固定测试短信到该号码
|
||||||
|
|
||||||
## 注意事项
|
## 注意事项
|
||||||
|
|
||||||
|
|||||||
@ -25,7 +25,7 @@ npm i
|
|||||||
npm start
|
npm start
|
||||||
```
|
```
|
||||||
|
|
||||||
默认监听:`http://localhost:3000`
|
默认监听由环境变量 `PORT` 决定(示例:`http://localhost:7788`)
|
||||||
|
|
||||||
## 鉴权
|
## 鉴权
|
||||||
|
|
||||||
|
|||||||
@ -42,6 +42,7 @@
|
|||||||
5. 业务系统从后端查询验证码并完成流程
|
5. 业务系统从后端查询验证码并完成流程
|
||||||
|
|
||||||
发送流程(可选):
|
发送流程(可选):
|
||||||
|
|
||||||
1. 业务系统调用后端发短信接口
|
1. 业务系统调用后端发短信接口
|
||||||
2. 后端生成发送任务
|
2. 后端生成发送任务
|
||||||
3. 网关轮询/长连接获取任务
|
3. 网关轮询/长连接获取任务
|
||||||
@ -50,10 +51,10 @@
|
|||||||
## 4. 技术选型建议
|
## 4. 技术选型建议
|
||||||
|
|
||||||
- **客户端**:Android 原生 Kotlin(推荐)
|
- **客户端**:Android 原生 Kotlin(推荐)
|
||||||
- **网络层**:Retrofit + OkHttp
|
- **网络层**:HttpURLConnection(MVP)
|
||||||
- **本地存储**:Room 或轻量 SQLite
|
- **本地存储**:Room 或轻量 SQLite
|
||||||
- **日志**:本地文件 + 后端集中日志
|
- **日志**:本地文件 + 后端集中日志
|
||||||
- **心跳与保活**:Foreground Service + WorkManager
|
- **保活策略**:Foreground Service(前台轮询)
|
||||||
|
|
||||||
> 若主项目使用 uniapp,建议通过原生插件封装短信能力,不建议纯前端层直接处理短信底层功能。
|
> 若主项目使用 uniapp,建议通过原生插件封装短信能力,不建议纯前端层直接处理短信底层功能。
|
||||||
|
|
||||||
@ -99,7 +100,7 @@
|
|||||||
- 前台服务常驻(通知栏提示)
|
- 前台服务常驻(通知栏提示)
|
||||||
- 开机自启恢复服务
|
- 开机自启恢复服务
|
||||||
- 引导用户关闭电池优化限制
|
- 引导用户关闭电池优化限制
|
||||||
- 关键任务使用 WorkManager 重试
|
- 失败任务在下次轮询继续重试(可在后续增加失败队列/指数退避)
|
||||||
|
|
||||||
## 6. 模块设计
|
## 6. 模块设计
|
||||||
|
|
||||||
@ -107,7 +108,7 @@
|
|||||||
|
|
||||||
1. **sms-receiver**:短信接收与解析
|
1. **sms-receiver**:短信接收与解析
|
||||||
2. **sms-sender**:短信发送与发送回执
|
2. **sms-sender**:短信发送与发送回执
|
||||||
3. **task-sync**:任务拉取、心跳、状态上报
|
3. **task-sync**:任务拉取、状态上报
|
||||||
4. **storage**:本地缓存与失败队列
|
4. **storage**:本地缓存与失败队列
|
||||||
5. **api-client**:后端 API 通信
|
5. **api-client**:后端 API 通信
|
||||||
6. **security**:签名、鉴权、加密
|
6. **security**:签名、鉴权、加密
|
||||||
@ -120,10 +121,8 @@
|
|||||||
- `sender`
|
- `sender`
|
||||||
- `content`
|
- `content`
|
||||||
- `receivedAt`
|
- `receivedAt`
|
||||||
- `simSlot`
|
|
||||||
- `parsedCode`
|
- `parsedCode`
|
||||||
- `parseStatus`
|
- `parseStatus`
|
||||||
- `uploadStatus`
|
|
||||||
- `rawPduHash`
|
- `rawPduHash`
|
||||||
|
|
||||||
### OutboundTask(出站任务)
|
### OutboundTask(出站任务)
|
||||||
@ -131,7 +130,6 @@
|
|||||||
- `taskId`
|
- `taskId`
|
||||||
- `phone`
|
- `phone`
|
||||||
- `content`
|
- `content`
|
||||||
- `simSlot`
|
|
||||||
- `status`(pending/sending/success/failed)
|
- `status`(pending/sending/success/failed)
|
||||||
- `retryCount`
|
- `retryCount`
|
||||||
- `lastError`
|
- `lastError`
|
||||||
@ -140,18 +138,17 @@
|
|||||||
|
|
||||||
## 7.1 鉴权建议
|
## 7.1 鉴权建议
|
||||||
|
|
||||||
- 每台设备分配 `deviceId + deviceSecret`
|
- 网关端通过请求头携带 `X-Api-Key: SMS_GATEWAY_API_KEY` 进行鉴权
|
||||||
- 请求头携带签名(HMAC-SHA256)
|
|
||||||
- 使用 HTTPS,拒绝明文传输
|
- 使用 HTTPS,拒绝明文传输
|
||||||
|
|
||||||
## 7.2 API 列表
|
## 7.2 API 列表
|
||||||
|
|
||||||
1. `POST /api/v1/sms/inbound`
|
1. `POST /api/v1/sms/inbound`
|
||||||
- 作用:上报入站短信
|
- 作用:上报入站短信
|
||||||
- 请求体:发送方、短信内容、时间、设备ID、解析结果
|
- 请求体:发送方、短信内容、时间、解析结果
|
||||||
- 返回:`ackId`
|
- 返回:`ackId`
|
||||||
|
|
||||||
2. `GET /api/v1/device/tasks?deviceId=xxx`
|
2. `GET /api/v1/device/tasks?limit=5`
|
||||||
- 作用:拉取发送任务
|
- 作用:拉取发送任务
|
||||||
- 返回:任务列表
|
- 返回:任务列表
|
||||||
|
|
||||||
@ -159,10 +156,6 @@
|
|||||||
- 作用:回传发送结果
|
- 作用:回传发送结果
|
||||||
- 请求体:`taskId`、状态、失败原因、运营商回执(如有)
|
- 请求体:`taskId`、状态、失败原因、运营商回执(如有)
|
||||||
|
|
||||||
4. `POST /api/v1/device/heartbeat`
|
|
||||||
- 作用:设备在线心跳
|
|
||||||
- 上报:电量、网络、SIM状态、App版本
|
|
||||||
|
|
||||||
## 8. 验证码解析策略
|
## 8. 验证码解析策略
|
||||||
|
|
||||||
## 8.1 正则提取建议
|
## 8.1 正则提取建议
|
||||||
|
|||||||
@ -24,7 +24,7 @@ npm i
|
|||||||
npm start
|
npm start
|
||||||
```
|
```
|
||||||
|
|
||||||
默认监听:`http://localhost:3000`
|
默认监听:`http://localhost:7788`
|
||||||
|
|
||||||
## 2. 构建安卓端
|
## 2. 构建安卓端
|
||||||
|
|
||||||
@ -48,6 +48,6 @@ npm start
|
|||||||
|
|
||||||
## 4. 后续扩展建议
|
## 4. 后续扩展建议
|
||||||
|
|
||||||
- 增加设备心跳接口、设备在线监控
|
|
||||||
- 增加任务重试与失败原因字段
|
- 增加任务重试与失败原因字段
|
||||||
- 增加短信去重与解析规则配置(正则规则下发)
|
- 增加短信去重与解析规则配置(正则规则下发)
|
||||||
|
<!-- end -->
|
||||||
Loading…
Reference in New Issue
Block a user