# G06 公开家谱搜索流程合并设计 ## 背景与依据 - 用户已授权继续推进,并已将 G03 双步骤流程视为通过;G01、G03 与认证页的已验收可见效果不在本轮改动范围内。 - 真实运行基线已保存为 `docs/design/screens/runtime/2026-07-14/route-audit/G06-before-360x800.png` 与 `G07-before-360x800.png`。 - 基线审视发现:G06 在尚未搜索时直接展示一条结果;G07 使用另一套通用列表壳。两页实际是同一条“查找—得到结果—申请加入”的连续旅程。 ## 选择的方案 采用单一 G06 路由、页面内三态的方案: 1. 初始态:仅显示检索提示与输入控件,不预先泄露公开家谱结果。 2. 有结果态:输入并提交后显示匹配的 `GenealogyCard` 列表;点选任一条仅跳转既有 G08 申请页,并携带 `genealogyId`。 3. 无结果态:输入无匹配条件时,在同一页面显示明确的无结果说明与重新检索引导。 不保留 G07 兼容路由、跳转或占位页面。G07 的“结果列表”语义由 G06 的有结果态唯一拥有。 曾考虑保留 G07 作为可深链结果页,以及让 G06 默认展示热门家谱。前者重复了同一任务并增加路由;后者会让“尚未搜索”和“已搜索”混淆,均不采用。 ## 视觉与交互 - G06 继续使用现有 `PageHeader`、`page-paper.jpg`、`footer-mountain-bamboo.png` 和 `GenealogyCard` 的已登记资产,不改动已验收页面。 - G06 顶部的 `PageHeader` 必须高于纸纹底图。公开检索是单步任务,不使用大型检索面板;用户最后选定「朱砂题签 + 宽输入框 + 搜索按钮」方向:`g06-search-title-strip.png`(1122×220)、`g06-search-input-wide.png`(1120×248)和 `g06-search-button.png`(300×132)作为独立完整表面直接置于页面纸纹。题签中的实际谱印必须叠放项目 `brand-seal.png`,不得使用生成图中的通用印玺;Vue 仅叠放真实输入框、文本和点击层,不用 CSS 伪造边框、卡片、按钮或装饰面。 - 结果条目继续复用 `GenealogyCard` 已有的完整题签框和谱印框位图,以保留与 G01 一致的家谱信息密度;传入“可申请”作为条目角色。 - 初始、加载、无结果状态不是额外页面或卡片。它们在题签和控件下方以留白、现有云纹资产和清晰文案表达。 ## 状态所有权与行为 - `g06-search-genealogies.vue` 是本流程唯一状态拥有者:`keyword`、公开家谱数据、`searchState` 和筛选结果都只在这里维护。 - `searchState` 的合法值是 `initial`、`results`、`empty`、`loading`。初始加载完成后保持 `initial`,只有用户提交搜索才进入 `results` 或 `empty`。 - 搜索匹配范围维持现有数据契约:`name`、`surname`、`location`;空关键词视为查看全部公开家谱,仍属于 `results`。 - 点选结果不再直接调用 `appApi.applyToJoin` 或弹确认框;改为导航到 `/pages/genealogy/g08-join-application?genealogyId=`,把填写申请作为 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 操作。