预约手帐 · 后端服务

服务正在运行 · 数据文件 /www/wwwroot/yuyue-api/data/db.json
HTTP 服务运行中 :3100
微信参数未配置 · 走模拟登录
模拟登录已关闭
拍照识别(OCR)未配置 · 识别不可用
用户1
店铺0
成员关系0
预约0
标签库0
常用标签0

小程序要填的地址

http://10.2.8.4:3100http://172.19.0.1:3100
手机和电脑连同一个 WiFi 时,把其中一个填进 PlannerApp/utils/config.js 的 apiBase。

还差一步:配置微信登录

还没填 AppID / AppSecret,现在登录走的是模拟身份。
启动前设置环境变量(Windows PowerShell):
$env:WX_APPID="wx你的AppID"$env:WX_APPSECRET="你的Secret"node server.js

可选:拍照识别手机号

还没填腾讯云密钥,小程序里点「拍照识别」会提示先配置,手动输入号码不受影响。
在腾讯云开通「通用印刷体识别(高精度版)」后,启动前设置环境变量(Windows PowerShell):
$env:TENCENT_SECRET_ID="你的SecretId"$env:TENCENT_SECRET_KEY="你的SecretKey"node server.js

接口一览

GET /api/health健康检查(就是你现在看到的这个状态)
POST /api/auth/wechat微信登录,code 换 openid,返回 token
GET /api/me当前登录者
GET /api/users所有用户,店主挑人加成员时用
GET · POST /api/shops我的店铺列表 · 新建店铺(创建者自动成为店主)
PATCH · DELETE /api/shops/:id改店名 · 删店(仅店主)
GET · PUT /api/shops/:id/hours营业时间:读取 · 保存(每家店单独设,默认 11-14 / 17-20)
GET · POST /api/shops/:id/members成员列表 · 加成员(仅店主)
PATCH · DELETE /api/shops/:id/members/:userId改角色 · 移出成员(仅店主)
GET /api/reservations?shopId=&bizDate=某店铺某天的预约
POST · PATCH · DELETE /api/reservations[/:id]新建 · 修改 · 删除预约
POST /api/reservations/restore撤销删除(原样写回)
POST /api/reservations/:id/lock加锁 · 解锁
GET /api/reservations/visit-map?shopId=按手机号统计「来过几次」
GET /api/reservations/history?shopId=&phone=同一号码的历史记录
GET · PUT /api/shops/:id/guest客人档案:按尾4位+简称取标签 · 存标签(下次自动带出)
POST /api/shops/:id/guest/propagate同一个客人的标签联动(一处加/删,他的记录全改)
POST /api/ocr/phone拍照识别手机号(图片 base64 → 候选号码)
GET · POST /api/shops/:id/tags标签库列表 · 新建标签
PATCH · DELETE /api/tags/:tagId标签改名 · 删除
POST /api/shops/:id/tags/reorder标签排序
POST /api/shops/:id/tags/touch累计标签使用次数
GET · POST · PUT /api/shops/:id/quick-tags常用标签:列表 · 新增 · 整组保存
DELETE /api/quick-tags/:tagId删除常用标签

权限模型

超管第一个注册的人自动成为,对所有店铺拥有店主权限
owner 店主改店名、删店、管成员、读写预约
editor 可编辑读写预约和标签
viewer 只读只能看,写入会被拒绝
服务端逐个接口校验,前端绕过无效;每店至少保留一个店主;锁定的单子不能改也不能删。
只处理 /api/ 开头的请求;其他路径一律返回本页。