83 lines
3.1 KiB
Markdown
83 lines
3.1 KiB
Markdown
# Smile First 口腔护理预约小程序
|
||
|
||
Smile First 是一个微信小程序预约 MVP,覆盖首页、选择项目、选择日期与时间、确认预约、预约成功、我的预约,以及 Go 后端 API。
|
||
|
||
## 技术栈
|
||
|
||
- 小程序:原生 WXML / WXSS / JS
|
||
- 后端:Go、Fiber、sqlc、Cobra、logrus
|
||
- 数据库:SQLite
|
||
- 部署:Docker / docker compose
|
||
|
||
## 本地运行后端
|
||
|
||
```bash
|
||
cp .env.example .env
|
||
# 本地开发可使用 GUAHAO_ADMIN_AUTH_MODE=none 直接进入后台
|
||
# 生产环境建议使用 GUAHAO_ADMIN_AUTH_MODE=oidc 并填写 OIDC 配置
|
||
# 体验版获取手机号还需要填写 GUAHAO_WECHAT_APPID / GUAHAO_WECHAT_SECRET
|
||
|
||
cd backend
|
||
go run ./cmd/smilefirst serve
|
||
```
|
||
|
||
默认监听 `:9800`,启动时会自动应用 schema 并插入默认项目、排期与时段。
|
||
|
||
管理后台入口:
|
||
|
||
- 登录页:`http://127.0.0.1:9800/admin/login`
|
||
- 默认页:`/admin/price-inquiries`
|
||
- 价格咨询派单:`/admin/price-inquiries`,展示授权手机号提交的地区、咨询项目、创建时间和更新时间
|
||
|
||
后台登录模式、OIDC 配置和微信小程序凭证从本地 `.env` 或运行环境变量读取,真实 `.env` 不提交到代码库:
|
||
|
||
```env
|
||
GUAHAO_ADMIN_AUTH_MODE=none
|
||
GUAHAO_ADMIN_SESSION_SECRET=
|
||
GUAHAO_ADMIN_PASSWORD_CHANGE_REDIRECT_URL=https://gh.yqbmb.com/admin/price-inquiries
|
||
GUAHAO_OIDC_ISSUER=https://auth.yqbmb.com/oidc
|
||
GUAHAO_OIDC_CLIENT_ID=
|
||
GUAHAO_OIDC_CLIENT_SECRET=
|
||
GUAHAO_OIDC_REDIRECT_URI=http://127.0.0.1:9800/admin/oidc/callback
|
||
GUAHAO_OIDC_SCOPES=openid profile email phone
|
||
GUAHAO_WECHAT_APPID=
|
||
GUAHAO_WECHAT_SECRET=
|
||
GUAHAO_UPLOAD_DIR=data/uploads
|
||
```
|
||
|
||
`GUAHAO_ADMIN_AUTH_MODE=none` 会跳过后台登录,仅建议本地开发使用;`oidc` 会通过 Logto/OIDC 授权登录,回调地址为 `/admin/oidc/callback`,登录后后台右上角展示授权用户姓名和修改密码入口。修改密码入口会跳转到 Logto Account Center 的 `/account/password`,完成后返回 `GUAHAO_ADMIN_PASSWORD_CHANGE_REDIRECT_URL`。
|
||
|
||
后台上传的首页图片和项目图片会保存到 `GUAHAO_UPLOAD_DIR`,并通过 `/uploads/...` 访问。
|
||
|
||
## Docker 部署
|
||
|
||
```bash
|
||
docker compose up --build
|
||
```
|
||
|
||
接口健康检查:
|
||
|
||
```bash
|
||
curl http://127.0.0.1:9800/healthz
|
||
```
|
||
|
||
## 小程序开发
|
||
|
||
用微信开发者工具打开 `uni-guahao/` 目录。小程序请求地址由 `uni-guahao/utils/api.uts` 自动选择,不需要发布前手动改 URL:
|
||
|
||
- 微信开发版 `develop`:`http://localhost:9800`
|
||
- 微信体验版 `trial` / 正式版 `release`:`https://gh.yqbmb.com`
|
||
|
||
线上域名需要在微信公众平台配置为 request 合法域名;本地开发时 `manifest.json` 已关闭开发域名校验。
|
||
|
||
首页不配置底部 `tabBar`。用户可直接选择项目和预约时段;在确认预约时授权手机号,授权成功后自动提交预约。确认页可通过半屏底部弹层查看《预约服务条款》。
|
||
|
||
## 关键目录
|
||
|
||
- `uni-guahao/`:uni-app x 微信小程序前端
|
||
- `backend/`:Go API 服务
|
||
- `backend/migrations/schema.sql`:SQLite schema
|
||
- `backend/queries/`:sqlc 查询
|
||
- `uni-guahao/static/`:小程序静态资源
|
||
- `docs/design-elements.md`:设计元素、裁切坐标和 token
|