Files
frontend-miniapp/docs/QA/user-flow-closure-audit-2026-06-10.md
lyf 8fed715235
Some checks failed
CI / verify (push) Has been cancelled
chore: sync latest project updates
2026-07-03 14:42:38 +08:00

14 KiB
Raw Blame History

用户逻辑闭环浏览器测试报告

日期2026-06-10
项目:深圳自然博物馆智能导览应用 - frontend-miniapp
接续会话:019eab78-f40b-72b1-9751-f8d4c4ff8fba
测试地址:http://192.168.0.112:5180/#/
运行目标H5
测试方式浏览器自动化点击、DOM 状态观察、当前源码佐证
测试范围:导览首页、全局顶部菜单、搜索页、设施详情页、路线详情页、返回/取消/重置/状态保留

结论

本次测试确认:导览首页到搜索、搜索结果到设施详情/路线预览、路线页馆外预览返回馆内预览等主路径已经可以渲染,浏览器或系统返回也能在若干场景中恢复上一页;搜索筛选状态从设施详情返回后仍能保留,是一个正向结果。

但用户逻辑闭环仍未完成。当前问题不是页面打不开,而是用户在进入二级页面后缺少稳定的页面级返回、取消、重置和继续路径;部分关键按钮只 toastconsole.log,导致任务停在中间态。尤其是搜索页不能重新输入关键词、设施页不能真正选择起点、路线页不能继续到“目标位置确认/导航完成”,这些都属于闭环断点。

需要特别说明:当前产品能力仍应表述为“馆内 3D 展示 + POI/位置预览”。源码中的提示也明确指出正式路线数据尚未接入,不能把现有路径宣传为真实馆内路线规划或实时导航。

当前已验证正向路径

路径 浏览器验证结果 备注
首页导览 -> 点击搜索框 -> 搜索页 成功进入 /pages/search/index 搜索页默认关键词为“卫生间”。
搜索页 -> 结果卡片“查看” -> 路线页 最终可渲染路线详情页 首次进入时出现过短暂空白,后续编译完成后恢复。
路线页 -> 查看馆外地图 -> 返回预览 可切换到 outdoor-preview,并通过按钮回到 preview handleViewOutdoorMaphandleReturnToPreview 有明确状态切换。
搜索页 -> 设施卡片 -> 设施详情 -> 浏览器返回 可回到搜索页 测试中搜索筛选状态保留,例如“无障碍”过滤未丢失。
首页馆内 3D 主 CTA 已从“开始馆内导航”调整为“选择目标地点”并跳搜索页 避免直接进入未完成的路线规划态。

浏览器验证问题

P1自定义导航页面缺少页面级返回/取消闭环

用户路径:搜索页 -> 设施详情页 / 路线详情页
观察结果:页面使用自定义导航后,顶部统一展示“导览 / 讲解”切换,但详情和路线页没有清晰的页面级返回、关闭或取消入口;测试中主要依赖浏览器或系统返回恢复。
期望闭环:二级页应在顶部或内容区提供明确的“返回上一页/取消本次选择/回到搜索结果”路径,并保留搜索关键词、筛选、目标对象和预览状态。
影响:用户可以进入详情或路线页,但如果没有浏览器返回习惯,容易认为流程已卡死;在 H5 壳或嵌入式容器里,这个风险更高。
源码证据:

  • src/pages.json:11src/pages.json:47:搜索、设施详情、路线详情等页面均配置 navigationStyle: "custom"
  • src/components/navigation/GuidePageFrame.vue:3src/components/navigation/GuidePageFrame.vue:9:页面框架只注入 GuideTopTabs 和内容 slot没有返回/关闭能力。
  • src/components/navigation/GuideTopTabs.vue:3src/components/navigation/GuideTopTabs.vue:12:顶部控件只渲染全局 tab。
  • src/utils/guideTopTabs.ts:14src/utils/guideTopTabs.ts:17tab 切换使用 uni.reLaunch 回首页 tab不是页面返回。

建议:保留全局 GuideTopTabs,但在 GuidePageFrame 增加可选页面级 back/cancel 插槽或 props。搜索、设施详情、路线详情应显式提供返回上一页路线/起点选择等多步骤页还应提供“取消本次导航/重置目标”。

P1搜索结果页不能重新输入或重置搜索

