📄 商户开通平顺化-测试报告与优化方案

2026年07月28日 01:18  |  Claude Code  |  rtrip-ai

# 测试报告 · 商户开通流程平顺化优化(2026-07-28 凌晨)


> 执行人:Claude(通宵自动执行,两点确认制的交付验收侧)

> 范围:《方案-商户开通流程平顺化优化》P0 全部 + P1 文案类,已部署生产。

> 结论:**验收表 10/10 全绿;存量商户回归无影响;有 1 项待办(新 exe 分发)。**


一、验收表(逐项执行,全部通过)


| # | 验收项 | 验证方式 | 预期 | 实际结果 | 判定 |

|---|---|---|---|---|---|

| 1 | 注册即可用:新商户注册后**不做任何人工修复**直接登录工作台 | 生产注册页真实注册新号 19907270003 → 直接调工作台登录 | 登录成功返回 token | `code:0`,user_id=658/mall_id=15,花名册接口正常返回空列表 | ✅ |

| 2 | 新注册账号库里带操作员身份 | 查生产库 `zjhj_bd_user_identity` | is_operator=1 | user_id=658 → `is_operator=1` | ✅ |

| 3 | 密码正确但无工作台权限 → 新文案 | 临时将演示号 657 置 is_operator=0 后正确密码登录(验后已恢复) | 不再报"账号或密码错误" | 返回"该账号还没有开通工作台使用权限,请联系行橙客服开通(账号密码没有错)" | ✅ |

| 4 | 密码错误 → 仍报原文案(不泄露账号存在性差异过多) | 错误密码登录 | "账号或密码错误" | 一致 | ✅ |

| 5 | 客服号新建页:新文案渲染 | 以 19907270003 登录商户后台打开新建页,检查 DOM | 「工作台使用人」「一般选你自己」「不设置工作台里看不到这个员工」「留空即可」「保持默认即可」均出现 | 全部出现(截图 verify3-edit-page.png) | ✅ |

| 6 | 客服号新建页:归属默认=当前操作员 | 检查页面注入的默认值 | `owner_user_id: 658` | 命中 | ✅ |

| 7 | 上线开关新文案(已保存客服号上) | 打开 mall14 客服号 132 编辑页 | 「消息通道」「旧版客服(默认)」「正式上线开关」「持证上岗后」「切早了客户消息会没人接待」均出现 | 全部出现(截图 verify3-hub.png) | ✅ |

| 8 | 工作台登录页/顶栏改版 | 本地起 exe 同款服务,真实登录 19907270003 走查 | 占位符"手机号 / 账号"/"密码";顶栏显示真实商户名、无 mall_id、无假连接数 | header 实测:`商户 · 商户19907270003`,占位符中文(截图 verify-login-cn.png / verify-header.png) | ✅ |

