Files
Rogee ea6811b295
Build and push backend image / backend-image (push) Successful in 45s
fix: use verified WeChat login and recover sessions after cache clearing
2026-09-26 18:47:38 +08:00

48 lines
2.5 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.
# 骨安通小程序
当前小程序只保留骨科价格查询页:选择地区和项目,授权手机号后提交咨询;后台可查看和处理价格咨询。
## 技术栈
- 前端: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