48 lines
2.5 KiB
Markdown
48 lines
2.5 KiB
Markdown
# 骨安通小程序
|
||
|
||
当前小程序只保留骨科价格查询页:选择地区和项目,授权手机号后提交咨询;后台可查看和处理价格咨询。
|
||
|
||
## 技术栈
|
||
|
||
- 前端:UniApp X(UVue / UTS)
|
||
- 后端:Go、Fiber、sqlc、Cobra、logrus
|
||
- 数据库:SQLite
|
||
- 部署:Docker Compose
|
||
|
||
## 本地运行后端
|
||
|
||
```bash
|
||
cp .env.example .env
|
||
cd backend
|
||
go run ./cmd/smilefirst serve
|
||
```
|
||
|
||
默认监听 `:9800`。启动时会应用 SQLite schema 和价格咨询相关迁移。
|
||
|
||
管理后台:`http://127.0.0.1:9800/admin/login`,价格咨询列表:`/admin/price-inquiries`。
|
||
|
||
后台使用本地账号密码登录,在 `.env` 配置 `GUAHAO_ADMIN_USERNAME`、强密码 `GUAHAO_ADMIN_PASSWORD` 和 `GUAHAO_ADMIN_SESSION_SECRET`(可用 `openssl rand -hex 32` 生成至少 32 字符的 session secret);登录失败按后端识别的连接来源 IP 限制 5 次/15 分钟;经反向代理访问时,建议同时在代理层限流,避免多个用户共享代理 IP 的应用限额。生产环境应只经可信反向代理访问后端,并由代理覆盖 `X-Forwarded-Proto`。体验版手机号授权需要配置 `GUAHAO_WECHAT_APPID` 和 `GUAHAO_WECHAT_SECRET`。真实 `.env` 不提交到代码库。
|
||
|
||
## 小程序
|
||
|
||
使用 HBuilderX 打开 `uniapp/`。当前注册页面为 `pages/price-query/price-query`。API 地址配置在 `uniapp/utils/api.uts`:本地开发、体验版和正式版统一请求生产后端 `https://app01.min.wooo.host`,用于定位生产服务问题。本地调试提交咨询等操作会写入生产数据。修改后需在 HBuilderX 重新运行小程序。
|
||
|
||
微信小程序 AppID 为 `wx0a0e45ada30f01d4`(配置于 `uniapp/manifest.json`)。手机号授权使用生产后端配置的 `GUAHAO_WECHAT_APPID` 和 `GUAHAO_WECHAT_SECRET`,AppSecret 不得写入前端或提交到代码库。
|
||
|
||
请求模块单元测试(Node.js 22.15+,模拟 uni API,不发送真实请求):
|
||
|
||
```bash
|
||
node --test --experimental-test-coverage --test-coverage-include='**/utils/api.uts' --test-coverage-lines=65 --test-coverage-functions=65 --test-coverage-branches=65 uniapp/tests/api.test.mjs
|
||
```
|
||
|
||
## 数据兼容
|
||
|
||
新 schema 只创建用户、迁移标记和价格咨询表。旧预约相关表及数据不会被自动删除,但新版本不再提供预约、排期、分类或项目管理 API。
|
||
|
||
## 目录
|
||
|
||
- `uniapp/`:小程序前端
|
||
- `backend/`:Go API、SQL 查询和 SQLite schema
|
||
- `backend/queries/`:sqlc 查询
|
||
- `backend/migrations/schema.sql`:SQLite schema
|