Files
qipai/docs/devlogs/2026-06-24-M08-A-顾客端.md
T

132 lines
7.0 KiB
Markdown
Raw 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.
# M08-A 顾客端
## 本次工程增量
- 后端新增顾客端公开门店详情和房间列表接口:`GET /app-api/stores/:storeId``GET /app-api/stores/:storeId/rooms`,继续通过 `x-wechat-appid` 与可选 `tenant-id` 解析租户,房间只返回未删除且启用的公开数据。
- 小程序新增登录态封装,所有需登录接口自动携带 `Authorization: Bearer <token>`;首页门店卡片可进入门店详情。
- 门店详情页加载门店资料、公开房间列表和受控 Wi-Fi;Wi-Fi 只在登录后请求 `/app-api/stores/:storeId/wifi`
- 房间详情页接入报价、预占、测试支付创建和测试支付回调完成,形成顾客端下单链路的本地可验证入口。
- 新增 `scripts/check-miniapp-m08-a.mjs`,检查小程序页面注册、固定生产 API 域名、登录和 M08-A 关键接口调用。
## 验收结果
- `node scripts/check-miniapp-m08-a.mjs`PASS。
- `npm run build``backend/`):PASS。
- `node tests/store-discovery.test.mjs`PASS。
- `node tests/pricing.test.mjs`PASS。
- `node tests/payment.test.mjs`PASS。
- `npm test``backend/`):PASS。
## 状态
M08-A 仍为 `PARTIAL`。本次完成顾客端第一段工程闭环,但订单列表、开门、续费、取消、换房、分享、余额、优惠券、套餐、个人中心、生产微信支付调起和真机合法域名验证仍未完成,游标继续停留在 M08-A。
## 提交
- 工程提交:`4ac2c96`
- 远端校验:push 后执行 `HEAD == origin/main`
## 2026-06-24 续接:订单列表与详情
- 后端新增顾客端订单查询服务和路由:`GET /app-api/orders``GET /app-api/orders/:orderId`,按本人 `qipai_order_user_access` 与门店管理范围裁剪数据。
- 小程序新增 `pages/orders/list``pages/orders/detail`,可查看我的订单、订单详情、状态历史、取消测算和取消订单入口;房间预占成功后可直接进入订单详情。
- `scripts/check-miniapp-m08-a.mjs` 扩展检查订单页注册和订单相关真实 API 调用。
验收:
- `node scripts/check-miniapp-m08-a.mjs`PASS。
- `npm test``backend/`):PASS。
状态:
- M08-A 仍为 `PARTIAL`;开门、续费、换房、分享、余额、优惠券、套餐、个人中心、真实微信支付调起和真机合法域名验证待继续。
## 2026-06-24 续接:顾客端开门入口
- 后端新增顾客订单开门权限仓储,`GET/POST` 链路只允许本人未撤销订单、订单状态为 `PAID/RESERVED/IN_PROGRESS` 且处于开始前 30 分钟到结束时间之间的订单开门。
- 新增 `POST /app-api/orders/:orderId/open-door`,按订单上下文构造最小 `device.write` 权限并调用现有门控服务;顾客端强制 `holdopen=0`,不暴露后台设备控制接口。
- 小程序订单详情页新增“开门”按钮,调用订单绑定的 app-api 开门入口。
- `scripts/check-miniapp-m08-a.mjs` 扩展检查 `open-door` 调用。
验收:
- `node scripts/check-miniapp-m08-a.mjs`PASS。
- `node tests/device-control.test.mjs`PASS。
- `npm test``backend/`):PASS。
状态:
- M08-A 仍为 `PARTIAL`;续费、换房、分享、余额、优惠券、套餐、个人中心、真实微信支付调起和真机合法域名/实物开门验证待继续。
## 2026-06-25 续接:顾客端续费、换房与分享
- 后端新增顾客专用订单调整入口:`POST /app-api/orders/:orderId/renew``POST /app-api/orders/:orderId/change-room`
- 顾客续费只允许本人未撤销订单访问,继续复用服务端时段冲突、状态和价格计算;顾客换房额外限制目标房间必须属于原订单门店,避免跨门店改单。
- 小程序订单详情页新增续费分钟、换房目标房间 ID、分享有效期输入;续费/换房调用真实 app-api 并显示差价,分享调用 `POST /app-api/orders/:orderId/shares` 生成临时口令。
- `scripts/check-miniapp-m08-a.mjs` 扩展检查 `/renew``/change-room``/shares` 调用。
验收:
- `npm run build``backend/`):PASS。
- `node scripts/check-miniapp-m08-a.mjs`PASS。
- `node tests/order-management.test.mjs`PASS。
- `npm test``backend/`):PASS。
状态:
- M08-A 仍为 `PARTIAL`;余额、优惠券、套餐、个人中心、生产微信支付调起、真机合法域名和实物开门验证待继续。
提交:
- 工程提交:`874b9b8`
- 远端校验:待本轮 push 后执行 `HEAD == origin/main`
## 2026-06-25 续接:顾客端个人中心
- 后端新增 `MemberProfileService.getMyProfile`,按当前登录顾客读取本人资料、余额、优惠券/套餐汇总、充值消费摘要和最近钱包账单。
- 新增 `GET /app-api/profile`,校验登录态与 `profile.read` 权限,只返回当前用户本人数据;同时补上生产 `server.ts` 中的会员路由注册。
- 新增 `backend/tests/member-profile-route.test.mjs`,覆盖正常读取、未登录拒绝和缺少 `profile.read` 拒绝。
- 小程序新增 `pages/profile/index` 个人中心页,展示总余额、现金/赠送余额、可用券、套餐、套餐分钟、充值消费摘要和最近账单;首页新增个人中心入口。
- `scripts/check-miniapp-m08-a.mjs` 扩展检查个人中心页面注册、`/profile` 调用和余额/权益/账单绑定。
验收:
- `npm run build``backend/`):PASS。
- `node scripts/check-miniapp-m08-a.mjs`PASS。
- `node tests/member-profile-route.test.mjs`PASS。
- `npm test``backend/`):PASS。
状态:
- M08-A 仍为 `PARTIAL`;优惠券/套餐明细页、充值入口、生产微信支付调起、真机合法域名和实物开门验证待继续。
提交:
- 工程提交:`7446852`
- 远端校验:待本轮 push 后执行 `HEAD == origin/main`
## 2026-06-25 续接:顾客端充值入口
- `RechargeService` 新增可用充值计划查询,按租户、有效期、启用状态和可选门店过滤。
- 后端新增 `GET /app-api/recharge/plans``POST /app-api/recharge/orders`,顾客登录后可查看充值计划并创建幂等充值单。
- 生产 `server.ts` 接入 `RechargeService``WalletLedgerService`,充值路由随真实后端启动注册。
- 新增 `backend/tests/recharge-route.test.mjs`,覆盖充值计划查询、顾客充值单创建和非法请求拒绝。
- 小程序新增 `pages/recharge/index`,个人中心新增充值入口,可展示实付/赠送/到账金额并创建待支付充值单。
- `scripts/check-miniapp-m08-a.mjs` 扩展检查充值页面注册、`/recharge/plans``/recharge/orders` 调用。
验收:
- `npm run build``backend/`):PASS。
- `node scripts/check-miniapp-m08-a.mjs`PASS。
- `node tests/recharge-route.test.mjs`PASS。
- `npm test``backend/`):PASS。
状态:
- M08-A 仍为 `PARTIAL`;优惠券/套餐明细页、充值微信支付调起、订单生产微信支付调起、真机合法域名和实物开门验证待继续。
提交:
- 工程提交:`dbdfe3d`
- 远端校验:待本轮 push 后执行 `HEAD == origin/main`