| 9 | 官网品牌字样 | `curl https://ai.rtrip.cc/` 取 title | 行橙 AI | `行橙 AI · 旅行社的 AI 员工`,全页"旅橙"计数=0 | ✅ |</p> <p>| 10 | 存量回归:老操作员不受影响 | lili/Rtrip@2026 调工作台登录 | 登录成功 | `code:0`,user_id=649/mall_id=6 | ✅ |</p> <br> <p>补充回归:三个 SaaS 改动文件上传前后均通过服务器端 `php -l`;上传前逐一比对服务器活文件与本地基线,确认差异仅含本次改动(`edit.php` 服务器上先行的"归属坐席"功能已完整保留)。</p> <br> <h2>二、部署清单</h2> <br> <p>| 系统 | 内容 | 方式 | 备份/回滚点 |</p> <p>|---|---|---|---|</p> <p>| SaaS 生产(www.rtrip.cc) | `MchRegisterForm.php` / `OperatorController.php` / `views/mall/service-account/edit.php` | SFTP 单文件覆盖 | 各文件同目录 `*.bak.polish-20260728` |</p> <p>| 大脑服务器(ai.rtrip.cc) | 落地页 `index.html` 品牌字样 | 服务器 sed | `index.html.bak.brand-20260728` |</p> <p>| 工作台 | `AI工作台2607280155.exe`(13.2MB,含登录页/顶栏改版) | 打包完成,**未分发** | 旧版 `AI工作台2607268773.exe` |</p> <p>| Git | rtrip-console `62fdf37` 已 push;SaaS 仓不提交(服务器分叉+文件含他会话未提交功能,按惯例走 SFTP) | — | — |</p> <br> <h2>三、遗留与待办</h2> <br> <p>1. **新 exe 分发**:`AI工作台2607280155.exe` 需分发到坐席机器(丽丽机 DESIGN 等)才对现有操作员生效;网页/手机版不受 exe 影响。待用户确认后用 xc-remote 分发。</p> <p>2. P1-6(注册成功自动跳登录)、P1-7(考试不及格引导条)未实施,见方案文档。</p> <p>3. P2 结构性建议(上线切换收进工作台、新商户引导向导等)待你拍板排期。</p> <p>4. 测试数据累计三个演示商户:mall13(19907270001)、mall14(19907270002)、mall15(19907270003,本轮验收注册,未建客服号)。均可清理或留作演示。</p> <br> <h2>四、风险说明</h2> <br> <li>所有 SaaS 改动为**文案/新注册路径/登录失败分支**,不触碰消息链路、AI 回复、机器人队列;种子社 mall6/mall12 逻辑零变更(lili 回归已验证)。</li> <li>`edit.php` 默认归属注入只在**新建**表单生效(编辑已存记录时被接口数据覆盖),不会改动存量客服号归属。</li> <li>登录接口新增的"无权限"分支只在"密码验证通过但非操作员"时触发,不改变原有成功/失败路径行为。</li> <p># 方案 · 商户开通流程平顺化优化(面向旅行社基础操作人员)</p> <br> <p>> 2026-07-28 凌晨。依据:7-27 两轮真实生产模拟(mall13 / mall14)逐步操作的一手体验。</p> <p>> 目标使用者:旅行社的**非技术**操作人员——注册、建客服号、带教上岗全程要能自己看懂。</p> <p>> 状态:**P0 全部已实施并部署生产、验收通过**(见《报告-商户开通平顺化-测试报告》);P1/P2 为建议清单待排期。</p> <br> <p>---</p> <br> <h2>一、问题盘点(按"卡住一个小白用户的概率×后果"分级)</h2> <br> <h3>P0 · 会直接把人卡死的(✅ 本轮已全部修复上线)</h3> <br> <p>| # | 问题 | 场景还原 | 修复方式 |</p> <p>|---|---|---|---|</p> <p>| P0-1 | **注册后登不了工作台,且报错误导**:新注册商户账号默认无操作员身份,工作台登录报"账号或密码错误"——用户会反复改密码、怀疑自己,实际与密码无关 | 两轮模拟均踩中,是既往每个新商户必踩的第一坑 | ①结构修复:自助注册自动带操作员身份(`MchRegisterForm` 覆写 `setUser`,仅自助注册路径生效)②文案兜底:密码正确但无权限时,登录接口改报"该账号还没有开通工作台使用权限,请联系行橙客服开通(账号密码没有错)"(`OperatorController::actionLogin`) |</p> <p>| P0-2 | **客服号不设"归属坐席"→工作台里看不到员工**,字段名"归属坐席"小白看不懂、也不知道后果 | 模拟中若跳过此下拉,带教台团队总览为空,用户不知道为什么 | ①标签改「工作台使用人」+ 说明文案"一般选自己;不设置的话,工作台里看不到这个员工"②**新建时默认选中当前操作员**(视图注入当前登录人,无需手选) |</p> <p>| P0-3 | **上线开关(会话枢纽)无风险提示**:标签"会话枢纽"、选项"SaaS 旧客服/AI 大脑工作台"全是技术词;切早了客户消息静默没人接 | hub 切换检查清单一直只存在于内部记忆 | 标签改「消息通道」,选项改"旧版客服(默认)/AI 大脑工作台(正式上线)",加橙色警示:"⚠️ 正式上线开关,由行橙实施人员操作:必须等 AI 员工持证上岗后再切,切早了客户消息会没人接待;只影响新消息" |</p> <br> <h3>P1 · 会造成困惑但不至于卡死的(✅ 文案类已顺手修复;结构类待排期)</h3> <br> <p>| # | 问题 | 处理 |</p> <p>|---|---|---|</p> <p>| P1-1 | 工作台登录页占位符是英文 `username/password` | ✅ 已改"手机号 / 账号"、"密码"(exe `AI工作台2607280155`) |</p> <p>| P1-2 | 工作台顶栏写死"旅橙兔旅行"占位商户名 + 暴露 `mall_id=xx` 技术词 + 假的"微信 3/携程 2"连接数 | ✅ 已改为显示真实商户昵称、删除 mall_id 与假连接数 |</p> <p>| P1-3 | 官网落地页(ai.rtrip.cc)品牌写"旅橙 AI",违反品牌规范 | ✅ 已改"行橙 AI"(服务器 index.html,留备份) |</p> <p>| P1-4 | 客服号编辑页"平台账号/AppID""平台密钥/Token"让微信商户不知道要不要填 | ✅ placeholder 已注明"选填:微信客服号留空即可" |</p> <p>| P1-5 | "同步模式/间隔/每批消息数"纯技术参数吓人 | ✅ 已加"技术参数,保持默认即可,如需调整请联系行橙实施" |</p> <p>| P1-6 | 注册成功后停在注册页,要用户自己去找登录入口 | ⏳ 建议:注册成功 2 秒后自动跳转登录页并预填手机号(涉及注册页 JS,风险低,下轮做) |</p> <p>| P1-7 | 考试不及格后,考核页对"接下来该干嘛"的引导偏弱(本次靠解说词补位) | ⏳ 建议:不及格状态页直接给"逐题指正→复考"操作引导条 |</p> <br> <h3>P2 · 结构性优化建议(需要单独立项,不在本轮范围)</h3> <br> <p>| # | 建议 | 理由 | 备注 |</p> <p>|---|---|---|---|</p> <p>| P2-1 | **上线切换收进工作台**:带教台员工详情加"申请上线"按钮 → 系统校验(已持证上岗+机器人在线)→ 通知行橙实施确认后生效 | 消除商户后台/工作台两头跑;把 hub 检查清单变成系统校验 | 涉及 SaaS+大脑跨仓接口,需 PRD |</p> <p>| P2-2 | **新商户首登引导向导**:首次进带教台时给 3 步引导(建客服号→接入→带教),当前空状态提示已有但分散 | 把说明书内化到产品里 | 前端为主 |</p> <p>| P2-3 | "负责人"与"工作台使用人"两个下拉并存,语义接近易混 | 建议合并或给"负责人"补用途说明 | 需确认"负责人"(ec_employee)业务用途后再动 |</p> <p>| P2-4 | 驾驶舱多数 KPI 是示意数据,对商户展示有误导风险 | 上真实数据前建议加"示例数据"水印或按商户隐藏 | 与总纲§9.4一致 |</p> <p>| P2-5 | 商户后台左侧菜单对旅行社场景过重(商品/订单/财务等电商菜单) | 建议按商户类型裁剪菜单,突出"渠道管理/知识库/定制师工作台" | 涉及权限菜单体系,影响面大 |</p> <br> <p>---</p> <br> <h2>二、本轮已实施清单(含部署位置与回滚)</h2> <br> <p>| 改动 | 文件 | 部署 | 回滚 |</p> <p>|---|---|---|---|</p> <p>| 注册自动带操作员 | `saas/forms/admin/passport/MchRegisterForm.php` | 生产 SFTP 覆盖 | 服务器 `*.bak.polish-20260728` 备份直接还原 |</p> <p>| 登录无权限文案 | `saas/controllers/api/OperatorController.php` | 同上 | 同上 |</p> <p>| 编辑页文案+默认归属 | `saas/views/mall/service-account/edit.php` | 同上 | 同上 |</p> <p>| 登录页中文+顶栏真实商户名 | `rtrip-console` commit `62fdf37`(已 push) | 新 exe `release/AI工作台2607280155.exe`(待分发) | 回退 commit / 用旧 exe |</p> <p>| 品牌字样 | 服务器 `/www/wwwroot/ai.rtrip.cc/index.html` | 直接编辑 | `index.html.bak.brand-20260728` |</p> <br> <p>SaaS 仓 git 说明:服务器 git 与本地长期分叉、`edit.php` 内含其他会话未提交功能(归属坐席)与本次改动交叠,故本轮 SaaS 侧**不做 git 提交**,沿用 SFTP 单文件覆盖惯例;本地工作区保留改动供后续 owner 收敛。</p> <br> <h2>三、涉及的验收与证据</h2> <br> <p>全部验收项及证据见《[报告-商户开通平顺化-测试报告-260728](报告-商户开通平顺化-测试报告-260728.md)》。</p> <br> </div> <div class="footer"> <p>🤖 自动生成 · 2026-07-28 01:18:36 · <a href="https://ai.rtrip.cc/static/outputs/index.html">📂 产出索引</a></p> </div> </div> </body> </html>