用户路径:首页导览 -> 搜索框 -> 搜索页 -> 点击搜索页顶部搜索框
观察结果:点击搜索页顶部搜索框后只保持当前页,未打开输入框、搜索弹层或清空/重搜流程。
期望闭环:用户应能在搜索结果页继续编辑关键词、清空关键词、提交新搜索,并能保留或重置筛选条件。
影响:搜索是导览任务的主要入口。如果用户第一次默认进入“卫生间”结果后想改搜展厅、入口或设施,目前只能绕路返回首页再进,任务链路被打断。
源码证据:

  • src/pages/search/index.vue:94:默认 searchKeyword 为“卫生间”。
  • src/pages/search/index.vue:153src/pages/search/index.vue:157:路由参数可覆盖关键词并加载结果。
  • src/pages/search/index.vue:160src/pages/search/index.vue:162handleSearchTapconsole.log('保持搜索结果页')
  • src/pages/search/index.vue:168src/pages/search/index.vue:177:结果卡片和“查看”可以继续跳详情/路线,但搜索本身没有再输入闭环。

建议:搜索页顶部搜索框应进入真实输入态。最小修复可以是打开一个输入面板,支持确认搜索、清空关键词和取消;更完整的方案是把首页搜索和搜索页搜索抽成同一套搜索组件。

P1路线页“查看目标位置”没有形成下一步

用户路径:搜索页 -> 结果“查看” -> 路线详情页 -> 点击“查看目标位置”
观察结果按钮只显示“正式路线数据尚未接入可先查看馆内三维位置”的提示没有切换到目标位置高亮、POI 卡片、3D 定位或可恢复状态。
期望闭环:在真实路线数据未接入前,按钮文案和行为应稳定落到“位置预览”:例如高亮目标 POI、展示楼层/区域/说明、提供返回搜索和查看馆外参考入口。
影响:用户已经选择目标,但点击后没有获得更多可操作信息,会误以为目标定位失败或导航不可用。
源码证据:

  • src/services/navAssets.ts:3:路线不可用提示为“正式路线数据尚未接入,可先查看馆内三维位置”。
  • src/pages/route/detail.vue:333src/pages/route/detail.vue:338handleShowTargetLocationuni.showToast
  • src/pages/route/detail.vue:329src/pages/route/detail.vue:341:馆外预览有状态切换和返回,但目标位置按钮没有同等状态落点。
  • src/pages/route/detail.vue:84:馆外预览文案说明真实馆内路线需等待 route_graph/nav_data 接入。

建议:短期把该动作改为“高亮目标位置/查看位置详情”,并切换到明确的 preview 子状态;中期接入 POI 坐标后,在 3D 视图中定位目标点;正式导航能力上线前,不使用“开始导航/路线规划已完成”等表述。

P1设施详情“选择起点”没有起点选择流程

用户路径:搜索页 -> 设施详情 -> 点击“选择起点”
观察结果:按钮只显示“请选择当前位置”,没有进入定位、手动选点、取消、确认或重置流程。
期望闭环:起点选择应至少包含“使用当前位置 / 手动选择 / 取消”的状态,并把起点写入路线页参数或共享状态;失败时应说明原因和恢复路径。
影响:用户无法完成“从哪里到目标设施”的前置步骤。即使之后点击查看位置/路线页,也只是目标预览,不是起点到终点的闭环。
源码证据:

  • src/pages/facility/detail.vue:118src/pages/facility/detail.vue:123handleChooseStartuni.showToast
  • src/pages/facility/detail.vue:125src/pages/facility/detail.vue:129:主按钮直接进入路线 state=preview,没有携带起点。
  • src/pages/route/detail.vue:348src/pages/route/detail.vue:352:路线页手动选择也只是 toast

建议:先把“选择起点”改造成受控步骤:进入 selecting-start 状态,显示取消、确认和手动位置候选;没有定位能力时明确禁用真实起点选择,并提供“只查看目标位置”。

P2首次进入路线页可能出现短暂空白应有加载/降级态

用户路径:搜索页 -> 第一个结果“查看” -> 路线详情页
观察结果:浏览器测试中首次进入路线页有过短暂空白,之后页面完成渲染。该现象在开发服务中可能由 Vite 首次编译或异步资源加载造成。
期望闭环:即使在首次加载、资源未就绪或 3D 资源较慢时,也应显示稳定的页面骨架、加载中、失败重试和返回路径。
影响:移动端网络或 WebGL 资源加载慢时,用户可能在白屏阶段退出;如果没有错误恢复,路线页会被认为不可用。
源码证据:

  • src/pages/route/detail.vue:2src/pages/route/detail.vue:96:路线页主要内容挂在 GuidePageFrame 内,当前浏览器现象需要后续用生产构建验证加载态是否足够。
  • src/components/navigation/GuidePageFrame.vue:35src/components/navigation/GuidePageFrame.vue:60:框架是满屏布局,内容未就绪时需要页面自身提供可见占位。

