Files
jiapuapp/docs/superpowers/specs/2026-07-14-g06-search-flow-consolidation-design.md
T
2026-07-14 17:36:43 +08:00

4.1 KiB
Raw Blame History

G06 公开家谱搜索流程合并设计

背景与依据

  • 用户已授权继续推进,并已将 G03 双步骤流程视为通过;G01、G03 与认证页的已验收可见效果不在本轮改动范围内。
  • 真实运行基线已保存为 docs/design/screens/runtime/2026-07-14/route-audit/G06-before-360x800.pngG07-before-360x800.png
  • 基线审视发现:G06 在尚未搜索时直接展示一条结果;G07 使用另一套通用列表壳。两页实际是同一条“查找—得到结果—申请加入”的连续旅程。

选择的方案

采用单一 G06 路由、页面内三态的方案:

  1. 初始态:仅显示检索提示与输入控件,不预先泄露公开家谱结果。
  2. 有结果态:输入并提交后显示匹配的 GenealogyCard 列表;点选任一条仅跳转既有 G08 申请页,并携带 genealogyId
  3. 无结果态:输入无匹配条件时,在同一页面显示明确的无结果说明与重新检索引导。

不保留 G07 兼容路由、跳转或占位页面。G07 的“结果列表”语义由 G06 的有结果态唯一拥有。

曾考虑保留 G07 作为可深链结果页,以及让 G06 默认展示热门家谱。前者重复了同一任务并增加路由;后者会让“尚未搜索”和“已搜索”混淆,均不采用。

视觉与交互

  • G06 继续使用现有 PageHeaderpage-paper.jpgfooter-mountain-bamboo.pngGenealogyCard 的已登记资产,不改动已验收页面。
  • G06 顶部的 PageHeader 必须高于纸纹底图。公开检索是单步任务,不使用大型检索面板;用户最后选定「朱砂题签 + 宽输入框 + 搜索按钮」方向:g06-search-title-strip.png1122×220)、g06-search-input-wide.png1120×248)和 g06-search-button.png(300×132)作为独立完整表面直接置于页面纸纹。题签中的实际谱印必须叠放项目 brand-seal.png,不得使用生成图中的通用印玺;Vue 仅叠放真实输入框、文本和点击层,不用 CSS 伪造边框、卡片、按钮或装饰面。
  • 结果条目继续复用 GenealogyCard 已有的完整题签框和谱印框位图,以保留与 G01 一致的家谱信息密度;传入“可申请”作为条目角色。
  • 初始、加载、无结果状态不是额外页面或卡片。它们在题签和控件下方以留白、现有云纹资产和清晰文案表达。

状态所有权与行为

  • g06-search-genealogies.vue 是本流程唯一状态拥有者:keyword、公开家谱数据、searchState 和筛选结果都只在这里维护。
  • searchState 的合法值是 initialresultsemptyloading。初始加载完成后保持 initial,只有用户提交搜索才进入 resultsempty
  • 搜索匹配范围维持现有数据契约:namesurnamelocation;空关键词视为查看全部公开家谱,仍属于 results
  • 点选结果不再直接调用 appApi.applyToJoin 或弹确认框;改为导航到 /pages/genealogy/g08-join-application?genealogyId=<id>,把填写申请作为 G08 的独立任务。

契约与验证

  • 静态契约先红灯后转绿:G06 路由存在,G07 路由与文件不存在;G06 包含四态、可见页头、无大型控件面板、朱砂题签/宽输入/按钮三张完整位图、G08 导航与位图表面约束;三张位图的尺寸和四角 alpha 均正确。
  • 运行冒烟先红灯后转绿:默认进入 G06 能看到初始态且没有结果卡;搜索“汤”显示结果卡;搜索不存在关键词显示无结果态;点选结果进入 G08。最后选定样式已重跑该契约和冒烟;视觉证据当前只确认 G06-selected-strip-final-initial-360x800.png,结果/无结果同版截图与用户验收仍待补。
  • 全量页面契约和 A03 路由计数从 56 更新为 55,文档中的当前路由数和 G03 验收状态同步更新。

范围外

  • 不修改 G01、G03、A01、A02、A04、A05、A06 的可见效果。
  • 不重做 G08 的申请表设计,不引入新 API 字段,不实现真实远端搜索协议。
  • 不执行任何 Git 暂存、提交、推送、重置或 worktree 操作。