# Phase 0 门店开通与员工邀请验收记录 > 日期:2026-08-02 > 状态:Code Complete / Ready for Release,待生产迁移与微信真机验收 > 生产数据库与服务器:本批未触碰 ## 1. 自动验证 | 检查 | 结果 | |------|------| | Backend tests | PASS(193 tests,0 failure/error/skip) | | Backend package | PASS | | Admin production build | PASS | | H5 build | PASS | | mp-weixin build + app-json verification | PASS | | Ontology validation/drift | PASS(258 条;65/65 HTTP、15/15 JPA、0 drift) | | Release shell syntax | PASS(`backend/deploy/*.sh`) | ## 2. 自动化覆盖 - token 原文与数据库 hash 分离、手机号脱敏; - 邀请手机号不匹配不创建账号; - 接受成功创建 staff、消费邀请、写低敏 AuditLog; - 开通必填项缺失不能完成,单人门店可完成; - 已完成开通的门店不能再清空名称、电话或地址; - 老板微信核验注册不产生可登录密码,并同时写入 `store_registered` BusinessEvent 与 AuditLog; - Audit metadata 拒绝 token/手机号; - 门店/角色/删除状态变化会立即让旧 session 失效; - Nginx Petstore 专用 access log 只记录 `$uri`,不记录携带报告/邀请 token 的 query; - 第六个迁移包含 token hash、状态机与六项回执不变量。 ## 3. 三角色真机验收(发布前必做) ### Boss - [ ] 新微信手机号创建门店,无手填手机号/明文密码;自动登录后进入开通清单。 - [ ] 缺地址时不能完成;补齐资料、确认容量和服务后可完成;单人门店无需先邀请员工。 - [ ] 创建 3/7/14/30 天邀请,创建后只显示一次原始口令;可分享小程序卡片。 - [ ] 邀请列表只有脱敏手机号;pending 可撤销,accepted 不能撤销。 ### Staff - [ ] 从卡片进入看到正确门店、姓名、脱敏手机号与有效期。 - [ ] 不匹配微信手机号被拒绝且不创建账号;匹配手机号成功加入并直接获得 staff session。 - [ ] 邀请重复打开幂等登录同一 staff;过期/撤销邀请有明确提示。 - [ ] 被老板删除后,已有页面下一次受保护请求立即 401 并要求重新登录。 ### Customer / 权限反例 - [ ] customer 不能查看/创建/撤销门店邀请,也不能完成开通。 - [ ] 已有 customer 手机号接受员工邀请明确返回账号冲突,不静默改变角色。 - [ ] legacy 永久邀请码查询/注册、直接创建员工、旧老板/门店注册入口均返回明确停用码且无写入。 ## 4. 发布门禁 - [ ] 按固定顺序执行第六个迁移 `20260802_create_store_onboarding.sql`,六项验证均为 0。 - [ ] 以最终生产配置运行 JPA `validate` + 24 项只读不变量预检。 - [ ] 微信体验版双微信账号完成 Boss → 分享 → Staff 接受全链路;证据不包含完整手机号或 token。 - [ ] 旧版本回滚已确认忽略新增表/列;不执行 down migration。