建议:路线页增加首屏 loading skeleton 和错误 fallback对 3D/静态资源加载失败要给“重试 / 返回搜索 / 仅查看文字位置”的降级路径。此项需要用 pnpm build:h5 后的 H5 预览再验证一次。

P2全局顶部 tab 切换会重启首页,可能丢失当前二级流程

用户路径:设施详情或路线页 -> 点击顶部“讲解/导览”
观察结果:顶部 tab 是全局切换,调用 uni.reLaunch 进入首页指定 tab。它适合全局入口切换但不保留当前搜索、设施或路线流程。
期望闭环:全局顶部菜单可以保持全局跳转,但二级流程页应同步提供独立返回/取消;如果用户正在多步骤任务中,切走前可考虑确认或保存上下文。
影响:用户误触顶部 tab 后,当前目标、筛选和路线预览上下文可能被抛弃。
源码证据:

  • src/utils/guideTopTabs.ts:12src/utils/guideTopTabs.ts:17:所有 tab 切换都 reLaunch 到首页。
  • src/components/navigation/GuidePageFrame.vue:3src/components/navigation/GuidePageFrame.vue:6:所有使用该框架的页面都会显示顶部 tab。

建议:将顶部 tab 定义为全局主导航;把“返回/取消/继续当前任务”定义为页面导航。二者不要混用。对路线、起点选择、搜索结果这类有上下文的页面,增加页面内保护和恢复。

源码侧风险补充

风险 当前证据 处理建议
路线能力仍是预览态 src/services/navAssets.ts:3 保留正式路线未接入提示;src/pages/route/detail.vue:84 明确等待 route_graph/nav_data 所有 UI 文案统一为“位置预览/查看位置”,避免“真实导航”承诺。
搜索默认词会影响用户意图 src/pages/search/index.vue:94 默认“卫生间” 默认结果可以保留,但必须允许立即编辑、清空和重新搜索。
起点未写入路线参数 src/pages/facility/detail.vue:125src/pages/facility/detail.vue:129 只传 facilityId/target/state 增加 start 参数或共享状态,并定义取消/重置。
顶部菜单不是返回按钮 src/utils/guideTopTabs.ts:14src/utils/guideTopTabs.ts:17 使用 reLaunch 继续作为全局菜单使用,同时给页面加 back/cancel。

建议修复顺序

  1. P1GuidePageFrame 增加页面级返回/取消能力,并在搜索、设施详情、路线详情启用。
  2. P1补齐搜索页顶部搜索框的输入、清空、取消、重新提交。
  3. P1把设施详情“选择起点”改为明确的起点选择步骤未接定位时使用禁用态或预览态文案。
  4. P1把路线页“查看目标位置”落到真实 preview 子状态,不再只是 toast。
  5. P2给路线页和 3D/位置预览增加加载、失败、重试、返回搜索的降级 UI。
  6. P2为全局顶部 tab 切换和二级流程上下文定义保存或确认策略。

回归测试用例

用例 操作 预期
搜索页重搜 首页 -> 搜索 -> 点击搜索页搜索框 -> 输入新关键词 -> 确认 结果按新关键词刷新,可清空,可取消回原结果。
搜索筛选保留 搜索页选择“无障碍” -> 打开设施详情 -> 返回 回到搜索页后筛选和关键词保持。
设施起点取消 设施详情 -> 选择起点 -> 取消 返回设施详情,不丢失目标设施。
设施起点确认 设施详情 -> 选择起点 -> 确认 -> 查看位置 路线页能读取目标和起点;未接真实路线时明确展示预览态。
路线目标预览 搜索结果“查看” -> 路线页 -> 查看目标位置 页面出现目标位置高亮或目标卡片,不只 toast。
路线馆外返回 路线页 -> 查看馆外地图 -> 返回预览/返回馆内 3D 状态回到馆内预览,目标对象不丢失。
二级页返回 搜索 -> 设施详情/路线页 -> 点击页面返回 返回上一页,搜索关键词和筛选保留。
顶部 tab 误触 路线页 -> 点击“讲解” -> 再回导览 行为符合产品定义;若会丢失路线上下文,应有明确提示或可恢复路径。
首次加载路线 清缓存或首次打开 -> 搜索结果“查看” -> 路线页 不出现无反馈白屏;至少显示 loading、失败重试和返回。

本次测试边界

  • 本报告接续旧会话的浏览器自动化结果,没有在当前会话重新启动 H5 服务或重复跑全量点击。
  • 本报告只覆盖 H5 用户逻辑闭环,不覆盖 mp-weixin。
  • 真实馆内路线规划、定位、到达判定不在当前已验证能力内;需等待 route_graph/nav_data 接入并完成独立验证。
  • 当前文档只新增测试报告,不修改业务实现。