Files
beads-group/docs/verification.md
T

80 lines
6.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.
# 首期验收记录
日期:2026-10-03。此记录区分本机已验证内容与真实部署待验内容,不代表已发布微信小程序。
## 最终源码验证
| 检查 | 结果 |
| --- | --- |
| applet `npm test` | 12/12,通过;网络选择、过期探测、量化/透明像素/裁剪、画布偏移、幂等回退、提交后刷新失败 |
| applet `npm run typecheck` | 通过 |
| applet `npm run build:h5` | 通过,uni Compiler 5.26 |
| applet `npm run build:mp-weixin` | 通过,输出 dist/build/mp-weixin;未真机运行 |
| webui `npm test` | 3/3,通过;业务错误、鉴权和任务状态机 |
| webui `npm run build` | 类型检查与 Vite 生产构建通过 |
| server `go test -count=1 ./...` | 通过,设置 TEST_DATABASE_URL,真实执行数据库回归,未跳过数据库项 |
| server `go vet ./...` / `go build ./cmd/server` | 通过 |
| `scripts/integration-smoke.mjs` | 23 项 API 断言通过,4 个并发同键呼叫只创建一个任务 |
| frp 示例 TOML | Python tomllib 语法解析通过;未建立实际公网隧道 |
| Docker Compose / Nginx | 已提供配置,当前环境没有 Docker,未做容器与 HTTPS 启动验证 |
| 依赖审计 | webui 0;applet 24(9 high / 15 moderate),详见 dependency-report.md |
最终检查包含画布颜色从八位 hex 改为 uni legacy canvas 可识别 rgba 后的构建。开发服务重启以消除旧模块缓存,浏览器确认完成标记不再显示黑色块。
## 真实联调环境
临时 PostgreSQL 18(127.0.0.1:55432 / perler_test)、Redis(127.0.0.1:56379)与 Gin(127.0.0.1:8080);业务经过真实 PostgreSQL/Redis,没有前端 mock 或内存仓储替代。联调资源在 `/tmp`,不作为持久部署方案。测试密码仅用于这些本机隔离服务。
数据库测试要求 TEST_DATABASE_URL 指向名称包含 test 的独立数据库。单连接池回归验证收藏查询、图纸打印呼叫和重复提交不会嵌套借连接死锁;幂等测试验证持久唯一键。API 脚本需要显式测试地址及管理员密码:
```sh
PERLER_TEST_API_URL=http://127.0.0.1:8080 \
PERLER_TEST_ADMIN_PASSWORD='<隔离测试环境密码>' \
node scripts/integration-smoke.mjs
```
脚本仅针对 development 环境;它创建私有临时图纸、收藏、到店记录和服务任务,完成后移除收藏并删除测试图纸,保留到店会话与已完成任务作为验证记录。不要对真实门店数据执行该脚本。
## 浏览器验收
实际完成 H5 演示登录 → 文字「豆」生成 29×29 图纸(143 颗)→ 保存 → 收藏 → 详情跟做标记。滚动/偏移画布点击正确定位行 6 列 7。
顾客输入 T01 到店 → 呼叫员工并附备注「联调验证:请协助检查图纸」→ 后台真实管理员登录 → 接单 → 完成 → 顾客记录显示服务已完成。后台状态筛选可显示完成任务。浏览器还检查了桌面页面与 390×844 iframe 中的顾客首页、后台任务布局;iframe 检查是窄屏布局验证,不冒充手机微信真机测试。
截图:
- [顾客首页](screenshots/applet-gallery.jpg)
- [图纸跟做](screenshots/applet-progress.jpg)
- [后台完成记录](screenshots/admin-completed.jpg)
- [后台窄屏](screenshots/admin-mobile.jpg)
- [顾客窄屏](screenshots/applet-mobile.jpg)
未执行完整 Lighthouse / Core Web Vitals 实测、读屏器验收或所有设备组合。无障碍已做表单标签、导航/错误/空状态与原生控件基础处理;不能视为 WCAG 完整认证。
## 独立代码审查
独立只读审查后修复:事务中嵌套借数据库连接、请求 context 取消传播、打印页边界和标尺裁切、画布点击坐标偏移、呼叫成功后的刷新失败误报。修复后复核通过,无剩余重大问题。新增静态托管路径与符号链接隔离、业务异常统一响应的检查;未做独立渗透测试。
## 门店部署前验收
尚缺真实微信 AppID/密钥、域名和证书、门店网络与打印设备,以下无法在本次本机环境代验:
- Android/iOS 微信体验版真实登录,合法域名校验开启;图片选取、文字渲染、跟做点击与扫码。
- 蜂窝直走公网且零内网探测;其他 Wi-Fi 内网失败回退;门店 Wi-Fi 内网 HTTPS 成功;禁用局域网权限、DNS 不可达、证书错误、网络切换等场景。
- 内网域名证书可信且匹配域名,路由器 DNS/隔离策略允许访问;公网隧道与门店服务的连通、断线恢复。
- frp/Nginx/Compose 模板实际部署,生产密钥与管理员密码替换,APP_ENV=production,演示数据替换、备份恢复演练。
- 5 mm 与实际珠板尺寸匹配、50 mm 标尺实测、大图分页与真实打印设备输出。
- 多桌并发与员工轮询容量;反向代理下登录限流按代理源地址聚合,需按实际规模评估可信代理与限流策略。
当前首期为单店运行;数据归属与 API 预留门店边界,未来多店账号、选店、总部权限与多节点部署需另行实现。
## 后续增量:WebSocket + TTS(2026-10-03)
后台原 10 秒页面轮询已升级为工作台级 WebSocket 实时通知,60 秒兜底补查;增加本机中文语音提醒。后台测试现为 14 项,构建通过;服务端真实 PostgreSQL/Redis 测试及 race/vet/build 通过。完成顾客呼叫、实时列表与跨页面 TTS 的浏览器联调。详细范围、协议、证据与限制见 [语音提醒说明](voice-notifications.md)。
## 当前检查环境(2026-10-03)
按用户要求复用 events-server 的 PostgreSQL 实例 192.168.31.98:5433 与 postgres 用户,创建独立 perler_beads 数据库。后端已连接新库,验证 current_database/current_user 正确,4 张业务表与1个演示门店已初始化。events 库未修改,旧临时库测试数据未迁移。凭据保存在 Git 忽略的 perler-beads-server/.env.local,权限600。Redis 仍使用本机56379。
三端地址5173、5174、8080均返回HTTP200,管理员登录业务码200,通过5174代理的WS鉴权收到ready。三端以后台进程运行,日志位于 /tmp/perler-preview/。