# M08-A 顾客端 ## 本次工程增量 - 后端新增顾客端公开门店详情和房间列表接口:`GET /app-api/stores/:storeId`、`GET /app-api/stores/:storeId/rooms`,继续通过 `x-wechat-appid` 与可选 `tenant-id` 解析租户,房间只返回未删除且启用的公开数据。 - 小程序新增登录态封装,所有需登录接口自动携带 `Authorization: Bearer `;首页门店卡片可进入门店详情。 - 门店详情页加载门店资料、公开房间列表和受控 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`。