refactor: migrate to Tencent Cloud backend
这个提交包含在:
+121
@@ -0,0 +1,121 @@
|
||||
# Hox 腾讯云函数后端
|
||||
|
||||
本目录是 Hox 项目的腾讯云后端骨架,目标架构为:腾讯云函数 SCF Node.js + 腾讯云数据库 MySQL + 腾讯云 COS。
|
||||
|
||||
## 配置
|
||||
|
||||
本地配置文件为 `.env`,不会提交到 Git。提交用模板为 `.env.example`。
|
||||
|
||||
当前已按项目默认值预置:
|
||||
|
||||
| 配置 | 值 |
|
||||
| --- | --- |
|
||||
| COS Bucket | `jw-bucket-1426323813` |
|
||||
| 地域 | `ap-guangzhou` |
|
||||
| 数据库 | `jw_beauty` |
|
||||
| 数据库用户 | `root` |
|
||||
| 临时后台账号 | `admin` |
|
||||
| 临时后台密码 | `admin` |
|
||||
|
||||
你需要补充 `.env` 中的真实值:
|
||||
|
||||
- `TENCENT_SECRET_ID`
|
||||
- `TENCENT_SECRET_KEY`
|
||||
- `DB_HOST`
|
||||
- `DB_PASSWORD`
|
||||
- `WECHAT_APPID`
|
||||
- `WECHAT_SECRET`
|
||||
- `JWT_SECRET`
|
||||
- `ADMIN_JWT_SECRET`
|
||||
|
||||
## 本地运行
|
||||
|
||||
```bash
|
||||
cd server
|
||||
npm install
|
||||
npm run db:init
|
||||
npm start
|
||||
```
|
||||
|
||||
健康检查:
|
||||
|
||||
```bash
|
||||
curl http://localhost:3000/health
|
||||
```
|
||||
|
||||
## SCF 入口
|
||||
|
||||
腾讯云函数入口:
|
||||
|
||||
```text
|
||||
index.main_handler
|
||||
```
|
||||
|
||||
HTTP 触发器或函数 URL 需要透传:
|
||||
|
||||
- HTTP method
|
||||
- path
|
||||
- headers
|
||||
- queryStringParameters
|
||||
- body
|
||||
|
||||
## 已实现接口
|
||||
|
||||
小程序接口:
|
||||
|
||||
- `POST /api/v1/auth/login`
|
||||
- `POST /api/v1/auth/refresh`
|
||||
- `GET /api/v1/user/profile`
|
||||
- `PUT /api/v1/user/profile`
|
||||
- `POST /api/v1/user/avatar/upload-url`
|
||||
- `POST /api/v1/user/phone`
|
||||
- `POST /api/v1/device/bind`
|
||||
- `POST /api/v1/device/unbind`
|
||||
- `GET /api/v1/device/list`
|
||||
- `GET /api/v1/device/:device_id`
|
||||
- `GET /api/v1/device/command/pending`
|
||||
- `POST /api/v1/device/event`
|
||||
- `GET /api/v1/subscription`
|
||||
- `POST /api/v1/subscription/purchase`
|
||||
- `POST /api/v1/subscription/verify`
|
||||
- `GET /api/v1/treatment/history`
|
||||
- `POST /api/v1/treatment/sync`
|
||||
- `GET /api/v1/firmware/latest`
|
||||
|
||||
管理后台接口:
|
||||
|
||||
- `POST /api/v1/admin/login`
|
||||
- `GET /api/v1/admin/dashboard`
|
||||
- `GET /api/v1/admin/devices`
|
||||
- `GET /api/v1/admin/devices/:device_id`
|
||||
- `POST /api/v1/admin/devices/:device_id/command`
|
||||
- `POST /api/v1/admin/devices/:device_id/unbind`
|
||||
- `GET /api/v1/admin/users`
|
||||
- `GET /api/v1/admin/users/:user_id`
|
||||
- `GET /api/v1/admin/subscriptions`
|
||||
- `POST /api/v1/admin/subscriptions`
|
||||
- `GET /api/v1/admin/records`
|
||||
- `GET /api/v1/admin/logs`
|
||||
- `GET /api/v1/admin/settings`
|
||||
- `POST /api/v1/admin/settings`
|
||||
- `GET /api/v1/admin/devices/:device_id/commands`
|
||||
- `GET /api/v1/admin/firmware`
|
||||
- `POST /api/v1/admin/firmware`
|
||||
- `POST /api/v1/admin/firmware/:firmware_id/status`
|
||||
|
||||
## 数据库
|
||||
|
||||
表结构在:
|
||||
|
||||
```text
|
||||
sql/schema.sql
|
||||
```
|
||||
|
||||
初始化脚本会创建表并插入临时管理员账号。
|
||||
|
||||
## 重要说明
|
||||
|
||||
- 当前微信支付只保留接口骨架,未接入真实微信支付回调。
|
||||
- `/api/v1/device/command/pending` 已接入 `device_commands`,小程序拉取后执行 BLE 指令并回传结果。
|
||||
- `/api/v1/firmware/latest` 会读取 `firmware_files` 并生成 COS 签名 URL,后台可通过固件接口登记 COS 对象 key。
|
||||
- 生产环境必须替换 `admin/admin` 和所有默认 secret。
|
||||
在新工单中引用
屏蔽一个用户