From 4e211ed1fe48044bbdce228a4bc52cab08c74c5b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E5=BF=97=E5=BC=BA?= <357099073@qq.com> Date: Wed, 25 Mar 2026 17:15:46 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E6=96=87=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- SMS/README.md | 7 +++++-- backend/README.md | 2 +- docs/短信网关APK开发文档.md | 23 ++++++++--------------- docs/端到端开发与部署.md | 4 ++-- 4 files changed, 16 insertions(+), 20 deletions(-) diff --git a/SMS/README.md b/SMS/README.md index 1098a1c..30bd0a9 100644 --- a/SMS/README.md +++ b/SMS/README.md @@ -15,7 +15,7 @@ 首次进入 App 会让你填写: -- `backendUrl`:例如 `http://192.168.1.10:3000` +- `backendUrl`:例如 `http://192.168.1.10:7788` - `apiKey`:后端 `.env` 里的 `SMS_GATEWAY_API_KEY` - (不再需要 `deviceId`:由后端根据 `apiKey` 自动归属任务/短信) @@ -24,7 +24,10 @@ - 启动前台服务轮询后端下发发送任务 - 注册系统短信接收广播,上报短信内容并解析验证码 -你也可以点击 `检测心跳` 按钮,用于手动验证 App 与后端的网络/鉴权通断。 +你也可以使用 `短信测试` 功能: + +- 在输入框填写国际格式号码,例如 `+8613712345678` +- 点击“短信测试”发送一条固定测试短信到该号码 ## 注意事项 diff --git a/backend/README.md b/backend/README.md index 694b5ed..7458ca5 100644 --- a/backend/README.md +++ b/backend/README.md @@ -25,7 +25,7 @@ npm i npm start ``` -默认监听:`http://localhost:3000` +默认监听由环境变量 `PORT` 决定(示例:`http://localhost:7788`) ## 鉴权 diff --git a/docs/短信网关APK开发文档.md b/docs/短信网关APK开发文档.md index 628e7da..c631f73 100644 --- a/docs/短信网关APK开发文档.md +++ b/docs/短信网关APK开发文档.md @@ -42,6 +42,7 @@ 5. 业务系统从后端查询验证码并完成流程 发送流程(可选): + 1. 业务系统调用后端发短信接口 2. 后端生成发送任务 3. 网关轮询/长连接获取任务 @@ -50,10 +51,10 @@ ## 4. 技术选型建议 - **客户端**:Android 原生 Kotlin(推荐) -- **网络层**:Retrofit + OkHttp +- **网络层**:HttpURLConnection(MVP) - **本地存储**:Room 或轻量 SQLite - **日志**:本地文件 + 后端集中日志 -- **心跳与保活**:Foreground Service + WorkManager +- **保活策略**:Foreground Service(前台轮询) > 若主项目使用 uniapp,建议通过原生插件封装短信能力,不建议纯前端层直接处理短信底层功能。 @@ -99,7 +100,7 @@ - 前台服务常驻(通知栏提示) - 开机自启恢复服务 - 引导用户关闭电池优化限制 -- 关键任务使用 WorkManager 重试 +- 失败任务在下次轮询继续重试(可在后续增加失败队列/指数退避) ## 6. 模块设计 @@ -107,7 +108,7 @@ 1. **sms-receiver**:短信接收与解析 2. **sms-sender**:短信发送与发送回执 -3. **task-sync**:任务拉取、心跳、状态上报 +3. **task-sync**:任务拉取、状态上报 4. **storage**:本地缓存与失败队列 5. **api-client**:后端 API 通信 6. **security**:签名、鉴权、加密 @@ -120,10 +121,8 @@ - `sender` - `content` - `receivedAt` -- `simSlot` - `parsedCode` - `parseStatus` -- `uploadStatus` - `rawPduHash` ### OutboundTask(出站任务) @@ -131,7 +130,6 @@ - `taskId` - `phone` - `content` -- `simSlot` - `status`(pending/sending/success/failed) - `retryCount` - `lastError` @@ -140,18 +138,17 @@ ## 7.1 鉴权建议 -- 每台设备分配 `deviceId + deviceSecret` -- 请求头携带签名(HMAC-SHA256) +- 网关端通过请求头携带 `X-Api-Key: SMS_GATEWAY_API_KEY` 进行鉴权 - 使用 HTTPS,拒绝明文传输 ## 7.2 API 列表 1. `POST /api/v1/sms/inbound` - 作用:上报入站短信 - - 请求体:发送方、短信内容、时间、设备ID、解析结果 + - 请求体:发送方、短信内容、时间、解析结果 - 返回:`ackId` -2. `GET /api/v1/device/tasks?deviceId=xxx` +2. `GET /api/v1/device/tasks?limit=5` - 作用:拉取发送任务 - 返回:任务列表 @@ -159,10 +156,6 @@ - 作用:回传发送结果 - 请求体:`taskId`、状态、失败原因、运营商回执(如有) -4. `POST /api/v1/device/heartbeat` - - 作用:设备在线心跳 - - 上报:电量、网络、SIM状态、App版本 - ## 8. 验证码解析策略 ## 8.1 正则提取建议 diff --git a/docs/端到端开发与部署.md b/docs/端到端开发与部署.md index 3230281..b83ac62 100644 --- a/docs/端到端开发与部署.md +++ b/docs/端到端开发与部署.md @@ -24,7 +24,7 @@ npm i npm start ``` -默认监听:`http://localhost:3000` +默认监听:`http://localhost:7788` ## 2. 构建安卓端 @@ -48,6 +48,6 @@ npm start ## 4. 后续扩展建议 -- 增加设备心跳接口、设备在线监控 - 增加任务重试与失败原因字段 - 增加短信去重与解析规则配置(正则规则下发) + \ No newline at end of file