diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..df0a1e7
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,6 @@
+/tmp/
+/unpackage/
+/docs/superpowers/specs/design/
+/docs/design/screens/runtime/
+/tmp-g01-icon-audit.png
+/node_modules/
diff --git a/components/ModulePage.vue b/components/ModulePage.vue
index 6888d48..2f2829e 100644
--- a/components/ModulePage.vue
+++ b/components/ModulePage.vue
@@ -1,83 +1,177 @@
-
+
-
-
-
-
-
+
+
+
+
-
+
{{ page.number }}{{ page.subtitle }}
-
-
- {{ field }}
- {{ page.note }}
- {{ page.action }}
+
+
+
+ {{ page.title }}
+ {{ page.subtitle }}
+
+ {{ field }}
+
+ {{ normalizedNote }}
+ {{ page.action }}
+
-
- 谱{{ item[0] }}{{ item[1] }}›
- {{ page.action }}
+
+
+ {{ item[0] }}{{ item[1] }}点按查看详情
+
+ {{ page.action }}
-
-
- {{ page.number.slice(0, 1) }}{{ page.title }}{{ page.subtitle }}
- {{ item[0] }}{{ item[1] }}
- {{ page.action }}
+
+
+
+ {{ page.number }} · 家族档案
+ {{ page.title }}
+ {{ page.subtitle }}
+
+ {{ item[0] }}{{ item[1] }}
+
+ {{ page.action }}
+
-
-
- {{ item[0] }}{{ item[1] }}
- {{ page.action }}
+
+
+
+ 第 {{ index + 1 }} 则{{ item[0] }}{{ item[1] }}
+
+ {{ page.action }}
-
-
- {{ item[0] }}{{ item[1] }}›
- {{ page.action }}
+
+
+
+ {{ page.title }}{{ page.subtitle }}
+
+ {{ item[0] }}{{ item[1] }}查看
+
+ {{ page.action }}
+
-
- {{ page.badge }}{{ page.lead }}{{ page.note }}{{ page.action }}
+
+
+
+ {{ page.badge }} · 服务说明{{ page.lead }}{{ normalizedNote }}
+ {{ page.action }}
+
+
+
+
+
+
+
+
+ {{ stateCopy.eyebrow }}{{ stateCopy.title }}{{ stateCopy.copy }}
+ {{ stateCopy.action }}
+
+
diff --git a/components/tree/TreeMemberForm.vue b/components/tree/TreeMemberForm.vue
new file mode 100644
index 0000000..6cebac6
--- /dev/null
+++ b/components/tree/TreeMemberForm.vue
@@ -0,0 +1,137 @@
+
+
+
+
+
+
+
+
+
+ {{ config.eyebrow }}
+ {{ config.title }}
+ {{ config.copy }}
+
+
+ {{ field.label }}
+
+
+ {{ config.note }}
+
+ {{ config.action }}
+
+
+
+
+ {{ resultCopy.eyebrow }}
+ {{ resultCopy.title }}
+ {{ resultCopy.copy }}
+
+
+ 返回核对
+
+
+ 查看冲突
+
+
+
+ {{ formState === 'success' ? '继续完善' : '重新填写' }}
+
+
+
+
+
+
+
+
+
diff --git a/data/page-catalog.js b/data/page-catalog.js
index cf57679..3e280d7 100644
--- a/data/page-catalog.js
+++ b/data/page-catalog.js
@@ -1,19 +1,6 @@
// 全量视觉交付的本地页面目录:只保存页面内容与状态,样式由 ModulePage 的六类母版统一维护。
export const pageCatalog = {
- g07: { number: 'G-07', title: '搜索结果', subtitle: '为你找到 3 部公开家谱', template: 'list', sections: [['洛阳汤氏家谱', '河南 · 洛阳 · 158 位成员'], ['汝南周氏家谱', '河南 · 周口 · 86 位成员'], ['清河张氏家谱', '河北 · 邢台 · 214 位成员']], action: '申请加入' },
- g08: { number: 'G-08', title: '申请加入家谱', subtitle: '留下真实姓名,等待管理员审核', template: 'form', fields: ['真实姓名', '与家谱关系', '申请说明'], action: '提交申请', note: '提交后可在我的申请中查看进度' },
- g09: { number: 'G-09', title: '我的申请', subtitle: '查看加入家谱的审核进度', template: 'timeline', sections: [['洛阳汤氏家谱', '审核中 · 已提交于今天'], ['清河张氏家谱', '已通过 · 可进入家谱']], action: '查看申请说明' },
- g11: { number: 'G-11', title: '家谱设置', subtitle: '管理名称、公开范围与访问说明', template: 'settings', sections: [['家谱名称', '汤氏家谱'], ['公开范围', '仅成员可见'], ['访问说明', '家族资料,请妥善保存'], ['转让管理权', '功能待接入']], action: '保存设置' },
- g12: { number: 'G-12', title: '字辈诗', subtitle: '承载世代相传的字序与家训', template: 'detail', sections: [['启宗敦本,继世传芳', '当前使用字辈 · 敦'], ['字辈维护说明', '管理员可补录或调整字辈诗']], action: '维护字辈诗' },
-
- t02: { number: 'T-02', title: '世系提示', subtitle: '世系图当前状态', template: 'status', badge: '树', lead: '请横屏查看完整世系图', note: '无成员、加载失败和权限不足会在此处提示', action: '返回成员目录' },
- t04: { number: 'T-04', title: '新增亲属', subtitle: '补全一段真实的家族关系', template: 'form', fields: ['姓名', '与本人关系', '出生日期', '性别'], action: '保存亲属', note: '保存后将在世系图中显示' },
- t05: { number: 'T-05', title: '编辑成员资料', subtitle: '妥善记录家人的生命信息', template: 'form', fields: ['姓名', '字辈', '出生日期', '人物简介'], action: '保存资料', note: '隐私字段仅向有权限成员展示' },
- t06: { number: 'T-06', title: '编辑亲属关系', subtitle: '确认成员之间的血缘与婚姻关系', template: 'form', fields: ['关联成员', '关系类型', '生效日期'], action: '保存关系', note: '发现关系冲突时会提示管理员处理' },
- t07: { number: 'T-07', title: '成员目录', subtitle: '按世系、姓名或字辈查找成员', template: 'list', sections: [['汤文正', '第 18 世 · 家谱管理员'], ['汤文德', '第 19 世 · 已完善资料'], ['汤文清', '第 19 世 · 待补充信息']], action: '搜索成员' },
- t08: { number: 'T-08', title: '成员状态', subtitle: '隐私、离世与访问权限说明', template: 'settings', sections: [['隐私成员', '仅本人和管理员可见'], ['已故成员', '在世系图中以纪念样式展示'], ['无访问权限', '请联系家谱管理员']], action: '查看隐私说明' },
-
f03: { number: 'F-03', title: '动态详情', subtitle: '一段属于家人的共同记忆', template: 'detail', sections: [['端午家宴', '今年端午全家相聚,留下了许多温暖照片。'], ['家人评论', '愿家族和睦兴旺,岁岁平安。']], action: '写下评论' },
f04: { number: 'F-04', title: '谱文', subtitle: '收录家族文章、家训与往事', template: 'list', sections: [['家风家训', '代代相传的处世之道'], ['家族往事', '珍贵的口述与文字记录'], ['族谱序言', '一部家谱的起源']], action: '新建谱文' },
f05: { number: 'F-05', title: '谱文详情', subtitle: '家族文字档案', template: 'detail', sections: [['家风家训', '孝友传家,勤俭立业;敬祖睦宗,诚实待人。'], ['收录时间', '2024 年 5 月 12 日']], action: '收藏谱文' },
diff --git a/design-qa.md b/design-qa.md
index 96a0862..6cb4350 100644
--- a/design-qa.md
+++ b/design-qa.md
@@ -1,94 +1,67 @@
-# A02 账号登录 Design QA
+# Design QA — G05 家谱总览
-## Comparison target
+- source visual truth path: `docs/design/screens/runtime/2026-07-14/g-module-audit/before/01-g05-before-360x800.png`、`static/assets/modules/genealogy/opaque/g05-overview-surface.png`、外部思维导图与 `家谱主页.png` 的信息层级参考
+- implementation screenshot path: `docs/design/screens/runtime/2026-07-14/g-module-audit/g05/01-g05-ready-360x800.png`
+- viewport: 360×800;另查 412×915
+- state: `ready`;另查 `empty`、`error`
+- full-view comparison evidence: `docs/design/screens/runtime/2026-07-14/g-module-audit/g05/05-g05-before-after-comparison.png`
+- focused region comparison evidence: 未单独裁切;合并图中 360px 单页按原始像素显示,谱名区、四宫格、近况行和底部说明文字均可直接辨认。
-- Source visual truth: `docs/design/screens/runtime/2026-07-13/A01-360x800.png` and `docs/design/screens/runtime/2026-07-13/G01-360x800.png` are the user-approved brand references. They are not a user-approved A02 mockup.
-- Earlier A02 implementation: `docs/design/screens/runtime/2026-07-13/A02-before-360x800.png`.
-- Current implementation: `docs/design/screens/runtime/2026-07-13/A02-after-360x800.png`.
-- Full-view comparison evidence: `docs/design/screens/runtime/2026-07-13/A02-before-after-360x800.png` at 360 × 800.
-- Focused region review: full-view comparison is sufficient for this iteration because the corrected areas are the whole panel proportion, complete frame, button ratio and background treatment; no text or icon asset is too small to identify in the captured images.
+## Findings
+
+没有遗留的 P0/P1/P2 问题。
+
+- 字体与层级:谱名、核心动作、辅助说明形成三级层级;第一次审计发现元信息和说明文字偏小,已将相关字号提高到 22–23rpx 后重截。
+- 间距与布局:四个点击区与位图槽位一致;360 与 412 均无横向溢出、裁切或底部操作遮挡。
+- 颜色与令牌:继续使用朱砂、墨蓝、暖宣纸与古金,没有采用外部参考的灰绿色视觉。
+- 图片质量:总览面、四宫格边框、分隔和底部说明面全部来自 1122×1506 不透明位图;没有用 CSS 边框、渐变、SVG 或占位图形代替。
+- 文案与内容:删除了“邀请亲人→申请加入”的角色错误;保留 OpenAPI 能支持的概览、世系、始祖、字辈、审核和设置任务。
## Comparison history
-### Iteration 1: Before refactor
+1. 改前 P1:录入族人指向已删除 G04;已改为 G03 `step=ancestor`,静态契约和真实点击通过。
+2. 改前 P1:管理员邀请动作错误进入申请者 G08;已删除该动作,不臆造 OpenAPI 未提供的邀请功能。
+3. 改前 P2:完整卡片与面板由 CSS 拼接;已改成 ImageGen 不透明位图并验证尺寸和 alpha。
+4. 首次改后 P2:部分 360 宽屏辅助文字偏小;已提高字号并重新捕获四张最终证据。
-**Findings**
+## Evidence limits
-- [P1] The login form was a thin CSS rectangle rather than a complete genealogy panel.
- Location: `pages/auth/a02-login.vue`, `.login-panel`.
- Evidence: the left half of `A02-before-after-360x800.png` has a narrow plain outline, unlike A01’s complete buttons and G01’s complete title slips.
- Fix: introduced `static/assets/modules/auth/opaque/a02-login-panel.png` as the full opaque paper, double-gold-frame and corner-ornament surface.
+截图能够确认层级、裁切、图像质量和可见点击面积,不能单独证明读屏顺序、外接键盘焦点、Android 系统字体放大或完整 WCAG 合规;这些留给真机专项验证。
-- [P1] The A01 primary button skin was vertically compressed.
- Location: `pages/auth/a02-login.vue`, `.login-submit`.
- Evidence: the earlier button had a noticeably flatter appearance than the A01 reference.
- Fix: set the A02 display slot to 128rpx high and preserved the complete skin as the only button surface.
+## Implementation checklist
-- [P2] The main task was visually weaker than the scenery below it.
- Location: the A02 above-the-fold layout.
- Evidence: the earlier card ended high in the viewport and left more visual weight to the empty mountain background.
- Fix: aligned the header with A01 and expanded the panel so its lower paper landscape becomes a deliberate task-ending surface.
+- [x] G01 统一使用 `genealogyId` 查询键
+- [x] G05 同页承载 `loading|ready|empty|error`
+- [x] G04 旧路径清除
+- [x] 误导邀请动作清除
+- [x] 360×800 与 412×915 截图检查
+- [x] 静态契约与浏览器运行冒烟通过
-### Iteration 2: Current implementation
+final result: passed
-**Findings**
+---
-- [P3] The page uses one existing cloud asset at the heading while the new panel supplies additional pale clouds. This is visually coherent at 360 × 800, but user review should decide whether the heading cloud is one layer too many.
- Location: A02 heading, right side.
- Evidence: `A02-after-360x800.png`.
- Follow-up: remove only the heading cloud if the user finds the top-right decoration busy; do not alter the panel frame or input structure.
+# Design QA — 54 路由候选覆盖审计
-### Iteration 3: A02 本页协议确认
+- 审计日期:2026-07-14
+- 用户验收状态:7 个冻结页为 `[x]`;其余 47 个页面仅为 `[~]` 候选,本文件的 `passed` 只表示本轮内部截图 QA 通过,不代表用户审美验收。
+- 全量候选截图:`docs/design/screens/runtime/2026-07-14/all-page-candidates/`
+- G 模块证据:`g-module-audit/`
+- T 模块证据:`t01-audit/`、`t-module-audit/`
+- F01/F02/N01/M01 根页证据:`root-pages-audit/`
+- 六类共享母版证据:`module-page-audit/`
-**Findings**
+## Audit summary
-- [P1] 直接进入 A02 时,协议确认以前只是一句“请先在登录引导页阅读并确认协议”,用户无法在当前任务页修正状态。
- Location: `pages/auth/a02-login.vue`,原 `.agreement-reminder`。
- Evidence: `docs/design/screens/runtime/2026-07-14/A02-without-agreement-360x800.png`。
- Fix: 以 A02 卷轴面板内的可点击协议行替换提示;未选中与选中状态分别使用两枚 96×96 透明 PNG,文字和链接保留在 Vue 文字层。
+- 54 条最终路由已按当前信息架构覆盖;G07→G06、T02→T01 的重复状态路由已收敛。
+- 候选页面继续使用宣纸、朱砂、古金、墨褐视觉体系;按钮、卡片、字段、面板和边框使用完整位图,未在共享母版中使用 CSS 伪元素或 CSS 构造可见表面。
+- 47 个待审页面均使用本地模拟数据与可操作状态,不调用 `appApi`;接口清单只用于功能位置、字段与状态语义。
+- 29 个原通用壳页面逐页捕获 360×800 候选图,并按 F、R、M/N 生成模块联系表统一审视。
+- F01、F02、N01、M01 根页在 360×800 与关键 412×915 下复核;底部导航、主操作和状态卡没有裁切。
+- 首轮 T01 状态卡横向裁切已按契约先行修复并重截;G09/G10 假按钮槽已用独立状态位图修复;当前没有遗留的 P0/P1/P2 截图问题。
-- [P2] Chrome 捕获脚本在选择器出现 300ms 后就截图,A02 图层尚未加载时会产生黑块或过渡状态,不能作为视觉证据。
- Location: `scripts/capture-chrome-page.js`。
- Evidence: 本轮已拒绝的半渲染截图;修复后截图均由 `tests/capture-chrome-page-contract.ps1` 约束为“图片资源加载完成且额外稳定等待后再采集”。
- Fix: 截图脚本等待全部 `document.images` 加载完成,再等待 900ms;新截图逐张打开检查。
+## Evidence limits
-### Iteration 4: A02 注册入口与证据隔离
+H5 Chrome 截图不能证明 Android 真机字体放大、读屏语义、系统返回手势、软键盘遮挡和所有触摸目标;这些项目不在本轮候选 QA 中冒充完成,留到用户视觉审核后的 Android 设备复核。
-**Findings**
-
-- [P2] 直接进入 A02 的新用户在账号密码与验证码登录之外没有注册路径,页面功能感不完整。
- Location: `pages/auth/a02-login.vue`,协议行下方。
- Evidence: 用户审视的 412×915 运行截图与本轮 `A02-register-entry-412x915.png`。
- Fix: 在协议行下方的既有留白内增加“还没有账号? 注册账号”;仅朱砂色“注册账号”可点,真实跳转到既有 A04 路由,不新增按钮资产或重做 A04。
-
-- [P1] Chrome 对同一路由的 hash 导航会复用 Vue 实例;直接进入 URL 的截图可能继承上一次勾选协议的状态,不能证明初始态。
- Location: `scripts/capture-chrome-page.js`。
- Evidence: 导航后 URL 已是无参数 A02,但实际图标仍为 `a02-agreement-checked.png`;整页刷新后才回到未选中图标。
- Fix: 截图脚本在到达目标 URL 后刷新,并等待 `performance.timeOrigin` 变化,再检查选择器、图片和稳定时间。该顺序由 `tests/capture-chrome-page-contract.ps1` 约束。
-
-## Required fidelity surfaces
-
-- Fonts and typography: A02 uses the project’s existing STKaiti/KaiTi hierarchy; current capture keeps the title above form labels and retains readable body copy.
-- Spacing and layout rhythm: the larger panel establishes a clear header → title → tab → form → action cadence; 320 × 568 and 360 × 640 intentionally scroll rather than clip the action.
-- Colors and visual tokens: cinnabar remains limited to the header, selected Tab, helper action and primary button; antique gold frames and ink-brown body text follow A01/G01.
-- Image quality and asset fidelity: the panel is a complete opaque PNG with no generated text, placeholder controls, or CSS-drawn frame; the button remains the approved complete A01 asset.
-- Agreement control: the 96×96 unchecked and checked icons are separate transparent PNGs with transparent corners; A02 does not draw the circle, fill, or checkmark with CSS.
-- Registration entry: the low-emphasis text path follows the agreement row and uses only the existing panel whitespace; it does not compete with the full-surface cinnabar login button or invent a second button asset.
-- Copy and content: account and SMS flows retain their original Chinese copy and real input controls; no visible workflow was invented.
-
-## Primary interactions checked
-
-- Account/password state captured at 320 × 568, 360 × 640, 360 × 800 and 412 × 915.
-- SMS Tab was clicked through the Chrome debugging session and captured at 360 × 800: `docs/design/screens/runtime/2026-07-13/A02-sms-360x800.png`.
-- Form submission behavior is covered by the existing A01/A02 contract and was not changed in this visual pass.
-- Direct A02 now opens unchecked at 320×568, 360×640, 360×800 and 412×915; `?agreed=1` opens checked at 360×800. A real Chrome click changed the checked icon back to the unchecked PNG, and an unchecked submit displayed the current-page agreement message.
-- Registration entry was captured at 360×800 and 412×915 after a fresh-document reload; a real Chrome click reached `http://localhost:5173/#/pages/auth/a04-register`.
-- A03 重复验证码页已删除;删除后重新捕获 A02 的手机验证码 Tab(360×800),手机号、验证码、获取验证码、登录、协议和注册入口均完整显示,作为唯一验证码登录入口的运行证据。
-
-## Acceptance
-
-用户已于 2026-07-14 确认 A02 账号密码登录、协议确认和注册入口的视觉结果。本页从待验收样板转为冻结的认证模块参考;后续页面可继承其视觉语言,但不能改动 A02 可见效果。
-
-## Final result
-
-final result: accepted
+final result: passed (internal candidate QA only; user review pending)
diff --git a/docs/design/F-R-N-M_全量候选设计记录.md b/docs/design/F-R-N-M_全量候选设计记录.md
new file mode 100644
index 0000000..b82d3ac
--- /dev/null
+++ b/docs/design/F-R-N-M_全量候选设计记录.md
@@ -0,0 +1,60 @@
+# F/R/N/M 全量候选设计记录
+
+> 日期:2026-07-14
+> 状态:F01–F10、R01–R11、N01–N02、M01–M10 共 33 个页面候选已形成,统一标记 `[~]`,等待用户逐页视觉审核。
+
+## 1. Product Design 处理方式
+
+- 先捕获旧通用壳的 `detail|list|form|timeline|settings|status` 六类真实运行基线,再升级共享母版。
+- 共享母版只统一视觉表面和状态机制;每条路由仍拥有独立页面编号、标题、字段、列表内容和业务任务,没有合并不同功能页面。
+- F01、F02、N01、M01 四个根页独立重做,保留家族/我的底部导航与关键跳转。
+- 接口文档只用于功能位置和字段语义;页面候选全部使用本地模拟数据,不调用 `appApi`,不修改 API 边界。
+
+## 2. 位图与母版
+
+- `g03-create-flow-panel.png`:表单、详情、设置、服务说明和统一状态的完整宣纸表面。
+- `g06-search-input-wide.png`:真实输入、详情段落和设置行的完整位图底层。
+- `application-status-card.png`:列表、时间轴、通知、动态与状态卡。
+- `a01-primary-button.png`/`a01-secondary-button.png`:所有主次操作。
+- CSS 不绘制卡片、按钮、边框、圆角或伪元素装饰,只负责布局、文字、控件和状态。
+
+## 3. 截图证据
+
+### 六类母版
+
+目录:`screens/runtime/2026-07-14/module-page-audit/`
+
+- 基线与候选:`00-*-before-360x800.png`、`01-f03-detail-360x800.png` 至 `10-f04-list-412x915.png`。
+- 同画布对比:`11-template-before-after-comparison.png`。
+- 共享空/成功/失败:`12-shared-states-comparison.png`。
+
+### 29 个共享母版页面
+
+目录:`screens/runtime/2026-07-14/all-page-candidates/`
+
+- 每条路由均有独立 `*-360x800.png`。
+- 模块联系表:`00-family-contact-sheet.png`、`00-records-contact-sheet.png`、`00-profile-notification-contact-sheet.png`。
+
+### F01/F02/N01/M01
+
+目录:`screens/runtime/2026-07-14/root-pages-audit/`
+
+- 基线:`00-f01-before-360x800.png`、`00-f02-before-360x800.png`、`00-n01-before-360x800.png`、`00-m01-before-360x800.png`。
+- 候选与状态:`01-f01-list-360x800.png` 至 `10-m01-ready-412x915.png`。
+- 同画布对比:`11-root-before-after-states.png`。
+
+## 4. 审视结果
+
+- 六类母版在 360 下没有卡片、按钮或文字裁切;列表较长时自然纵向滚动,完整面板保持一致的视觉终点。
+- 共享状态统一使用同一宣纸面板,但标题、动作和业务名称来自当前页面,避免“万能空态”丢失上下文。
+- F01、M01 的根页保留底部导航;F02 的发布编辑区和 N01 的消息卡均使用真实控件与本地可操作结果。
+- Product Design 对比中未发现 P1/P2 级裁切、假按钮槽或风格漂移;最终 Android 真机字体放大、读屏和触摸目标仍需后续设备复核。
+
+## 5. 验证入口
+
+- `tests/module-page-visual-contract.ps1`
+- `tests/module-page-runtime-smoke.js`
+- `tests/root-pages-visual-contract.ps1`
+- `tests/root-pages-runtime-smoke.js`
+- `tests/capture-chrome-page-contract.ps1`
+
diff --git a/docs/design/G05_家谱总览_设计记录.md b/docs/design/G05_家谱总览_设计记录.md
new file mode 100644
index 0000000..198c7c3
--- /dev/null
+++ b/docs/design/G05_家谱总览_设计记录.md
@@ -0,0 +1,79 @@
+# G05 家谱总览设计记录
+
+> 日期:2026-07-14
+> 状态:视觉候选已实现并完成本轮 Product Design 截图审计;未获用户审美确认,等待 G 模块完成后集中查看。
+
+## 1. 技能与证据
+
+- 已调用 `Product Design:index`,将任务路由为现有产品的 `audit`、`get-context` 与实现后设计检查。
+- 已调用 `Product Design:audit`,以本轮新截的真实 H5 画面为证据,不用旧截图代替。
+- 已调用 ImageGen 生成完整不透明位图表面;没有用 CSS 伪造卡片、边框或装饰。
+- 改前证据:`screens/runtime/2026-07-14/g-module-audit/before/01-g05-before-360x800.png`。
+- 改后证据:`screens/runtime/2026-07-14/g-module-audit/g05/01-g05-ready-360x800.png`、`02-g05-empty-360x800.png`、`03-g05-error-360x800.png`、`04-g05-ready-412x915.png`。
+- 同画布对照:`screens/runtime/2026-07-14/g-module-audit/g05/05-g05-before-after-comparison.png`,左侧改前、右侧改后;所有判断均基于这张合并输入,不把两个分离预览冒充并排比较。
+
+## 2. 产品与思维导图参考
+
+外部只读参考位于 `C:\Users\Rain\Desktop\软件\JOB\app设计`。已查看 `思维导图.png`、`家谱主页.png`、`加入家谱.png` 与 `字辈谱.png`。
+
+采用的只有信息结构:谱名、堂号、地点和成员概况置顶;世系、录入、字辈、审核作为核心入口;家族内容作为下一层。没有采用外部灰绿色卡片、现代图标、邀请码加入或底部双按钮视觉。
+
+外部“邀请码加入”与当前产品不一致。当前唯一加入流程是 G06 公开检索 → G08 提交申请 → G09 查看进度 → G10 管理员审核,因此不把邀请码或邀请按钮加入 G05。
+
+## 3. 路由与状态所有权
+
+- 唯一路由:`pages/genealogy/g05-genealogy-overview`。
+- 唯一上下文查询键:`genealogyId`;G01 的旧 `id` 链接已同步迁移,不保留兼容读取。
+- 同页状态:`loading`、`ready`、`empty`、`error`,不为加载、空数据、无权或失败另建页面。
+- “录入族人”进入 G03 `step=ancestor&genealogyId=...`;已删除的 G04 不再被引用。
+- G05 不再把 G08 申请加入表单误写成管理员的“邀请亲人”。
+
+## 4. OpenAPI 设计边界
+
+| 页面内容/动作 | OpenAPI 依据 | 页面阶段处理 |
+| --- | --- | --- |
+| 谱名、堂号、地区、成员数、可见范围 | `GET /genealogy/app/genealogies/{genealogyId}/overview` | 正常态展示真实接口所需字段;本轮继续使用现有 mock |
+| 管理设置 | `GET/PUT /genealogy/app/genealogies/{genealogyId}` | 只进入 G11,不在 G05 复制设置表单 |
+| 世系树 | `GET /genealogy/app/genealogies/{genealogyId}/lineage/tree` | 进入 T01,不在总览加载完整树 |
+| 录入首代 | `POST /genealogy/app/genealogies/{genealogyId}/lineage/persons` | 进入 G03 的始祖步骤 |
+| 字辈谱 | `GET/POST /genealogy/app/genealogies/{genealogyId}/generation-poems` | 进入 G12 |
+| 入谱审核 | `GET .../join-applies/pending`、`PUT .../{applyId}/audit` | 进入 G10 |
+
+接口响应仍使用通用 `JsonObject/ListResult`,因此页面不臆造邀请码、分享码、视频或多级管理员字段。
+
+## 5. 位图资产
+
+- 最终资产:`static/assets/modules/genealogy/opaque/g05-overview-surface.png`。
+- 尺寸:1122×1506;`Format24bppRgb`,四角 alpha 均为 255。
+- 内容:墨蓝谱名区、四个完整宣纸入口槽、古金分隔、底部访问说明面;文字和点击层不烘焙进图片。
+- ImageGen 使用 `ui-mockup` 模式,参考 G05 改前 360×800 截图,明确要求无文字、无图标、无占位符、无现代玻璃拟态。
+
+## 6. Product Design 审计
+
+### 改前主要风险
+
+1. G05 的“录入族人”指向已删除 G04,核心动作实际不可达。
+2. “邀请亲人”跳到申请者填写的 G08,角色和任务语义错误;OpenAPI 也没有邀请端点。
+3. 深色头、四宫格卡片和底部邀请面均由 CSS 拼接,不符合完整视觉表面必须使用位图的项目规则。
+4. 只有模糊载入文案,没有区分空数据、无权限和加载失败。
+
+### 改后步骤与健康度
+
+1. `ready`:健康。谱名和成员概况在墨蓝区,四个核心任务在首屏可见,家族近况和访问说明层级清楚。
+2. `empty`:健康。仍在 G05 路由内说明缺少上下文,并返回“我的家谱”。
+3. `error`:健康。说明网络、数据或权限三类可能原因,提供同页重试。
+4. 412×915:健康。位图、文字和点击槽同步放大,没有横向溢出或裁切。
+
+### 可访问性边界
+
+- 本轮从截图确认了文字未裁切、主要入口具有完整卡片面积、按钮文案可见。
+- 审计后已提高谱名区元信息、入口说明、近况和底部说明字号,降低 360 宽屏小字风险。
+- 截图不能证明读屏语义、键盘焦点和 Android 字体放大行为;这些留到真机与可访问性专项验证,不能宣称完整 WCAG 合规。
+
+## 7. 验证
+
+- `tests/g05-overview-contract.ps1`
+- `tests/g05-overview-runtime-smoke.js`
+- `tests/g01-visual-contract.ps1`
+
+以上在实现后均已通过;最终集中审美确认前不将 G05 标记为视觉冻结。
diff --git a/docs/design/G08-G10_入谱申请链路_设计记录.md b/docs/design/G08-G10_入谱申请链路_设计记录.md
new file mode 100644
index 0000000..4e09081
--- /dev/null
+++ b/docs/design/G08-G10_入谱申请链路_设计记录.md
@@ -0,0 +1,81 @@
+# G08–G10 入谱申请链路设计记录
+
+> 日期:2026-07-14
+> 状态:页面候选、本地模拟交互与本轮 Product Design 截图审计已完成;标记为 `[~]`,等待后续逐页视觉审核。
+
+## 1. Product Design 工作流
+
+- `Product Design:index`:将工作路由为现有产品的上下文确认、截图审计和实现后设计检查。
+- `Product Design:audit`:本轮重新捕获 G08–G10 的表单、成功、列表、空态和 412 宽屏,不使用旧通用壳图冒充最终证据。
+- ImageGen:生成 `application-record-card.png`,并在截图审计发现假按钮后精确编辑出 `application-status-card.png`。
+- TDD:`tests/g08-g10-application-flow-contract.ps1` 与运行冒烟先因通用壳和缺少同页状态红灯,再由最小实现转绿。
+
+## 2. 思维导图与外部参考
+
+已查看 `C:\Users\Rain\Desktop\软件\JOB\app设计\思维导图.png` 与 `加入家谱.png`。外部参考的“加入家谱”依赖邀请码,但当前 OpenAPI 没有邀请码端点,因此不采用该流程。
+
+当前申请链路唯一结构是:G06 公开家谱检索 → G08 填写真实身份与关系 → G09 查看自己的全部申请 → G10 管理员审核。三个阶段是不同用户任务,保留三条路由;各自的加载、空、失败、提交成功和审核结果只作为原路由状态,不再拆页。
+
+## 3. 页面与状态
+
+| 页面 | 独立任务 | 同页状态 |
+| --- | --- | --- |
+| G08 | 对某一 `genealogyId` 提交加入申请 | `form`、提交中、`success`、`error` |
+| G09 | 当前用户查看全部申请 | `loading`、`list`、`empty`、`error`;`PENDING/APPROVED/REJECTED` 为卡内状态 |
+| G10 | 当前家谱管理员审核待处理申请 | `loading`、`list`、`empty`、`error`;审核确认与结果留在卡内 |
+
+G07/G08/G09 的旧 `ModulePage` 目录条目已经删除;G07 结果态继续只归 G06。
+
+## 4. OpenAPI 功能参考
+
+| 页面动作 | OpenAPI |
+| --- | --- |
+| G08 提交 | `POST /genealogy/app/genealogies/{genealogyId}/join-applies` |
+| G09 我的申请 | `GET /genealogy/app/genealogies/join-applies/mine` |
+| G09 撤销边界 | `DELETE /genealogy/app/genealogies/join-applies/{applyId}`;本轮页面不展示未接入的撤销按钮 |
+| G10 待审核列表 | `GET /genealogy/app/genealogies/{genealogyId}/join-applies/pending` |
+| G10 审核 | `PUT /genealogy/app/genealogies/{genealogyId}/join-applies/{applyId}/audit` |
+
+OpenAPI 的申请体仍是 `JsonObject`,页面只使用已有业务能解释的 `realName`、`relation`、`message`,没有臆造邀请码、推荐人层级或多管理员审批字段。本阶段只据此安排字段、状态和动作位置;三页均使用页面内模拟数据与交互,不调用 `appApi`,不进行接口对接。
+
+## 5. 视觉资产
+
+- G08 复用 `g03-create-flow-panel.png` 的完整宣纸表单面,以及 `g06-search-input-wide.png` 的完整输入框皮肤;没有复制近似资产。
+- `application-record-card.png`:1050×360、24 位 RGB、不透明;右下留双审核槽,只供 G10 列表。
+- `application-status-card.png`:1050×360、24 位 RGB、不透明;移除双审核槽,供 G09 列表和 G09/G10 空/失败状态。
+- 主次操作分别使用 `a01-primary-button.png` 与 `a01-secondary-button.png`,CSS 只负责位置、文字和点击层。
+
+## 6. 截图证据
+
+- G08:`screens/runtime/2026-07-14/g-module-audit/applications/01-g08-form-360x800.png`、`02-g08-success-360x800.png`、`03-g08-form-412x915.png`。
+- G09:`04-g09-list-360x800.png`、`05-g09-empty-360x800.png`。
+- G10:`06-g10-list-360x800.png`、`07-g10-empty-360x800.png`、`08-g10-list-412x915.png`。
+- 同画布对照:`09-g08-form-success-comparison.png`、`10-g09-list-empty-comparison.png`、`11-g10-list-empty-comparison.png`。
+
+## 7. Product Design 审计结果
+
+### 强项
+
+1. G08 表单在 360/412 下均完整显示,姓名、关系、说明和提交按钮顺序清楚;提交后仍在 G08 显示成功结果。
+2. G09 的申请状态以审核中、已通过、未通过映射接口枚举;通过项才可进入家谱。
+3. G10 的拒绝/通过使用主次完整位图按钮,动作前有确认弹窗,避免误审。
+4. 三页的空态均留在原路由,没有新增状态页。
+
+### 已修复问题
+
+- P2:第一张共享卡为审核按钮预留了两个槽,放到 G09 和空态时形成假按钮。已生成无按钮槽的状态卡并重新截图,问题消失。
+- P2:运行冒烟最初在面板出现后立即查找原生输入,可能早于 `uni-input` 内部节点渲染。测试改为等待真实输入节点,再填写和点击;真实提交已到达同页成功态。
+
+### 可访问性边界
+
+- 截图可确认主按钮、审核按钮、表单顺序和文字未裁切。
+- G10 审核按钮在 360 下仍有完整卡内点击区域,但最终 Android 真机仍需验证触摸目标、字体放大和读屏标签。
+- 截图不能证明弹窗焦点管理或读屏状态播报,不宣称完整无障碍合规。
+
+## 8. 验证
+
+- `G08-G10-APPLICATION-FLOW-CONTRACT PASS`
+- `G08-G10-APPLICATION-FLOW-RUNTIME-SMOKE PASS`,包含真实控件填写与本地模拟提交
+- `PASS compile audit`
+
+三页仅标记为候选完成,用户集中看样式前不标记为视觉冻结。
diff --git a/docs/design/G11-G12_设置与字辈诗_设计记录.md b/docs/design/G11-G12_设置与字辈诗_设计记录.md
new file mode 100644
index 0000000..31e0255
--- /dev/null
+++ b/docs/design/G11-G12_设置与字辈诗_设计记录.md
@@ -0,0 +1,51 @@
+# G11–G12 家谱设置与字辈诗设计记录
+
+> 日期:2026-07-14
+> 状态:页面候选、同页状态、运行截图与 Product Design 对比审视已完成;标记为 `[~]`,等待用户后续逐页视觉审核。
+
+## 1. 设计边界
+
+- 继续使用项目已冻结的宣纸、朱砂、藏青与古金视觉体系,不照搬外部参考的颜色、卡片或按钮。
+- OpenAPI 只用于确认可设计的功能位置与数据语义,不导入 `appApi`、不新增 API 方法、不进行接口联调。
+- G11 与 G12 的空、失败、成功、编辑状态全部留在原路由,不为同一任务新增页面。
+- G11 不放置“转让管理权”假入口:该动作需要成员选择上下文,当前页面只安排名称、公开范围和访问说明。
+
+## 2. 页面与状态
+
+| 页面 | 核心任务 | 同页状态 |
+| --- | --- | --- |
+| G11 | 编辑家谱名称、公开范围、访问说明 | `loading`、`form`、`success`、`error` |
+| G12 | 查看逐代字辈、批量录入连续字辈 | `loading`、`list`、`empty`、`edit`、`error` |
+
+G11 的公开范围提供“仅成员可见”和“公开可申请”两个明确选项,并给出权限解释。G12 采用外部思维导图可借鉴的逐世代行结构,但视觉表面仍完全使用本项目资产;编辑区保留接口清单所描述的连续 `content` 与“缺失旧世代时停止”策略位置。
+
+## 3. 视觉资产
+
+- 两页复用 `g03-create-flow-panel.png` 作为完整双金线宣纸面板。
+- 输入、字辈行使用 `g06-search-input-wide.png` 完整位图皮肤。
+- 主次操作分别使用 `a01-primary-button.png` 与 `a01-secondary-button.png`。
+- CSS 只负责布局、真实文字和点击层,不绘制卡片背景、边框、圆角或装饰。
+- 现有资产已能覆盖页面,因此本轮没有调用 ImageGen 新增近似资产。
+
+## 4. 截图证据
+
+目录:`screens/runtime/2026-07-14/g-module-audit/settings-poems/`
+
+- 改前基线:`00-g11-before-360x800.png`、`00-g12-before-360x800.png`。
+- G11:`01-g11-form-360x800.png`、`02-g11-success-360x800.png`、`03-g11-form-412x915.png`。
+- G12:`04-g12-list-360x800.png`、`05-g12-empty-360x800.png`、`06-g12-edit-360x800.png`、`07-g12-list-412x915.png`。
+- 同画布对比:`08-g11-before-after-comparison.png`、`09-g12-before-after-comparison.png`。
+
+## 5. Product Design 审视
+
+- G11 相比通用设置壳,信息层级变为“设置目的 → 名称 → 公开范围及权限解释 → 访问说明 → 保存”,不再出现无法完成的管理权转让入口。
+- G12 相比通用详情壳,逐世代字辈可直接扫描,当前字辈使用朱砂强调;空态与编辑态仍保持同一页面语义。
+- 360 × 800 与 412 × 915 下,完整面板、按钮和底部山水均未被裁切;编辑态主次动作层级清楚。
+- 截图不能证明 Android 字体放大、读屏播报和真机触摸区域,留到最终真机验证阶段。
+
+## 6. 验证
+
+- `G11-G12-SETTINGS-POEMS-CONTRACT PASS`
+- `G11-G12-SETTINGS-POEMS-RUNTIME-SMOKE PASS`
+- 页面代码不引用 `@/utils/api.js` 或 `appApi`。
+
diff --git a/docs/design/P00_页面结构与资产清单.md b/docs/design/P00_页面结构与资产清单.md
index f420484..d100229 100644
--- a/docs/design/P00_页面结构与资产清单.md
+++ b/docs/design/P00_页面结构与资产清单.md
@@ -1,6 +1,6 @@
# P00 页面结构与资产清单
-> 状态:55 条最终编号路由与第一版统一视觉母版已落地;A01/A02/A04/A05/A06/G01 两种状态与 G03 `create|ancestor` 已验收;G06 已合并 G07 的三态,最新「朱砂题签」候选只完成初始态截图,结果/无结果同版截图与用户审美确认待补。
+> 状态:54 条最终编号路由已落地;A01/A02/A04/A05/A06/G01 两种状态与 G03 `create|ancestor` 已验收;其余 47 条路由均已有 `[~]` 视觉候选和真实运行截图,等待用户逐页审核。
> 目的:让页面、路由和资产都有唯一、可读、可审计的归属;本文件是 P-00 的执行清单。
## 1. 页面命名规则
@@ -24,17 +24,19 @@
| `pages/auth/a02-login` | A02 账号登录 | `pages/auth/a02-login.vue` | 已迁移;已验收,视觉冻结 |
| `pages/genealogy/g01-my-genealogies` | G01 我的家谱 | `pages/genealogy/g01-my-genealogies.vue` | 已迁移;视觉冻结 |
| `pages/genealogy/g03-create-genealogy` | G03 创建家谱/始祖录入 | `pages/genealogy/g03-create-genealogy.vue` | `step=create|ancestor`;已获用户验收,视觉冻结 |
-| `pages/genealogy/g05-genealogy-overview` | G05 家谱总览 | `pages/genealogy/g05-genealogy-overview.vue` | 已迁移;未验收 |
-| `pages/genealogy/g06-search-genealogies` | G06 公开家谱搜索/结果/无结果 | `pages/genealogy/g06-search-genealogies.vue` | 已收敛 G07;朱砂题签候选已实现,只有初始态新截图,三态复核与用户审美确认待补 |
-| `pages/genealogy/g10-application-review` | G10 管理员入谱审核 | `pages/genealogy/g10-application-review.vue` | 已迁移;未验收 |
-| `pages/tree/t01-tree-overview` | T01 世系树总览 | `pages/tree/t01-tree-overview.vue` | 已迁移;未验收 |
-| `pages/tree/t03-member-profile` | T03 成员档案 | `pages/tree/t03-member-profile.vue` | 已迁移;未验收 |
+| `pages/genealogy/g05-genealogy-overview` | G05 家谱总览 | `pages/genealogy/g05-genealogy-overview.vue` | `loading|ready|empty|error`;视觉候选已实现,待集中审美确认 |
+| `pages/genealogy/g06-search-genealogies` | G06 公开家谱搜索/结果/无结果 | `pages/genealogy/g06-search-genealogies.vue` | 已收敛 G07;朱砂题签三态候选已截图,待集中审美确认 |
+| `pages/genealogy/g08-join-application` | G08 申请加入家谱 | `pages/genealogy/g08-join-application.vue` | `form|success|error`;本地模拟提交已验证,待集中审美确认 |
+| `pages/genealogy/g09-my-applications` | G09 我的申请 | `pages/genealogy/g09-my-applications.vue` | `loading|list|empty|error`;待集中审美确认 |
+| `pages/genealogy/g10-application-review` | G10 管理员入谱审核 | `pages/genealogy/g10-application-review.vue` | `loading|list|empty|error`;待集中审美确认 |
+| `pages/tree/t01-tree-overview` | T01 世系树总览 | `pages/tree/t01-tree-overview.vue` | 已收敛 T02 四态;视觉候选待审 |
+| `pages/tree/t03-member-profile` | T03 成员档案 | `pages/tree/t03-member-profile.vue` | 详情/失败候选待审 |
| `pages/family/f01-family-feed` | F01 家族动态 | `pages/family/f01-family-feed.vue` | 已迁移;未验收 |
| `pages/family/f02-publish-feed` | F02 发布动态 | `pages/family/f02-publish-feed.vue` | 已迁移;未验收 |
| `pages/notification/n01-message-center` | N01 消息中心 | `pages/notification/n01-message-center.vue` | 已迁移;未验收 |
| `pages/profile/m01-profile-home` | M01 我的首页 | `pages/profile/m01-profile-home.vue` | 已迁移;未验收 |
-上述表仅保留首批迁移的历史背景;当前最终 55 路由、文件存在性和中文编号注释的唯一合同是 `tests/full-page-visual-contract.ps1`。临时 `content-list-skeleton` 已由谱文、相册、礼仪、备忘录和字辈诗最终页面替代并移除。
+上述表仅保留首批迁移的历史背景;当前最终 54 路由、文件存在性和中文编号注释的唯一合同是 `tests/full-page-visual-contract.ps1`。临时 `content-list-skeleton` 已由谱文、相册、礼仪、备忘录和字辈诗最终页面替代并移除。
迁移要求:同一轮更新页面文件、`pages.json`、所有跳转路径、测试和中文文件头注释;未完成全部引用更新时,不得删除旧路径。
@@ -66,9 +68,12 @@ static/assets/
opaque/
g01-empty-panel.png
g03-create-flow-panel.png
+ g05-overview-surface.png
g06-search-title-strip.png
g06-search-input-wide.png
g06-search-button.png
+ application-record-card.png
+ application-status-card.png
transparent/
tree/
opaque/
@@ -88,7 +93,7 @@ static/assets/
| --- | --- | --- | --- | --- |
| `foundation/opaque/auth-page-paper.jpg` | opaque / 750×1334 | 认证页纸纹底色 | A01、A02、A04、A05、A06 | 保留 |
| `foundation/opaque/auth-header.png` | opaque / 750×196 | 认证页红色页头 | A01、A02、A04、A05、A06 | 保留 |
-| `foundation/opaque/page-paper.jpg` | opaque / 852×1846 | 根页宣纸底图 | G01、G06 | 保留 |
+| `foundation/opaque/page-paper.jpg` | opaque / 852×1846 | 根页宣纸底图 | G、T、F、R、N、M 非认证页面 | 保留 |
| `foundation/opaque/root-header-cinnabar.jpg` | opaque / 720×184 | 根页朱砂页头 | `PageHeader` | 保留 |
| `foundation/transparent/auth-ink-scenery.png` | transparent / 750×1334 | 认证页淡墨叠层 | A01、A02、A04、A05、A06 | 保留 |
| `foundation/transparent/auth-title-cloud.png` | transparent / 200×120 | 认证标题右侧云纹 | A01、A02、A04、A05、A06 | 保留 |
@@ -106,11 +111,14 @@ static/assets/
| `foundation/transparent/notice.png` | transparent / 96×96 | 通知图标 | `PageHeader` | 保留 |
| `foundation/transparent/chevron-right.png` | transparent / 96×96 | 返回与列表箭头 | A02、A04、A05、A06、`GenealogyCard` | 保留 |
| `modules/genealogy/opaque/g01-empty-panel.png` | opaque / 1122×1402 | 无家谱空态完整宣纸卡,双金线、角饰、云纹与下沿山水 | G01 `state=empty` | 保留;由 ImageGen 生成,已获用户验收 |
-| `modules/genealogy/opaque/g03-create-flow-panel.png` | opaque / 1122×1500 | 创建流程完整宣纸表单面板,双金线、回纹角饰、云纹与下沿淡墨山水 | G03 `step=create|ancestor` | 保留;由 ImageGen 生成,已获用户验收 |
+| `modules/genealogy/opaque/g03-create-flow-panel.png` | opaque / 1122×1500 | 完整宣纸任务面板,双金线、回纹角饰、云纹与下沿淡墨山水 | G03、G08、G11、G12、T01、T03 至 T06、T08、F/R/N/M 表单/详情/设置/状态 | 保留;由 ImageGen 生成,G03 已获用户验收,复用页待审 |
+| `modules/genealogy/opaque/g05-overview-surface.png` | opaque / 1122×1506 | 家谱总览完整视觉表面,含墨蓝谱名区、四宫格宣纸槽、金线近况分隔与底部访问说明面 | G05 `loading|ready|empty|error` | 保留;由 ImageGen 参考 G05 改前截图生成,页面只叠放真实文字和点击层;待集中审美确认 |
| `modules/genealogy/opaque/g06-search-title-strip.png` | opaque / 1122×220 | 朱砂题签完整视觉面,含古金边饰与云纹,不烘焙文字或印玺 | G06 顶部检索题签 | 保留;用户选定 ImageGen 第 3 稿方向,Vue 叠放真实 `brand-seal.png` 与标题文字 |
-| `modules/genealogy/opaque/g06-search-input-wide.png` | opaque / 1120×248 | 宽版独立宣纸输入框完整皮肤,含古金双线与角饰 | G06 真实输入框底层 | 保留;真实原生输入控件叠放其上 |
+| `modules/genealogy/opaque/g06-search-input-wide.png` | opaque / 1120×248 | 宽版独立宣纸字段完整皮肤,含古金双线与角饰 | G、T 与 F/R/N/M 输入、详情段落、设置行 | 保留;真实文字与控件叠放其上 |
| `modules/genealogy/opaque/g06-search-input.png` | opaque / 720×248 | 早期窄版输入框完整皮肤 | 当前无引用 | 已停用;仅因用户要求停止工作而保留,恢复工作后需在引用扫描通过且用户允许时删除 |
| `modules/genealogy/opaque/g06-search-button.png` | opaque / 300×132 | 独立朱砂搜索按钮完整皮肤,含古金双线与角饰 | G06 真实搜索点击控件底层 | 保留;由 ImageGen 生成,真实点击控件与文本叠放其上 |
+| `modules/genealogy/opaque/application-record-card.png` | opaque / 1050×360 | 带右下双审核槽的完整申请记录卡 | G10 待审核申请 | 保留;由 ImageGen 参考 G09/G10 改前截图生成,按钮另用完整位图叠放 |
+| `modules/genealogy/opaque/application-status-card.png` | opaque / 1050×360 | 无按钮槽的完整信息状态卡 | G09/G10、T01/T07/T08、F/R/N/M 列表/时间轴/通知/状态 | 保留;由 ImageGen 精确移除审核槽,避免无操作状态出现假按钮 |
| `foundation/transparent/meta-location.png` | transparent / 96×96 | 地点元信息 | G01、`GenealogyCard` | 保留 |
| `foundation/transparent/meta-member.png` | transparent / 96×96 | 成员元信息 | G01、`GenealogyCard` | 保留 |
| `foundation/transparent/meta-admin.png` | transparent / 96×96 | 管理员元信息 | G01 | 保留 |
diff --git a/docs/design/T01-T08_世系与成员_设计记录.md b/docs/design/T01-T08_世系与成员_设计记录.md
new file mode 100644
index 0000000..b80a8ec
--- /dev/null
+++ b/docs/design/T01-T08_世系与成员_设计记录.md
@@ -0,0 +1,46 @@
+# T01–T08 世系与成员设计记录
+
+> 日期:2026-07-14
+> 状态:T02 已收敛至 T01;T01、T03–T08 共 7 个页面候选、运行截图和 Product Design 审视完成,统一标记 `[~]`。
+
+## 1. 信息架构
+
+- T01 是阅读世系的唯一页面,`tree|landscape|empty|error` 为同页状态;T02 路由、文件和目录条目已删除。
+- T03 负责成员档案;T04 新增亲属、T05 编辑成员、T06 维护关系分别保留独立任务页,但共享同一高质量表单母版。
+- T07 是成员检索目录;T08 将隐私、离世纪念和无权限保留为同一路由的三个状态,不拆成重复页面。
+- 接口文档仅用于确定成员字段、关系冲突、隐私和状态位置;所有候选使用页面内模拟数据,不调用 `appApi`。
+
+## 2. 视觉体系
+
+- 延续已确认的宣纸、朱砂、古金与墨褐体系。
+- 世系画布和成员表单复用 `g03-create-flow-panel.png` 完整宣纸面;成员节点/字段使用 `g06-search-input-wide.png`;信息条、目录卡和状态卡使用 `application-status-card.png`。
+- 主次操作使用 `a01-primary-button.png`/`a01-secondary-button.png`,CSS 仅负责布局、文字和点击层。
+- 现有完整位图已覆盖需要,因此没有生成语义重复的新资产。
+
+## 3. Product Design 截图审视
+
+### T01
+
+目录:`screens/runtime/2026-07-14/t01-audit/`
+
+- 候选:`04-t01-tree-360x800.png`、`05-t01-landscape-360x800.png`、`06-t01-empty-360x800.png`、`07-t01-error-360x800.png`、`08-t01-tree-412x915.png`。
+- 对比:`09-t01-before-after-comparison.png`。
+- 首轮状态截图发现状态文案位于 1180rpx 横向画布中导致右侧裁切;先更新契约要求 `tree-canvas--state`,再将非树状态画布收窄到当前视口,重新截图后已完整显示。
+
+### T03–T08
+
+目录:`screens/runtime/2026-07-14/t-module-audit/`
+
+- 关键候选:`01-t03-detail-360x800.png` 至 `13-t07-list-412x915.png`。
+- 同画布对比:`14-t03-comparison.png`、`15-t04-t06-comparison.png`、`16-t07-t08-comparison.png`。
+- 360/412 下表单字段、成员卡、状态切换和主次操作均未裁切;T06 冲突动作与 T08 三种权限状态层级清楚。
+
+## 4. 验证
+
+- `T01-TREE-STATE-CONTRACT PASS`
+- `T01-TREE-STATE-RUNTIME-SMOKE PASS`
+- `T03-T08-MEMBER-FLOW-CONTRACT PASS`
+- `T03-T08-MEMBER-FLOW-RUNTIME-SMOKE PASS`
+- `PASS compile audit`
+
+H5 截图不能替代 Android 真机字体放大、读屏和触摸目标验证;这些留到全量候选后的设备复核。
diff --git a/docs/design/screens/handoff/2026-07-13/A01-360x800.png b/docs/design/screens/handoff/2026-07-13/A01-360x800.png
new file mode 100644
index 0000000..539844c
Binary files /dev/null and b/docs/design/screens/handoff/2026-07-13/A01-360x800.png differ
diff --git a/docs/design/screens/handoff/2026-07-13/A02-after-360x800.png b/docs/design/screens/handoff/2026-07-13/A02-after-360x800.png
new file mode 100644
index 0000000..98179ba
Binary files /dev/null and b/docs/design/screens/handoff/2026-07-13/A02-after-360x800.png differ
diff --git a/docs/design/screens/handoff/2026-07-14/A04-after-balance-360x800.png b/docs/design/screens/handoff/2026-07-14/A04-after-balance-360x800.png
new file mode 100644
index 0000000..909d71c
Binary files /dev/null and b/docs/design/screens/handoff/2026-07-14/A04-after-balance-360x800.png differ
diff --git a/docs/design/screens/handoff/2026-07-14/A05-after-360x800.png b/docs/design/screens/handoff/2026-07-14/A05-after-360x800.png
new file mode 100644
index 0000000..589177b
Binary files /dev/null and b/docs/design/screens/handoff/2026-07-14/A05-after-360x800.png differ
diff --git a/docs/design/screens/handoff/2026-07-14/A06-after-360x800.png b/docs/design/screens/handoff/2026-07-14/A06-after-360x800.png
new file mode 100644
index 0000000..21e8317
Binary files /dev/null and b/docs/design/screens/handoff/2026-07-14/A06-after-360x800.png differ
diff --git a/docs/design/screens/handoff/2026-07-14/G01-default-after-360x800.png b/docs/design/screens/handoff/2026-07-14/G01-default-after-360x800.png
new file mode 100644
index 0000000..f01e9cd
Binary files /dev/null and b/docs/design/screens/handoff/2026-07-14/G01-default-after-360x800.png differ
diff --git a/docs/design/screens/handoff/2026-07-14/G03-create-after-360x800.png b/docs/design/screens/handoff/2026-07-14/G03-create-after-360x800.png
new file mode 100644
index 0000000..d1e3fd2
Binary files /dev/null and b/docs/design/screens/handoff/2026-07-14/G03-create-after-360x800.png differ
diff --git a/docs/design/screens/handoff/2026-07-14/G06-selected-strip-final-empty-360x800.png b/docs/design/screens/handoff/2026-07-14/G06-selected-strip-final-empty-360x800.png
new file mode 100644
index 0000000..76b2f62
Binary files /dev/null and b/docs/design/screens/handoff/2026-07-14/G06-selected-strip-final-empty-360x800.png differ
diff --git a/docs/design/screens/handoff/2026-07-14/G06-selected-strip-final-initial-recheck-360x800.png b/docs/design/screens/handoff/2026-07-14/G06-selected-strip-final-initial-recheck-360x800.png
new file mode 100644
index 0000000..c94f824
Binary files /dev/null and b/docs/design/screens/handoff/2026-07-14/G06-selected-strip-final-initial-recheck-360x800.png differ
diff --git a/docs/design/screens/handoff/2026-07-14/G06-selected-strip-final-results-360x800.png b/docs/design/screens/handoff/2026-07-14/G06-selected-strip-final-results-360x800.png
new file mode 100644
index 0000000..235eb71
Binary files /dev/null and b/docs/design/screens/handoff/2026-07-14/G06-selected-strip-final-results-360x800.png differ
diff --git a/docs/design/screens/handoff/2026-07-14/all-page-candidates/00-family-contact-sheet.png b/docs/design/screens/handoff/2026-07-14/all-page-candidates/00-family-contact-sheet.png
new file mode 100644
index 0000000..7ac79f0
Binary files /dev/null and b/docs/design/screens/handoff/2026-07-14/all-page-candidates/00-family-contact-sheet.png differ
diff --git a/docs/design/screens/handoff/2026-07-14/all-page-candidates/00-profile-notification-contact-sheet.png b/docs/design/screens/handoff/2026-07-14/all-page-candidates/00-profile-notification-contact-sheet.png
new file mode 100644
index 0000000..3eab5e4
Binary files /dev/null and b/docs/design/screens/handoff/2026-07-14/all-page-candidates/00-profile-notification-contact-sheet.png differ
diff --git a/docs/design/screens/handoff/2026-07-14/all-page-candidates/00-records-contact-sheet.png b/docs/design/screens/handoff/2026-07-14/all-page-candidates/00-records-contact-sheet.png
new file mode 100644
index 0000000..7eab8b3
Binary files /dev/null and b/docs/design/screens/handoff/2026-07-14/all-page-candidates/00-records-contact-sheet.png differ
diff --git a/docs/design/screens/handoff/2026-07-14/g-module-audit/applications/01-g08-form-360x800.png b/docs/design/screens/handoff/2026-07-14/g-module-audit/applications/01-g08-form-360x800.png
new file mode 100644
index 0000000..d8c819e
Binary files /dev/null and b/docs/design/screens/handoff/2026-07-14/g-module-audit/applications/01-g08-form-360x800.png differ
diff --git a/docs/design/screens/handoff/2026-07-14/g-module-audit/applications/04-g09-list-360x800.png b/docs/design/screens/handoff/2026-07-14/g-module-audit/applications/04-g09-list-360x800.png
new file mode 100644
index 0000000..dc13e32
Binary files /dev/null and b/docs/design/screens/handoff/2026-07-14/g-module-audit/applications/04-g09-list-360x800.png differ
diff --git a/docs/design/screens/handoff/2026-07-14/g-module-audit/applications/06-g10-list-360x800.png b/docs/design/screens/handoff/2026-07-14/g-module-audit/applications/06-g10-list-360x800.png
new file mode 100644
index 0000000..b8a4bed
Binary files /dev/null and b/docs/design/screens/handoff/2026-07-14/g-module-audit/applications/06-g10-list-360x800.png differ
diff --git a/docs/design/screens/handoff/2026-07-14/g-module-audit/g05/01-g05-ready-360x800.png b/docs/design/screens/handoff/2026-07-14/g-module-audit/g05/01-g05-ready-360x800.png
new file mode 100644
index 0000000..b9dd1ce
Binary files /dev/null and b/docs/design/screens/handoff/2026-07-14/g-module-audit/g05/01-g05-ready-360x800.png differ
diff --git a/docs/design/screens/handoff/2026-07-14/g-module-audit/settings-poems/01-g11-form-360x800.png b/docs/design/screens/handoff/2026-07-14/g-module-audit/settings-poems/01-g11-form-360x800.png
new file mode 100644
index 0000000..5ef55ed
Binary files /dev/null and b/docs/design/screens/handoff/2026-07-14/g-module-audit/settings-poems/01-g11-form-360x800.png differ
diff --git a/docs/design/screens/handoff/2026-07-14/g-module-audit/settings-poems/04-g12-list-360x800.png b/docs/design/screens/handoff/2026-07-14/g-module-audit/settings-poems/04-g12-list-360x800.png
new file mode 100644
index 0000000..00eb100
Binary files /dev/null and b/docs/design/screens/handoff/2026-07-14/g-module-audit/settings-poems/04-g12-list-360x800.png differ
diff --git a/docs/design/screens/handoff/2026-07-14/root-pages-audit/01-f01-list-360x800.png b/docs/design/screens/handoff/2026-07-14/root-pages-audit/01-f01-list-360x800.png
new file mode 100644
index 0000000..ecd44ac
Binary files /dev/null and b/docs/design/screens/handoff/2026-07-14/root-pages-audit/01-f01-list-360x800.png differ
diff --git a/docs/design/screens/handoff/2026-07-14/root-pages-audit/03-f02-form-360x800.png b/docs/design/screens/handoff/2026-07-14/root-pages-audit/03-f02-form-360x800.png
new file mode 100644
index 0000000..4c2983e
Binary files /dev/null and b/docs/design/screens/handoff/2026-07-14/root-pages-audit/03-f02-form-360x800.png differ
diff --git a/docs/design/screens/handoff/2026-07-14/root-pages-audit/05-n01-list-360x800.png b/docs/design/screens/handoff/2026-07-14/root-pages-audit/05-n01-list-360x800.png
new file mode 100644
index 0000000..a4665e3
Binary files /dev/null and b/docs/design/screens/handoff/2026-07-14/root-pages-audit/05-n01-list-360x800.png differ
diff --git a/docs/design/screens/handoff/2026-07-14/root-pages-audit/07-m01-ready-360x800.png b/docs/design/screens/handoff/2026-07-14/root-pages-audit/07-m01-ready-360x800.png
new file mode 100644
index 0000000..51be51f
Binary files /dev/null and b/docs/design/screens/handoff/2026-07-14/root-pages-audit/07-m01-ready-360x800.png differ
diff --git a/docs/design/screens/handoff/2026-07-14/t-module-audit/01-t03-detail-360x800.png b/docs/design/screens/handoff/2026-07-14/t-module-audit/01-t03-detail-360x800.png
new file mode 100644
index 0000000..1834623
Binary files /dev/null and b/docs/design/screens/handoff/2026-07-14/t-module-audit/01-t03-detail-360x800.png differ
diff --git a/docs/design/screens/handoff/2026-07-14/t-module-audit/03-t04-form-360x800.png b/docs/design/screens/handoff/2026-07-14/t-module-audit/03-t04-form-360x800.png
new file mode 100644
index 0000000..9c74464
Binary files /dev/null and b/docs/design/screens/handoff/2026-07-14/t-module-audit/03-t04-form-360x800.png differ
diff --git a/docs/design/screens/handoff/2026-07-14/t-module-audit/04-t05-form-360x800.png b/docs/design/screens/handoff/2026-07-14/t-module-audit/04-t05-form-360x800.png
new file mode 100644
index 0000000..1a9594f
Binary files /dev/null and b/docs/design/screens/handoff/2026-07-14/t-module-audit/04-t05-form-360x800.png differ
diff --git a/docs/design/screens/handoff/2026-07-14/t-module-audit/05-t06-form-360x800.png b/docs/design/screens/handoff/2026-07-14/t-module-audit/05-t06-form-360x800.png
new file mode 100644
index 0000000..47e64f2
Binary files /dev/null and b/docs/design/screens/handoff/2026-07-14/t-module-audit/05-t06-form-360x800.png differ
diff --git a/docs/design/screens/handoff/2026-07-14/t-module-audit/07-t07-list-360x800.png b/docs/design/screens/handoff/2026-07-14/t-module-audit/07-t07-list-360x800.png
new file mode 100644
index 0000000..0b596f4
Binary files /dev/null and b/docs/design/screens/handoff/2026-07-14/t-module-audit/07-t07-list-360x800.png differ
diff --git a/docs/design/screens/handoff/2026-07-14/t-module-audit/09-t08-privacy-360x800.png b/docs/design/screens/handoff/2026-07-14/t-module-audit/09-t08-privacy-360x800.png
new file mode 100644
index 0000000..30a3547
Binary files /dev/null and b/docs/design/screens/handoff/2026-07-14/t-module-audit/09-t08-privacy-360x800.png differ
diff --git a/docs/design/screens/handoff/2026-07-14/t01-audit/04-t01-tree-360x800.png b/docs/design/screens/handoff/2026-07-14/t01-audit/04-t01-tree-360x800.png
new file mode 100644
index 0000000..0aa2a44
Binary files /dev/null and b/docs/design/screens/handoff/2026-07-14/t01-audit/04-t01-tree-360x800.png differ
diff --git a/docs/design/视觉设计交接手册.md b/docs/design/视觉设计交接手册.md
index 4941110..88ea4e4 100644
--- a/docs/design/视觉设计交接手册.md
+++ b/docs/design/视觉设计交接手册.md
@@ -9,42 +9,33 @@
必须保留已有未提交改动;不使用 worktree 或多代理;不执行 `git add`、`git commit`、`git push`、上传、`git reset` 或 `git checkout`。A01、A02、A04、A05、A06、G01、G03 的可见效果已获用户验收并冻结,不能以重构或顺手优化的名义改变。G07 是 G06 的页面内状态,不得重新建为独立页。
-当前唯一应向用户确认的候选是 G06:用户选定最近 ImageGen 第 3 稿的「朱砂题签 + 宽输入框 + 搜索按钮」方向,通用印玺已替换为项目真实 `brand-seal.png`。最后实际运行证据只有初始态 `docs/design/screens/runtime/2026-07-14/G06-selected-strip-final-initial-360x800.png`;同版结果态和无结果态截图未完成,G06 也**未验收**。不要把旧 `G06-no-panel-*` 截图当作当前最终版本。先请用户看当前初始态并决定是否继续;用户要求继续 G06 时,先截图审视,再补三态和验证;用户明确验收后,才继续 T02→T01(除非用户指定新优先级)。
+用户已授权先完成全部页面候选、后集中审核。54 条最终路由均已覆盖:7 个已验收冻结,其余 47 个统一标 `[~]`;不得把候选写成用户已验收。下一阶段由用户按规划逐页勾选,接口只作功能布局参考,本轮没有对接。
新环境必须可用并实际调用:`product-design:index`、`product-design:audit`、`imagegen`、`superpowers:test-driven-development`、`superpowers:systematic-debugging`、`superpowers:verification-before-completion`。没有这些能力时,先安装/启用同等能力,不得假装已经完成设计审视或位图生成。
## 1. 当前停点:先看这一节
-项目已有 55 条最终编号路由,第一版都可以浏览;这不等于 55 个页面已完成视觉验收。
+项目已有 54 条最终编号路由;T02 已收敛到 T01 同页状态。这不等于 54 个页面已完成视觉验收。
-- 用户已经验收的视觉基准有六个:**A01 启动/登录引导**、**A02 账号登录**、**A04 注册账号**、**A05 重置密码**、**A06 登录状态**、**G01 我的家谱**。它们的可见效果已冻结。
-- **A02 账号登录**已经完成资产化重做、功能回归和多尺寸截图,并于 2026-07-14 获用户审美验收。A03 已删除;A02 的短信 Tab 是唯一手机号验证码登录入口。A04、A05、A06 均于同日完成独立重做并获用户审美验收;G02 已按用户确认合并为 G01 的 `?state=empty` 并获用户审美确认;G04 已合并为 G03 的 `?step=ancestor`,G03 双步骤已获用户继续授权通过;G07 已合并为 G06 初始/结果/无结果状态。G06 曾被指出页头层级、伪控件和大面板截图感;用户最后选择最近 ImageGen 第 3 稿,当前以朱砂题签、真实品牌谱印、独立宽输入框和搜索按钮实现。最后候选只完成初始态新截图,结果态/无结果态的同版截图和用户审美确认尚未完成。
-- 其余模块的页面仍属于后续视觉设计任务;其中不少页面目前由 `components/ModulePage.vue` 与 `data/page-catalog.js` 提供第一版可浏览壳。这个壳是过渡方案,不是最终 UI。
+- 用户已经验收的视觉基准有七个:**A01 启动/登录引导**、**A02 账号登录**、**A04 注册账号**、**A05 重置密码**、**A06 登录状态**、**G01 我的家谱**、**G03 创建家谱**。它们的可见效果已冻结。
+- **A02 账号登录**已经完成资产化重做、功能回归和多尺寸截图,并于 2026-07-14 获用户审美验收。A03 已删除;A02 的短信 Tab 是唯一手机号验证码登录入口。A04、A05、A06 均于同日完成独立重做并获用户审美验收;G02 已按用户确认合并为 G01 的 `?state=empty`;G04 已合并为 G03 的 `?step=ancestor`;G07 已合并为 G06 的初始/结果/无结果状态。G06 三态候选截图和内部审视已经完成,但尚未获得用户视觉验收。
+- G05、G06、G08–G12、T01、T03–T08、F01–F10、R01–R11、N01–N02、M01–M10 已完成候选截图和审视;共享 `ModulePage.vue` 已升级为全位图高规格母版,不再是旧 CSS 过渡壳。
- 不提交、不推送、不上传 Git;由用户自行处理版本库操作。
-下一位执行者先读取当前停点与已验收页面,再向用户展示 **G06 当前候选的初始态** 并等待反馈:
-
-- `docs/design/screens/runtime/2026-07-14/A05-after-360x800.png`
-- `docs/design/screens/runtime/2026-07-14/A05-after-412x915.png`
-- `docs/design/screens/runtime/2026-07-14/A06-after-360x800.png`
-- `docs/design/screens/runtime/2026-07-14/A06-after-412x915.png`
-- `docs/design/screens/runtime/2026-07-14/A06-restricted-360x800.png`
-- `docs/design/screens/runtime/2026-07-14/G06-selected-strip-final-initial-360x800.png`
-
-旧 `G06-no-panel-*` 图是被用户否定后各轮尝试的历史证据,只能帮助理解迭代原因,不能用于当前验收。用户若要求调整,只修改对应页面状态并重新截图、复核;当前 A01、A02、A04、A05、A06、G01 两种状态与 G03 `create|ancestor` 均已明确通过。G06 当前候选的初始态待用户确认,结果态/无结果态的新截图待补;不得把 G06 写成已验收。只有用户明确通过 G06 或明确要求跳过它,下一项才按 T02→T01 状态收敛执行。
+下一位执行者先读取当前停点与已验收页面,然后按 `docs/规划.md` 的 `[~]` 清单协助用户逐页审核。默认只从 `docs/design/视觉证据索引.md` 打开一张代表图或一张状态联系表;多尺寸、before/after 与历史废稿仅在发现问题时展开。旧 `G06-no-panel-*` 图只能帮助理解迭代原因,不能用于当前验收。全部 47 个候选都等待用户逐页确认,不再按模块批量推进新页面。
## 1.1 迁移前必须保留的文件
本手册、G06 最终候选资产和截图工具均是接管所需文件;换电脑前,用户需在自行提交/上传时包含它们,或完整复制当前工作区。我没有执行任何 Git 暂存、提交、推送或上传操作。
-至少要保留:`docs/design/视觉设计交接手册.md`、`docs/交接记录.md`、`scripts/capture-chrome-page.js`、G06 页面/资产/测试、`docs/design/screens/runtime/2026-07-14/G06-selected-strip-final-initial-360x800.png`、A02 页面/资产/测试、`docs/design/screens/runtime/2026-07-13/` 的运行证据,以及现有计划与设计记录。只复制已提交的旧版本会丢失当前停点。
+至少要保留:`docs/design/视觉设计交接手册.md`、`docs/交接记录.md`、`docs/design/视觉证据索引.md`、`scripts/capture-chrome-page.js`、全部页面/资产/测试、`docs/design/screens/runtime/` 的运行证据,以及现有计划与设计记录。只复制已提交的旧版本会丢失当前停点。
## 2. 必读文件与唯一职责
| 文件 | 负责什么 |
| --- | --- |
| `AGENTS.md` | 最小修改、保护既有未提交内容、验证后再交付的项目规则。 |
-| `docs/规划.md` | 55 条独立路由的范围、模块顺序和“完成”的定义。 |
+| `docs/规划.md` | 54 条独立路由的范围、模块顺序和“完成”的定义。 |
| `docs/design/D1_安卓视觉规范与页面壳.md` | Android 页面、资产、布局与中文注释的硬约束。 |
| `docs/design/P00_页面结构与资产清单.md` | 路由、页面文件和资产台账的唯一清单。 |
| `docs/superpowers/plans/2026-07-13-product-design-visual-refinement.md` | 已批准的分模块视觉精修计划和验收顺序。 |
@@ -85,17 +76,7 @@
### 已保存的运行证据
-目录:`docs/design/screens/runtime/2026-07-13/`
-
-| 文件 | 状态 |
-| --- | --- |
-| `A02-before-360x800.png` | 改造前基线。 |
-| `A02-after-320x568.png` | 小屏账号密码态;允许纵向滚动,不允许横向裁切。 |
-| `A02-after-360x640.png` | 中屏账号密码态。 |
-| `A02-after-360x800.png` | 主对比尺寸。 |
-| `A02-after-412x915.png` | 大屏账号密码态。 |
-| `A02-sms-360x800.png` | 真实切换后的短信验证码态。 |
-| `A02-before-after-360x800.png` | 左旧右新的并排对比。 |
+默认只查看 `docs/design/screens/handoff/2026-07-13/A02-after-360x800.png`。小屏、大屏、短信状态和 before/after 证据保存在项目外完整归档中,按需展开,不在交接正文连续罗列。
### 通过/未通过的界线
@@ -137,7 +118,7 @@ node scripts/capture-chrome-page.js `
360 800
```
-截图只作为 `docs/design/screens/runtime/<日期>/` 下的设计证据,绝不能放回 `static/assets/` 作为运行资源。每个代表页面至少做 360 × 800;模块代表页还要做 320 × 568、360 × 640、360 × 800、412 × 915。最终 Android/HBuilderX 截图仍需补做,H5 Chrome 截图不能替代它。
+新截图先保存到已忽略的 `docs/design/screens/runtime/<日期>/`,绝不能放回 `static/assets/` 作为运行资源。每个代表页面至少做 360 × 800;只有出现比例风险或用户要求时再展开 320 × 568、360 × 640、412 × 915,多状态页面优先合成一张联系表。用户确认需要长期交接时,只把代表图复制到 `docs/design/screens/handoff/`。最终 Android/HBuilderX 截图仍需补做,H5 Chrome 截图不能替代它。
## 6. 后续执行顺序与每轮产物
@@ -145,19 +126,11 @@ node scripts/capture-chrome-page.js `
1. A02 与 A04 均已通过;不因后续页面改动而触碰其可见效果。
2. 若用户提出明确调整:只在对应页面修正,先调整对应契约测试,再改页面/资产,重新截图复核。
-3. A05、A06 与 G01 空状态均已通过并完成状态同步;G04 已合并为 G03 `step=ancestor`,该双步骤已获用户通过;G07 已合并为 G06 三态。G06 当前朱砂题签候选只完成初始态新截图,尚待结果/无结果截图、审视和用户审美确认。
+3. A05、A06 与 G01 空状态均已通过并完成状态同步;G04 已合并为 G03 `step=ancestor`,该双步骤已获用户通过;G07 已合并为 G06 三态。G06 三态候选和内部审视已完成,仍待用户视觉确认。
-### 其后的模块顺序
+### 当前唯一顺序:逐页视觉审核
-1. **账号 A04--A06**:以已验收 A02 为认证样板,但每个页面保留各自的任务与状态,不能直接复制表单。绑定手机号以后归个人中心安全设置的独立入口;微信授权取消、失败、受限归 A06。
-2. **家谱 G03、G05--G12**:G07→G06 搜索流程已收敛;先由用户审美确认 G06 当前候选,并补齐同版三态截图;之后再推进家谱概览、世代字、申请与设置。用户明确授权连续推进时,先执行 T02→T01 状态收敛。
-3. **世系树 T01--T08**:先建立树、成员档案、关系编辑三类代表页。
-4. **家族内容 F01--F10**:动态、文章、相册、媒体上传分别建立内容档案式层级。
-5. **人物记录 R01--R11**:人物档案、礼仪活动、成长时间线先定样板。
-6. **通知 N01--N02**:区分未读、已读、时间和详情层级,不只依赖颜色。
-7. **我的 M01--M10**:个人身份首页与安全设置先做,后续设置页按统一行式结构展开。
-
-`ModulePage.vue`/`page-catalog.js` 中属于本轮模块的临时入口,必须在同一轮被真实页面替换并移除相应依赖;不得保留“新旧两套入口”或把通用壳伪称为精修完成。
+54 条路由候选已经全部覆盖。用户从 `docs/规划.md` 指定或按清单顺序审核页面;只有用户明确通过才改 `[x]`,要求返工则改 `[!]` 并只修改对应页面。接口、Android 打包和真机复核均留在视觉审核之后。
### 每个模块的固定工作流
@@ -174,7 +147,7 @@ node scripts/capture-chrome-page.js `
| 能力/技能 | 何时使用 | 项目中的正确做法 |
| --- | --- | --- |
-| `product-design:index`、`product-design:audit` | 审视、评价或设计一个已运行页面/流程时;接管 G06 后的第一项视觉工作也必须使用。 | 先拿到真实路由截图,再依据 A01/G01 与页面任务写审视结论;不要靠源码猜好不好看。 |
+| `product-design:index`、`product-design:audit` | 审视、评价或设计一个已运行页面/流程时。 | 先拿到真实路由截图,再依据 A01/G01 与页面任务写审视结论;不要靠源码猜好不好看。 |
| Product Design 的 `user-context`、`get-context`、`ideate`、`image-to-code`、Design QA 流程 | 需要探索方向、选择视觉方案、将已选样稿落地、或交付前比对时。 | 有明确视觉真源时先忠实落地;没有真源且需要新方向时先给可比较方案,选定后再实现;最后在 `design-qa.md` 诚实记录通过或阻塞。 |
| `imagegen` | 现有资产无法承担完整视觉面时。 | 先用 A01/G01 实图作为参考,明确输出是完整不透明面板还是透明叠加件;检查实际尺寸/Alpha 后再放入项目。不能用截图代替资产。 |
| `superpowers:brainstorming` 与 `superpowers:writing-plans` | 新模块或会改变页面行为的创作工作开始前。 | 先写清用户目标、交互和验收,不以“尽快”跳过设计决定。 |
diff --git a/docs/design/视觉证据索引.md b/docs/design/视觉证据索引.md
new file mode 100644
index 0000000..6a14a14
--- /dev/null
+++ b/docs/design/视觉证据索引.md
@@ -0,0 +1,64 @@
+# 视觉证据索引
+
+> 本仓库只保留低负担交接证据:每页一张代表图,复杂模块使用联系表。完整 before/after、多尺寸、历史废稿和全部运行截图保存在项目外本地归档,不进入 Git。
+
+## 完整本地归档
+
+Windows 路径:`C:\Users\Rain\Desktop\job\jiapuapp-design-evidence-archive-2026-07-15`
+
+归档内的 `design-full/` 是精简前完整 `docs/design/`,`tmp/` 是 ImageGen 与调试临时源文件。新电脑默认不需要这份归档;只有追溯历史决策或检查旧尺寸时才单独复制。
+
+## 已验收视觉基准
+
+- A01:[启动/登录引导](screens/handoff/2026-07-13/A01-360x800.png)
+- A02:[账号登录](screens/handoff/2026-07-13/A02-after-360x800.png)
+- A04:[注册账号](screens/handoff/2026-07-14/A04-after-balance-360x800.png)
+- A05:[重置密码](screens/handoff/2026-07-14/A05-after-360x800.png)
+- A06:[登录状态](screens/handoff/2026-07-14/A06-after-360x800.png)
+- G01:[我的家谱](screens/handoff/2026-07-14/G01-default-after-360x800.png)
+- G03:[创建家谱](screens/handoff/2026-07-14/G03-create-after-360x800.png)
+
+## F、R、N、M 默认审核入口
+
+- [F03–F10 联系表](screens/handoff/2026-07-14/all-page-candidates/00-family-contact-sheet.png)
+- [R01–R11 联系表](screens/handoff/2026-07-14/all-page-candidates/00-records-contact-sheet.png)
+- [N02、M02–M10 联系表](screens/handoff/2026-07-14/all-page-candidates/00-profile-notification-contact-sheet.png)
+- [F01 家族动态](screens/handoff/2026-07-14/root-pages-audit/01-f01-list-360x800.png)
+- [F02 发布动态](screens/handoff/2026-07-14/root-pages-audit/03-f02-form-360x800.png)
+- [N01 消息中心](screens/handoff/2026-07-14/root-pages-audit/05-n01-list-360x800.png)
+- [M01 我的首页](screens/handoff/2026-07-14/root-pages-audit/07-m01-ready-360x800.png)
+
+## G 家谱候选
+
+- [G05 家谱总览](screens/handoff/2026-07-14/g-module-audit/g05/01-g05-ready-360x800.png)
+- G06:[初始态](screens/handoff/2026-07-14/G06-selected-strip-final-initial-recheck-360x800.png)、[结果态](screens/handoff/2026-07-14/G06-selected-strip-final-results-360x800.png)、[无结果态](screens/handoff/2026-07-14/G06-selected-strip-final-empty-360x800.png)
+- [G08 申请入谱](screens/handoff/2026-07-14/g-module-audit/applications/01-g08-form-360x800.png)
+- [G09 我的申请](screens/handoff/2026-07-14/g-module-audit/applications/04-g09-list-360x800.png)
+- [G10 申请审核](screens/handoff/2026-07-14/g-module-audit/applications/06-g10-list-360x800.png)
+- [G11 家谱设置](screens/handoff/2026-07-14/g-module-audit/settings-poems/01-g11-form-360x800.png)
+- [G12 字辈诗](screens/handoff/2026-07-14/g-module-audit/settings-poems/04-g12-list-360x800.png)
+
+## T 世系与成员候选
+
+- [T01 世系树](screens/handoff/2026-07-14/t01-audit/04-t01-tree-360x800.png)
+- [T03 成员档案](screens/handoff/2026-07-14/t-module-audit/01-t03-detail-360x800.png)
+- [T04 新增亲属](screens/handoff/2026-07-14/t-module-audit/03-t04-form-360x800.png)
+- [T05 编辑成员](screens/handoff/2026-07-14/t-module-audit/04-t05-form-360x800.png)
+- [T06 编辑关系](screens/handoff/2026-07-14/t-module-audit/05-t06-form-360x800.png)
+- [T07 成员目录](screens/handoff/2026-07-14/t-module-audit/07-t07-list-360x800.png)
+- [T08 成员状态](screens/handoff/2026-07-14/t-module-audit/09-t08-privacy-360x800.png)
+
+## 风格锚点与设计记录
+
+- [G01 美术锚点](references/G01-我的家谱-美术锚点.png)
+- [公共操作图标锚点](references/公共操作图标-风格锚点.png)
+- [页面与状态合并审计](2026-07-14_页面与状态合并审计.md)
+- [G05 设计记录](G05_家谱总览_设计记录.md)
+- [G08–G10 设计记录](G08-G10_入谱申请链路_设计记录.md)
+- [G11–G12 设计记录](G11-G12_设置与字辈诗_设计记录.md)
+- [T01–T08 设计记录](T01-T08_世系与成员_设计记录.md)
+- [F/R/N/M 设计记录](F-R-N-M_全量候选设计记录.md)
+
+## 后续截图规则
+
+新的运行截图仍输出到 `docs/design/screens/runtime/<日期>/`,该目录已被 `.gitignore` 排除。用户确认需要作为长期交接基准时,再把单张代表图复制到 `docs/design/screens/handoff/` 并更新本索引;不要把整轮截图重新加入 Git。
diff --git a/docs/superpowers/plans/2026-07-14-t01-tree-state-consolidation.md b/docs/superpowers/plans/2026-07-14-t01-tree-state-consolidation.md
index c9d0887..02cdf24 100644
--- a/docs/superpowers/plans/2026-07-14-t01-tree-state-consolidation.md
+++ b/docs/superpowers/plans/2026-07-14-t01-tree-state-consolidation.md
@@ -4,9 +4,9 @@
**Goal:** 将 T02 小屏、空数据和失败提示收敛进 T01,保留世系节点交互并以位图资产替代 CSS 表面。
-**Architecture:** T01 读取 `state` 和 `genealogyId`,由一个 `treeState` 唯一管理四种同页状态。T02 文件与路由删除;所有节点/画布/底部信息表面由三个不透明位图承载。
+**Architecture:** T01 读取 `state` 和 `genealogyId`,由一个 `treeState` 唯一管理四种同页状态。T02 文件与路由删除;所有节点/画布/底部信息表面复用现有完整不透明位图承载。
-**Tech Stack:** uni-app、Vue 3、现有 mock `appApi`、ImageGen、PowerShell 静态契约、Chrome DevTools Protocol 冒烟。
+**Tech Stack:** uni-app、Vue 3、页面内模拟数据、现有完整位图资产、PowerShell 静态契约、Chrome DevTools Protocol 冒烟。
## Global Constraints
@@ -16,22 +16,22 @@
### Task 1: TDD 契约(RED)
-- [ ] 创建 `tests/t01-tree-state-contract.ps1` 与 `tests/t01-tree-state-runtime-smoke.js`。
-- [ ] 静态契约要求 T02 路由/文件不存在,T01 含 `tree|landscape|empty|error`、三张位图、T03/T04 跳转和无 CSS 表面;运行冒烟要求三种查询状态及 `genealogyId=1001` 节点跳转。
-- [ ] 运行两个新测试,确认当前实现因 T02 仍存在和 T01 缺少状态节点而红灯。
+- [x] 创建 `tests/t01-tree-state-contract.ps1` 与 `tests/t01-tree-state-runtime-smoke.js`。
+- [x] 静态契约要求 T02 路由/文件不存在,T01 含 `tree|landscape|empty|error`、三类完整位图、T03/T04 跳转和无 CSS 表面;运行冒烟要求三种查询状态及 `genealogyId=1001` 节点跳转。
+- [x] 运行两个新测试,确认当前实现因 T02 仍存在和 T01 缺少状态节点而红灯。
-### Task 2: 位图资产
+### Task 2: 位图资产复用
-- [ ] 用 ImageGen 生成 1122×1320 不透明 `t01-tree-canvas.png`、280×228 不透明 `t01-member-node.png`、1122×280 不透明 `t01-member-sheet.png`;均检查尺寸和四角 alpha。
-- [ ] 在 P00 登记路径、用途、尺寸、T01 引用与不透明属性。
+- [x] 审视现有完整资产后,复用 `g03-create-flow-panel.png`、`g06-search-input-wide.png` 与 `application-status-card.png`,不生成语义重复资产。
+- [x] 在 P00 登记 T01 与后续 T 页面引用。
### Task 3: T01 同页状态与 T02 删除(GREEN)
-- [ ] 修改 `pages/tree/t01-tree-overview.vue`:加载后由状态和真实成员确定 `treeState`;画布、节点、信息条使用新位图;保留原有 T03/T04/T06/T07 跳转。
-- [ ] 从 `pages.json` 删除 `pages/tree/t02-tree-states`,删除 `pages/tree/t02-tree-states.vue`,移除 `data/page-catalog.js` 的 `t02`。
-- [ ] 运行新契约和运行冒烟转绿。
+- [x] 修改 `pages/tree/t01-tree-overview.vue`:由状态和页面内模拟成员确定 `treeState`;画布、节点、信息条使用完整位图;保留 T03/T04/T06/T07 跳转。
+- [x] 从 `pages.json` 删除 `pages/tree/t02-tree-states`,删除文件并移除 `page-catalog.js` 的 `t02`。
+- [x] 运行新契约和运行冒烟转绿。
### Task 4: 收口
-- [ ] 全量路由契约和 A03 路由计数更新为 54;当前文档同步 T02→T01 已完成、G06 仍待审美确认。
-- [ ] 截图并审视 T01 tree/landscape/empty/error、412×915 tree;运行全部静态契约、相关冒烟和 `git diff --check`。
+- [x] 全量路由契约和 A03 路由计数更新为 54;当前文档同步 T02→T01 已完成。
+- [x] 截图并审视 T01 tree/landscape/empty/error 与 412×915 tree;相关静态契约和冒烟通过。最终全量 `git diff --check` 留到所有模块候选完成前统一执行。
diff --git a/docs/superpowers/plans/2026-07-15-handoff-evidence-simplification.md b/docs/superpowers/plans/2026-07-15-handoff-evidence-simplification.md
new file mode 100644
index 0000000..801c65e
--- /dev/null
+++ b/docs/superpowers/plans/2026-07-15-handoff-evidence-simplification.md
@@ -0,0 +1,213 @@
+# 交接文档与视觉证据精简实施计划
+
+> **For agentic workers:** REQUIRED SUB-SKILL: Use `superpowers:executing-plans` to implement this plan task-by-task. The user explicitly forbids subagents and worktrees. Steps use checkbox (`- [ ]`) syntax for tracking.
+
+**Goal:** 把当前交接整理为一个无陈旧状态、低图片阅读负担、能让新 GPT 直接恢复技能和审核流程的入口。
+
+**Architecture:** `docs/交接记录.md` 是快速入口,`docs/design/视觉设计交接手册.md` 承担详细操作说明,新增 `docs/design/视觉证据索引.md` 集中保存截图路径;契约测试负责阻止旧状态和技能说明缺失。所有现有 PNG 原地保留。
+
+**Tech Stack:** Markdown、PowerShell 契约测试、Git 只读检查。
+
+## Global Constraints
+
+- 仅修改交接、证据索引、早期报告说明和对应测试,不修改页面、路由、接口或运行资产。
+- 54 条最终路由保持 7 个 `[x]`、47 个 `[~]`;候选不能写成用户已验收。
+- 不删除、不移动任何现有 PNG。
+- 不使用 worktree、多代理、`git add`、commit、push、上传、reset 或 checkout。
+- 正文默认每页只指向一张 360×800 代表图;复杂状态优先使用一张状态联系表;历史对比图只进入归档索引。
+
+---
+
+### Task 1: 建立交接文档契约
+
+**Files:**
+- Create: `tests/handoff-documentation-contract.ps1`
+
+**Interfaces:**
+- Consumes: `docs/交接记录.md`、`docs/design/视觉设计交接手册.md`、`docs/规划.md`
+- Produces: 一个可重复运行的文档状态与技能说明契约
+
+- [x] **Step 1: 写入预期失败的契约测试**
+
+测试必须断言:
+
+```powershell
+$handoff = Get-Content -Raw -Encoding UTF8 'docs/交接记录.md'
+$manual = Get-Content -Raw -Encoding UTF8 'docs/design/视觉设计交接手册.md'
+$planning = Get-Content -Raw -Encoding UTF8 'docs/规划.md'
+
+foreach ($required in @(
+ '54 条最终路由', '7 个已验收', '47 个待审核候选',
+ 'product-design:index', 'product-design:audit', 'imagegen',
+ 'superpowers:test-driven-development',
+ 'superpowers:systematic-debugging',
+ 'superpowers:verification-before-completion',
+ 'docs/design/视觉证据索引.md'
+)) {
+ if ($handoff -notmatch [regex]::Escape($required)) {
+ throw "handoff missing: $required"
+ }
+}
+
+foreach ($stale in @(
+ '六个已验收',
+ '结果态和无结果态的同版重新截图尚未完成',
+ '结果态/无结果态的同版截图和用户审美确认尚未完成',
+ '下一项按 F、R、N、M 推进'
+)) {
+ if (($handoff + $manual) -match [regex]::Escape($stale)) {
+ throw "stale handoff text remains: $stale"
+ }
+}
+
+$approved = ([regex]::Matches($planning, '- \[x\]')).Count
+$candidate = ([regex]::Matches($planning, '- \[~\]')).Count
+if ($approved -ne 7 -or $candidate -ne 47) {
+ throw "planning counts changed: approved=$approved candidate=$candidate"
+}
+```
+
+- [x] **Step 2: 运行测试并确认 RED**
+
+Run:
+
+```powershell
+powershell -NoProfile -ExecutionPolicy Bypass -File tests/handoff-documentation-contract.ps1
+```
+
+Expected: FAIL,至少报告当前交接缺少 `docs/design/视觉证据索引.md` 或仍包含陈旧 G06 表述。
+
+### Task 2: 精简快速入口并建立证据索引
+
+**Files:**
+- Modify: `docs/交接记录.md`
+- Modify: `docs/design/视觉设计交接手册.md`
+- Create: `docs/design/视觉证据索引.md`
+- Modify: `.superpowers/sdd/task-1-report.md`
+
+**Interfaces:**
+- Consumes: `docs/规划.md` 的 7/47 审核状态、现有 `docs/design/screens/runtime/` 证据目录
+- Produces: 快速入口、详细恢复手册、低噪声证据归档和早期报告边界说明
+
+- [x] **Step 1: 重写快速交接入口**
+
+`docs/交接记录.md` 只保留以下五节:
+
+```markdown
+# 家谱 APP 交接记录
+
+## 1. 当前准确停点
+54 条最终路由;7 个已验收;47 个待审核候选;下一步逐页审核,不对接接口。
+
+## 2. 新 GPT 启动顺序
+必读文件、`git status --short`、中文复述停点、禁止修改冻结页。
+
+## 3. 必须调用的能力
+Product Design、ImageGen、TDD、系统化排错、完成前验证的触发条件。
+
+## 4. 视觉审核降噪规则
+每页一张代表图;复杂状态一张联系表;历史对比按需展开。
+
+## 5. 禁止事项与验证
+Git、多代理、worktree、接口对接禁令,以及测试、截图和 `git diff --check`。
+```
+
+- [x] **Step 2: 修正详细手册中的陈旧停点**
+
+将 `docs/design/视觉设计交接手册.md` 中的数量统一为 7/47;删除 G06 三态截图未完成和“继续推进 F/R/N/M”的旧描述;保留 G06 未获用户视觉验收、H5 不能替代 Android 真机复核两条边界。
+
+- [x] **Step 3: 新建视觉证据索引**
+
+`docs/design/视觉证据索引.md` 按以下层级组织,所有条目只链接现有文件或目录:
+
+```markdown
+# 视觉证据索引
+
+## 默认审核入口
+- 全页面候选联系表目录
+- 根页面联系表
+- G、T 模块联系表
+
+## 已验收基准
+- A01、A02、A04、A05、A06、G01、G03 的代表证据
+
+## 候选设计记录
+- G、T、F/R/N/M 设计记录
+
+## 历史审计证据
+- before/after、多尺寸和废稿目录;仅在回归或争议时展开
+```
+
+- [x] **Step 4: 标注早期专项报告的职责边界**
+
+在 `.superpowers/sdd/task-1-report.md` 标题下增加:
+
+```markdown
+> 历史说明:本文件仅记录早期 A02 Task 1 的 RED 验证,不是当前项目总交接入口。当前停点以 `docs/交接记录.md` 和 `docs/规划.md` 为准。
+```
+
+- [x] **Step 5: 运行契约并确认 GREEN**
+
+Run:
+
+```powershell
+powershell -NoProfile -ExecutionPolicy Bypass -File tests/handoff-documentation-contract.ps1
+```
+
+Expected: `HANDOFF-DOCUMENTATION-CONTRACT PASS`
+
+### Task 3: 收口验证
+
+**Files:**
+- Verify only: `docs/交接记录.md`
+- Verify only: `docs/design/视觉设计交接手册.md`
+- Verify only: `docs/design/视觉证据索引.md`
+- Verify only: `.superpowers/sdd/task-1-report.md`
+- Verify only: `tests/handoff-documentation-contract.ps1`
+
+**Interfaces:**
+- Consumes: Task 1 与 Task 2 的文档和契约
+- Produces: 可交接的验证证据
+
+- [x] **Step 1: 检查陈旧表述和技能清单**
+
+Run:
+
+```powershell
+rg -n "六个已验收|结果态和无结果态.*未完成|下一项按 F、R、N、M 推进" docs/交接记录.md docs/design/视觉设计交接手册.md
+rg -n "product-design:index|product-design:audit|imagegen|test-driven-development|systematic-debugging|verification-before-completion" docs/交接记录.md
+```
+
+Expected: 第一条无匹配;第二条六类能力全部有匹配。
+
+- [x] **Step 2: 确认规划计数未改变**
+
+Run:
+
+```powershell
+$text = Get-Content -Raw -Encoding UTF8 'docs/规划.md'
+"approved=$(([regex]::Matches($text, '- \[x\]')).Count)"
+"candidate=$(([regex]::Matches($text, '- \[~\]')).Count)"
+```
+
+Expected: `approved=7`、`candidate=47`。
+
+- [x] **Step 3: 确认没有删除 PNG**
+
+Run:
+
+```powershell
+git diff --name-status -- '*.png'
+```
+
+Expected: 不出现以 `D` 开头的 PNG 记录。
+
+- [x] **Step 4: 最终格式检查**
+
+Run:
+
+```powershell
+git diff --check
+```
+
+Expected: exit code 0。允许 Git 输出 LF/CRLF 提示,但不允许 whitespace error。
diff --git a/docs/superpowers/plans/2026-07-15-repository-slim-handoff.md b/docs/superpowers/plans/2026-07-15-repository-slim-handoff.md
new file mode 100644
index 0000000..5db0c82
--- /dev/null
+++ b/docs/superpowers/plans/2026-07-15-repository-slim-handoff.md
@@ -0,0 +1,47 @@
+# 仓库精简与交接证据保留实施计划
+
+> **For agentic workers:** REQUIRED SUB-SKILL: Use `superpowers:executing-plans`. The user forbids subagents, worktrees and Git write operations.
+
+**Goal:** 将当前可交接项目整理为约 30MB 的 Git 快照,同时在项目外完整保留设计审计资料。
+
+**Architecture:** 使用 `tests/repository-handoff-size-contract.ps1` 约束标准路径、证据体积和忽略规则;先暂存精简证据,再把完整 `docs/design/` 和 `tmp/` 移到固定外部归档,最后恢复精简 `docs/design/` 并更新索引。
+
+**Tech Stack:** Markdown、PowerShell、Git 只读检查。
+
+## Global Constraints
+
+- 不修改 `static/`、页面、路由、接口或运行行为。
+- 不删除完整证据,只移动到 `C:\Users\Rain\Desktop\job\jiapuapp-design-evidence-archive-2026-07-15`。
+- 不使用多代理、worktree、`git add`、commit、push、reset、checkout 或历史重写。
+
+### Task 1: 建立精简契约
+
+**Files:**
+- Create: `tests/repository-handoff-size-contract.ps1`
+
+- [x] 写入标准文档路径、证据上限、忽略规则和索引链接检查。
+- [x] 运行测试,确认因缺少 `.gitignore` 或证据超限而 RED。
+
+### Task 2: 建立外部完整归档并恢复精简证据
+
+**Files:**
+- Create: `.gitignore`
+- Modify: `docs/design/视觉证据索引.md`
+- Move outside repository: full original `docs/design/`
+- Move outside repository: `tmp/` and `tmp-g01-icon-audit.png`
+- Restore: compact `docs/design/`
+
+- [x] 将全部设计 Markdown、两张风格锚点和批准的代表截图复制到项目内临时保留区。
+- [x] 校验源和目标绝对路径后,将完整 `docs/design/` 移到固定外部归档。
+- [x] 将 `tmp/` 和根目录临时审计图移入归档。
+- [x] 把临时保留区恢复为标准 `docs/design/`。
+- [x] 更新视觉证据索引和 `.gitignore`。
+- [x] 运行精简契约并确认 GREEN。
+
+### Task 3: 收口验证
+
+- [x] 确认外部归档大于 90MB。
+- [x] 确认精简截图不超过 20MB、35 个文件。
+- [x] 确认 `git diff --name-status -- static` 无输出。
+- [x] 运行 `tests/handoff-documentation-contract.ps1`。
+- [x] 运行 `git diff --check`。
diff --git a/docs/superpowers/specs/2026-07-14-t01-tree-state-consolidation-design.md b/docs/superpowers/specs/2026-07-14-t01-tree-state-consolidation-design.md
index 8e387d1..863f52c 100644
--- a/docs/superpowers/specs/2026-07-14-t01-tree-state-consolidation-design.md
+++ b/docs/superpowers/specs/2026-07-14-t01-tree-state-consolidation-design.md
@@ -20,12 +20,11 @@
## 视觉
- 保留 `PageHeader`、暖宣纸与朱砂/古金/墨褐的已验收语言,不触及 A01、A02、A04--A06、G01、G03。
-- 新增不透明位图:世系画布 `t01-tree-canvas.png`、成员节点 `t01-member-node.png`、底部成员信息条 `t01-member-sheet.png`。它们承载纸纹、边框、关系线和卡片表面;Vue 只叠放真实文本、滚动和点击层。
-- 完整画布含轻古金三代关系线,适配当前 mock 的一祖、两中代、三后代布局;远端节点仍使用同一空白节点皮肤,保持可读优先。
+- 复用已验收体系中的完整不透明位图:`g03-create-flow-panel.png` 作为世系画布,`g06-search-input-wide.png` 作为成员节点,`application-status-card.png` 作为底部信息条;Vue 只叠放真实文本、滚动和点击层,避免新增语义重复资产。
- `landscape`、`empty`、`error` 使用画布内留白与现有透明云纹,不再生成一个通用状态卡页。
## 契约与验证
-- 先红灯:T01 存在且 T02 路由/文件不存在;T01 有四态、三张位图、成员资料与新增亲属跳转;节点和信息条不允许 CSS 构造表面。
+- 先红灯:T01 存在且 T02 路由/文件不存在;T01 有四态、三类完整位图、成员资料与新增亲属跳转;节点和信息条不允许 CSS 构造表面。
- 运行冒烟:默认 `?state=landscape`、`?state=empty`、`?state=error` 分别显示同页状态;`?genealogyId=1001` 显示节点并点选进入 T03。
- 更新全量路由契约至 54,更新交接/P00/规划;截图至少包含 tree、empty、error 与 412×915 tree。
diff --git a/docs/superpowers/specs/2026-07-15-handoff-evidence-simplification-design.md b/docs/superpowers/specs/2026-07-15-handoff-evidence-simplification-design.md
new file mode 100644
index 0000000..9d3fb96
--- /dev/null
+++ b/docs/superpowers/specs/2026-07-15-handoff-evidence-simplification-design.md
@@ -0,0 +1,57 @@
+# 交接文档与视觉证据精简设计
+
+> 日期:2026-07-15
+> 状态:用户已确认“正文精简、证据不删除”方向
+> 范围:仅整理交接、审核入口与证据索引,不修改页面代码、视觉资产、路由或接口
+
+## 目标
+
+让更换电脑后的新 GPT 只阅读一个简洁入口,就能准确知道当前停点、必须调用的技能、禁止事项、页面审核方式和验证要求;同时减少连续阅读前后对比图、多尺寸截图与历史废稿造成的视觉疲劳。
+
+## 信息结构
+
+1. `docs/交接记录.md` 作为唯一快速入口,只保留:
+ - 54 条最终路由、7 个已验收页、47 个待审核候选的准确状态;
+ - 下一步是按 `docs/规划.md` 逐页审核,而不是继续批量设计或对接接口;
+ - 新 GPT 的必读顺序、技能调用顺序、禁止事项和最小恢复检查;
+ - 一处“视觉证据归档”链接,不逐张罗列历史对比图。
+2. `docs/design/视觉设计交接手册.md` 保留完整操作方法,但删除重复、陈旧的截图清单和过期停点;截图规则改为“审核时默认只看一张代表图,状态复杂时看一张状态联系表,发现问题后才展开历史对比与多尺寸证据”。
+3. 新增 `docs/design/视觉证据索引.md`,集中保存现有代表截图、状态联系表、历史前后对比和模块设计记录的路径。证据文件不删除、不移动。
+4. `.superpowers/sdd/task-1-report.md` 明确标记为早期 A02 专项报告,不再承担当前总交接职责;当前交接以 `docs/交接记录.md` 为准。
+
+## 新 GPT 的启动契约
+
+交接入口必须明确写出以下顺序:
+
+1. 完整阅读 `AGENTS.md`、`docs/交接记录.md`、`docs/规划.md` 和视觉交接手册,先运行 `git status --short`,不得覆盖未提交改动。
+2. 设计或审视页面时,先调用 `product-design:index`;基于真实运行截图调用 `product-design:audit`。
+3. 只有缺少完整位图视觉资产时才调用 `imagegen`;按钮、卡片、边框和装饰面不得用 CSS 伪造。
+4. 修改页面行为、路由或可审计视觉结构前调用 `superpowers:test-driven-development`,先更新最小契约测试。
+5. 测试、截图、路由或构建异常时调用 `superpowers:systematic-debugging`。
+6. 宣称完成前调用 `superpowers:verification-before-completion`,运行受影响测试、真实截图复核和 `git diff --check`。
+7. 不使用 worktree、多代理、`git add`、commit、push、上传、reset 或 checkout。
+
+## 视觉审核降噪规则
+
+- 默认审核材料:每页一张 360×800 代表截图。
+- 同页包含关键状态时:使用一张状态联系表代替多张连续截图。
+- 412×915、小屏、多尺寸和前后对比图只在发现比例问题、回归问题或用户要求时展开。
+- 历史废稿与 before/after 图保留在证据索引的“历史审计”区域,不出现在快速交接正文。
+- 用户明确通过一页后才把 `docs/规划.md` 的 `[~]` 改为 `[x]`;要求返工时改为 `[!]`。
+
+## 需要修正的当前矛盾
+
+- 将已验收数量统一为 7:A01、A02、A04、A05、A06、G01、G03。
+- 将候选数量统一为 47,并保持“候选不等于用户验收”。
+- 删除 G06“结果态、无结果态截图尚未完成”的陈旧描述;保留 G06 尚未获用户视觉验收的事实。
+- 删除“下一项继续推进 F/R/N/M”的旧停点,改为“全部候选已覆盖,等待逐页审核”。
+- 明确 H5 截图是候选审计证据,最终 Android/HBuilderX 真机或模拟器复核仍在视觉审核之后。
+
+## 验证
+
+- 用文本检索确认交接文档不再出现“六个已验收”“G06 结果态未截图”“继续推进 F/R/N/M”等陈旧表述。
+- 确认快速交接入口包含全部六类技能调用规则和 Git/多代理禁令。
+- 确认 `docs/规划.md` 仍为 7 个 `[x]`、47 个 `[~]`、0 个遗漏项。
+- 运行 `git diff --check`。
+- 不删除任何现有 PNG,不修改页面、路由、接口或运行资产。
+
diff --git a/docs/superpowers/specs/2026-07-15-repository-slim-handoff-design.md b/docs/superpowers/specs/2026-07-15-repository-slim-handoff-design.md
new file mode 100644
index 0000000..23df0e6
--- /dev/null
+++ b/docs/superpowers/specs/2026-07-15-repository-slim-handoff-design.md
@@ -0,0 +1,33 @@
+# 仓库精简与交接证据保留设计
+
+> 日期:2026-07-15
+> 状态:用户已批准执行
+> 范围:整理设计证据和临时文件,不修改页面、路由、接口或 `static/` 运行资产
+
+## 目标
+
+把可随 Git 上传的当前快照控制在约 30MB,同时让新 GPT 仍能通过标准 `docs/design/` 路径阅读视觉规范、设计记录和代表截图。完整审计证据移到项目外的本地归档,不删除。
+
+## 文件边界
+
+- 完整保留:源码、测试、`static/`、`docs/design/*.md`、`docs/design/references/` 两张风格锚点。
+- Git 内保留:7 个已验收页面代表图、F/R/N/M 三张联系表、根页面代表图、G05/G06/G08–G12 代表图、T01/T03–T08 代表图。
+- 项目外归档:其余 before/after、多尺寸、历史废稿、完整运行截图以及 `tmp/` 临时源文件。
+- 新增 `.gitignore`:排除 `tmp/`、`unpackage/`、临时审计图和误放到 `docs/superpowers/specs/design/` 的目录。
+- 更新 `docs/design/视觉证据索引.md`:只链接 Git 内保留的证据;完整历史归档写明本机路径和非 Git 属性。
+
+## 归档位置
+
+`C:\Users\Rain\Desktop\job\jiapuapp-design-evidence-archive-2026-07-15`
+
+归档目录包含原始 `docs/design/` 完整副本和项目根 `tmp/` 临时源文件。移动前必须确认源目录位于项目内、目标目录位于上述固定路径且目标不存在;不得覆盖已有目录。
+
+## 验收
+
+- `docs/design/` 标准路径恢复,17 个设计 Markdown 均保留。
+- `docs/design/screens/` 不超过 20MB、35 个文件。
+- `docs/design/视觉证据索引.md` 的 Markdown 链接全部有效。
+- `static/` 无任何内容差异。
+- 完整外部归档存在且大于 90MB。
+- 精简契约、交接契约和 `git diff --check` 通过。
+- 不执行 `git add`、commit、push、reset、checkout 或历史重写。
diff --git a/docs/交接记录.md b/docs/交接记录.md
index 205c047..d160791 100644
--- a/docs/交接记录.md
+++ b/docs/交接记录.md
@@ -1,33 +1,48 @@
# 家谱 APP 交接记录
-> 更新时间:2026-07-14
-> 完整恢复手册见:[视觉设计交接手册](design/视觉设计交接手册.md)。本文件只保留当前真实停点,避免与历史草案互相矛盾。
+> 更新日期:2026-07-15
+> 这是更换电脑或交给新 GPT 时的唯一快速入口。详细操作见 [视觉设计交接手册](design/视觉设计交接手册.md),页面审核状态以 [总规划](规划.md) 为准。
-## 当前状态
+## 1. 当前准确停点
-- `pages.json` 已登记 55 条最终编号路由,并由 `tests/full-page-visual-contract.ps1` 约束。
-- 用户已经验收并冻结可见效果的页面:A01 启动/登录引导、A02 账号登录、A04 注册账号、A05 重置密码、A06 登录状态、G01 我的家谱。
-- A02 已完成资产化重做、运行截图与自动回归,并于 2026-07-14 获用户视觉验收;A03 已删除,A02 的短信 Tab 是唯一手机号验证码登录入口;A04 已于 2026-07-14 完成平衡修订并获用户视觉验收;A05、A06 已于同日获用户视觉验收。不能改变 A01、A02、A04、A05、A06、G01、G03 的已验收可见效果。G01 的 `?state=empty` 已获用户审美确认;G04 已按用户确认合并为 G03 的 `?step=ancestor`,G03 双步骤已获用户继续授权通过。G07 已收敛为 G06 的初始/结果/无结果状态。G06 经过多轮审视后,用户选定最近 ImageGen 第 3 稿的「朱砂题签 + 独立输入框 + 独立按钮」方向;题签中原本的通用印玺已改为项目真实 `brand-seal.png`。当前仅保存了该最终候选的初始态运行图,结果态和无结果态的同版重新截图尚未完成;**G06 尚未获用户视觉验收,不能写成已完成或冻结。**
-- 其余页面可浏览,但包含 `ModulePage.vue`/`page-catalog.js` 的临时第一版壳,不能当作最终视觉设计。
-- 不提交、不推送、不上传 Git;由用户自行处理。
+- `pages.json` 当前登记 **54 条最终路由**;重复状态已经收敛到同一页面,例如 G02→G01、G04→G03、G07→G06、T02→T01。
+- 当前有 **7 个已验收**页面:A01、A02、A04、A05、A06、G01、G03。除非用户提出明确调整,不得改变这些页面已经验收的可见效果。
+- 其余 **47 个待审核候选**已经完成页面实现、H5 运行截图和内部视觉审视,统一在 `docs/规划.md` 标记为 `[~]`。候选不等于用户验收,只有用户明确通过后才能改为 `[x]`;要求返工时改为 `[!]`。
+- 下一步是按 `docs/规划.md` 逐页视觉审核,不再批量新增页面。接口资料只用于理解功能、字段和状态位置;本阶段不对接接口。
+- H5 Chrome 截图是候选审计证据,最终 Android/HBuilderX 真机或模拟器复核仍需在视觉审核后完成。
-## 新电脑的第一步
+## 2. 新 GPT 启动顺序
-1. 按顺序阅读 `AGENTS.md`、本文件、[完整交接手册](design/视觉设计交接手册.md)、[总规划](规划.md)、[D1 视觉规范](design/D1_安卓视觉规范与页面壳.md)、[P00 资产台账](design/P00_页面结构与资产清单.md)、`docs/superpowers/plans/2026-07-13-product-design-visual-refinement.md`、`design-qa.md`;然后先用中文向用户复述当前停点,不改代码。
-2. 保留工作区改动,运行 `git status --short`;不执行 reset、checkout 或覆盖用户文件。
-3. A02、A04、A05、A06 已验收、A03 已删除;A04 最终证据为 `A04-after-balance-360x800.png` 与 `A04-after-balance-412x915.png`,A05 证据为 `A05-after-360x800.png` 与 `A05-after-412x915.png`,A06 证据为 `A06-after-360x800.png`、`A06-after-412x915.png` 与 `A06-restricted-360x800.png`。G01 默认态前后比对为 `G01-default-before-after-360x800.png`,空状态已验收;G03 双步骤证据为 `G03-create-after-360x800.png`、`G03-ancestor-after-360x800.png`、`G03-ancestor-after-412x915.png`,均已获用户继续授权通过。G06 的当前候选图是 `G06-selected-strip-final-initial-360x800.png`:它只证明最后选定样式的初始态。旧 `G06-no-panel-*` 图仅保留为迭代历史,不可当作当前最终三态证据;新的结果态、无结果态截图与用户验收都待补。
-4. 需要自行截图时,用 `scripts/capture-chrome-page.js` 连接专用 Chrome 的调试端口 `9222`;完整启动命令和截图方式见交接手册第 5 节。
+1. 全程使用中文。先完整阅读 `AGENTS.md`、本文件、`docs/规划.md`、`docs/design/视觉设计交接手册.md`、`docs/design/D1_安卓视觉规范与页面壳.md`、`docs/design/P00_页面结构与资产清单.md` 和 `design-qa.md`。
+2. 运行 `git status --short`,识别并保留全部未提交改动。不要把旧提交状态当成当前工作区状态。
+3. 先向用户简洁复述:54 条路由、7 个已验收、47 个待审核,以及准备审核的具体页面;在用户给出页面反馈前不要盲目重做。
+4. 审核时先看 [视觉证据索引](design/视觉证据索引.md) 的默认代表图;发现具体问题后再展开多尺寸、before/after 或历史废稿。
-## 已知验证与限制
+## 3. 必须调用的能力
-- A02 相关的 `a02-asset-alpha-audit`、`a01-a02-ui-contract`、`a02-register-entry-contract`、`capture-chrome-page-contract`、`compile-audit` 和全量页面路由契约均已在本轮通过;后续修改仍要重新运行受影响检查。
-- `design-qa.md` 当前是 `final result: accepted`,仅记录已冻结 A02;A02 已不再阻塞后续页面,但后续页面必须分别经过截图、审视和用户验收。A06、G01 两个状态与 G03 双步骤均已获用户确认;G06 的最终候选只有初始态新图,三态复核与用户审美确认均待补。
-- 现有运行图来自 H5 Chrome 调试;最终 Android/HBuilderX 真机/模拟器视觉复核仍待补做,不能被 H5 截图替代。
+新 GPT 必须实际具备并按触发条件调用:
-## 给新 GPT 的直接任务说明
+- `product-design:index`:开始设计、审视或评价页面时先调用,用于选择正确的产品设计工作流。
+- `product-design:audit`:必须基于真实运行截图审视页面,不能只看源码判断好不好看。
+- `imagegen`:仅在缺少完整位图视觉资产时调用。完整按钮、卡片、边框和装饰面必须使用独立位图,不能用 CSS 伪造。
+- `superpowers:test-driven-development`:修改页面行为、路由或可审计视觉结构前,先写或更新最小契约测试并确认 RED。
+- `superpowers:systematic-debugging`:测试、截图、路由或构建出现异常时,先复现并定位根因再修改。
+- `superpowers:verification-before-completion`:宣称完成前,运行受影响测试、真实截图复核和 `git diff --check`。
-这是一个高质量的 uni-app Android 家谱视觉设计任务,不是 CSS 微调任务。先读取本文件列出的必读材料和技能说明,保留工作区全部未提交改动,不使用 worktree、多代理、`git add`、`commit`、`push`、上传、`reset` 或 `checkout`。
+能力缺失时应先安装或启用同等能力,不得假装已经完成视觉审计、位图生成或验证。
-当前第一优先级不是开启新页面:先向用户展示并审视 `docs/design/screens/runtime/2026-07-14/G06-selected-strip-final-initial-360x800.png`,说明 G06 仍待验收。只有用户要求继续 G06 时,才先用 Product Design 对真实运行页面截图审视;若要改行为、路由或可审计视觉结构,先写/更新最小失败契约测试,再实现。继续时要补最后选定样式的结果态和无结果态截图、运行 G06 静态契约与 Chrome 冒烟、更新 `design-qa.md`,再请求用户审美确认。用户明确验收 G06 后,下一优先级才是 T02→T01 的世系树状态收敛(除非用户给出新的优先级)。
+## 4. 视觉审核降噪规则
-新 GPT 必须实际具备并调用:`product-design:index` 与 `product-design:audit`(基于真实截图审视)、`imagegen`(仅在缺完整位图资产时生成)、`superpowers:test-driven-development`(先契约测试)、`superpowers:systematic-debugging`(测试/截图/路由/构建异常时先定位)、`superpowers:verification-before-completion`(宣称完成前测试、截图和 `git diff --check`)。完整按钮、卡片、边框和装饰面必须使用独立位图;CSS 仅用于布局、文字、状态与真实交互。
+- 默认每页只看一张 360×800 代表截图。
+- 同页有多个关键状态时,优先看一张状态联系表,不连续展示多张相似截图。
+- 412×915、小屏、多尺寸和前后对比图仅在发现比例问题、回归问题或用户要求时展开。
+- 历史废稿和 before/after 证据不删除,但只保留在 `docs/design/视觉证据索引.md` 的历史审计区。
+- 审核结论记录在 `docs/规划.md`;不要因为内部测试或 Product Design 审视通过就替用户勾选。
+
+## 5. 禁止事项与完成验证
+
+- 不使用 worktree 或多代理。
+- 不执行 `git add`、commit、push、上传、reset、checkout,也不覆盖用户现有文件。
+- 不擅自对接接口、修改接口契约、打 Android 包或把截图放入 `static/assets/` 当运行资源。
+- 只修改用户当前反馈涉及的页面和对应测试、截图、设计记录;不要顺手重构冻结页或相邻模块。
+- 完成一次页面返工前,至少运行对应契约测试、运行时 smoke、真实路由截图复核和 `git diff --check`;无法执行的检查必须明确说明。
diff --git a/docs/规划.md b/docs/规划.md
index b0706c5..3e5f094 100644
--- a/docs/规划.md
+++ b/docs/规划.md
@@ -2,16 +2,16 @@
> 电脑或 GPT 更换时,先阅读:[项目交接记录](交接记录.md)。
-> 当前阶段:Product Design 视觉精修已启动;55 条路由第一版可浏览,A01、A02、A04、A05、A06、G01 两种状态与 G03 `create|ancestor` 双步骤均已获用户视觉验收;G07 已收敛到 G06 初始/结果/无结果状态。G06 最新朱砂题签候选只完成初始态截图,结果/无结果同版截图与用户审美确认待补。
+> 当前阶段:Product Design 视觉精修持续推进;54 条最终路由可浏览,A01、A02、A04、A05、A06、G01 两种状态与 G03 `create|ancestor` 双步骤已获用户视觉验收;G 模块与 T 模块候选稿已完成,统一等待全量设计完成后逐页审核。
> 适用端:Android `uni-app`(HBuilderX 打包)
-> 页面总量:55 个独立页面/状态单元;当前已注册 55 条最终编号路由。
+> 页面总量:54 个独立页面/状态单元;当前已注册 54 条最终编号路由。
## 1. 本轮目标与边界
- 只做 Android 用户端;不做 iOS、H5、PC 管理端、后台管理端或官网。
-- 本窗口以“全量覆盖后集中精修”为顺序推进:先让 55 条独立路由拥有统一视觉与本地可浏览入口,再按截图集中修改。
+- 本窗口以“全量覆盖后集中精修”为顺序推进:先让 54 条独立路由拥有统一视觉与本地可浏览入口,再按截图集中修改。
- 已由用户验收的 A01 启动/登录引导、A02 账号登录、A04 注册账号、A05 重置密码、A06 登录状态与 G01 默认有家谱态是**冻结视觉基准**。可重整其内部目录和复用方式,但已验收状态的 412 × 915 可见效果不得改变。
-- 55 条最终路由与文件清单由 `tests/full-page-visual-contract.ps1` 单一维护;代码覆盖不等同于用户视觉验收完成。
+- 54 条最终路由与文件清单由 `tests/full-page-visual-contract.ps1` 单一维护;代码覆盖不等同于用户视觉验收完成。
- 不新增业务接口、真实账号联调、Android 打包或设计清单以外的功能。
## 2. 唯一依据与完成口径
@@ -61,18 +61,20 @@
- 非直观跳转、状态分支、资产图层和关键样式必须写中文注释,说明用途和约束;不为显而易见的单行属性堆无意义注释。
- 每轮改动后删除本轮产生的无用导入、变量、函数、路径和资产。
-## 5. 55 个独立页面/状态单元
+## 5. 54 个独立页面/状态单元
| 模块 | 范围 | 数量 | 当前状态 |
| --- | --- | ---: | --- |
| 账户与首次使用 | A-01、A-02、A-04 至 A-06 | 5 | A01、A02、A04、A05、A06 已验收 |
-| 家谱 | G-01、G-03、G-05、G-06、G-08 至 G-12 | 9 | G01 两种状态与 G03 双步骤已验收;G06 当前候选只完成初始态新图,结果/无结果复核与用户确认待补;其余未完成 |
-| 世系树与成员 | T-01 至 T-08 | 8 | 未完成 |
-| 家族内容 | F-01 至 F-10 | 10 | 未完成 |
-| 人物、礼仪与档案 | R-01 至 R-11 | 11 | 未完成 |
-| 消息 | N-01 至 N-02 | 2 | 未完成 |
-| 个人中心 | M-01 至 M-10 | 10 | 未完成 |
-| **合计** | | **55** | **已验收 7 个;G06 当前候选待补三态复核与确认** |
+| 家谱 | G-01、G-03、G-05、G-06、G-08 至 G-12 | 9 | G01 两种状态与 G03 双步骤已验收;G05、G06、G08 至 G12 候选稿待用户逐页审核 |
+| 世系树与成员 | T-01、T-03 至 T-08 | 7 | T02 已收敛为 T01 同页状态;7 个页面候选稿待用户逐页审核 |
+| 家族内容 | F-01 至 F-10 | 10 | 10 个页面候选稿待用户逐页审核 |
+| 人物、礼仪与档案 | R-01 至 R-11 | 11 | 11 个页面候选稿待用户逐页审核 |
+| 消息 | N-01 至 N-02 | 2 | 2 个页面候选稿待用户逐页审核 |
+| 个人中心 | M-01 至 M-10 | 10 | 10 个页面候选稿待用户逐页审核 |
+| **合计** | | **54** | **已验收 7 个;其余 47 个均已形成 `[~]` 候选,等待用户逐页审核** |
+
+视觉审核标记由用户逐页确认:`[ ]` 待设计,`[~]` 候选稿已完成、待用户审核,`[x]` 用户已验收,`[!]` 用户要求返工。Codex 只能把页面推进到 `[~]`;只有用户明确确认后才能改为 `[x]`。每个候选页面必须保留关键状态截图目录,便于连续勾选直至 54 个页面全部验收。
### 5.1 账户与首次使用
@@ -86,58 +88,73 @@
- [x] G-01 我的家谱:已创建、已加入、通知入口与 `?state=empty` 无家谱状态均获用户视觉验收。
- [x] G-03 创建家谱:`step=create|ancestor` 管理创建表单与首代录入,已获用户视觉验收,冻结可见效果。
-- [ ] G-05 家谱总览。
-- [ ] G-06 公开家谱搜索与筛选:已合并 G07 的初始、结果与无结果状态;用户选定朱砂题签候选,当前仅初始态新图,待补结果/无结果同版截图、审视与用户审美确认。
-- [ ] G-08 申请加入、提交成功与审核中。
-- [ ] G-09 我的申请记录。
-- [ ] G-10 管理员申请审核与确认。
-- [ ] G-11 家谱设置、公开范围与访问说明。
-- [ ] G-12 字辈诗列表、详情与维护。
+- [~] G-05 家谱总览:候选稿已完成,含正常、空、失败状态与 360 × 800/412 × 915 截图,待用户视觉审核。
+- [~] G-06 公开家谱搜索与筛选:已合并 G07 的初始、结果与无结果状态;朱砂题签候选及三态运行截图已完成,待用户视觉审核。
+- [~] G-08 申请加入与提交成功:候选稿已完成,使用页面内模拟交互,不对接接口,待用户视觉审核。
+- [~] G-09 我的申请记录:候选稿已完成,含列表、空、失败状态,待用户视觉审核。
+- [~] G-10 管理员申请审核与确认:候选稿已完成,含列表、空、失败与审核确认交互,待用户视觉审核。
+- [~] G-11 家谱设置、公开范围与访问说明:候选稿已完成,含表单、成功、失败状态与双尺寸截图,待用户视觉审核。
+- [~] G-12 字辈诗列表、空态与维护:候选稿已完成,含列表、空、编辑、失败状态与双尺寸截图,待用户视觉审核。
### 5.3 世系树与成员
-- [ ] T-01 世系树总览。
-- [ ] T-02 小屏提示、无成员与加载失败状态。
-- [ ] T-03 成员档案详情。
-- [ ] T-04 新增直系亲属。
-- [ ] T-05 编辑成员资料。
-- [ ] T-06 编辑亲属关系与冲突提示。
-- [ ] T-07 成员目录与搜索。
-- [ ] T-08 去世、隐私隐藏和无权限等状态。
+- [~] T-01 世系树总览:已收敛 T02 的横向提示、空态与失败状态,含树态和双尺寸截图,待用户视觉审核。
+- [~] T-03 成员档案详情:含详情与失败状态,待用户视觉审核。
+- [~] T-04 新增直系亲属:含表单与保存结果,待用户视觉审核。
+- [~] T-05 编辑成员资料:含表单与保存结果,待用户视觉审核。
+- [~] T-06 编辑亲属关系与冲突提示:含表单、冲突与失败状态,待用户视觉审核。
+- [~] T-07 成员目录与搜索:含列表、搜索、空态与失败状态,待用户视觉审核。
+- [~] T-08 去世、隐私隐藏和无权限状态:三态留在同一路由,待用户视觉审核。
### 5.4 家族内容
-- [ ] F-01 家族首页/动态流。
-- [ ] F-02 发布动态。
-- [ ] F-03 动态详情、评论、点赞与删除确认。
-- [ ] F-04 谱文分类与文章列表。
-- [ ] F-05 谱文详情。
-- [ ] F-06 新建/编辑谱文。
-- [ ] F-07 相册列表。
-- [ ] F-08 相册详情与照片墙。
-- [ ] F-09 图片预览、上传与失败状态。
-- [ ] F-10 视频列表、详情与接口未开放状态。
+- [~] F-01 家族首页/动态流:列表、空态、失败态与双尺寸截图已完成,待用户视觉审核。
+- [~] F-02 发布动态:表单、成功与失败状态已完成,待用户视觉审核。
+- [~] F-03 动态详情、评论入口与操作结果,待用户视觉审核。
+- [~] F-04 谱文分类与文章列表,待用户视觉审核。
+- [~] F-05 谱文详情,待用户视觉审核。
+- [~] F-06 新建/编辑谱文,待用户视觉审核。
+- [~] F-07 相册列表,待用户视觉审核。
+- [~] F-08 相册详情与照片墙入口,待用户视觉审核。
+- [~] F-09 图片选择、上传与失败状态,待用户视觉审核。
+- [~] F-10 视频服务说明状态,待用户视觉审核。
### 5.5 人物、礼仪与档案
-- [ ] R-01 人物录列表;R-02 人物录详情与编辑。
-- [ ] R-03 贺礼列表;R-04 贺礼新增、详情与删除确认。
-- [ ] R-05 礼仪活动列表;R-06 礼仪详情;R-07 新建/编辑礼仪。
-- [ ] R-08 成长日志;R-09 人生事;R-10 备忘录;R-11 功德记录。
+- [~] R-01 人物录列表,待用户视觉审核。
+- [~] R-02 人物录详情与编辑入口,待用户视觉审核。
+- [~] R-03 贺礼列表,待用户视觉审核。
+- [~] R-04 贺礼新增、保存结果与删除说明,待用户视觉审核。
+- [~] R-05 礼仪活动列表,待用户视觉审核。
+- [~] R-06 礼仪详情,待用户视觉审核。
+- [~] R-07 新建/编辑礼仪,待用户视觉审核。
+- [~] R-08 成长日志,待用户视觉审核。
+- [~] R-09 人生事,待用户视觉审核。
+- [~] R-10 备忘录,待用户视觉审核。
+- [~] R-11 功德记录,待用户视觉审核。
### 5.6 消息与个人中心
-- [ ] N-01 消息中心;N-02 消息详情、已读与空状态。
-- [ ] M-01 我的首页;M-02 个人资料;M-03 安全设置;M-04 修改密码;M-05 修改手机号。
-- [ ] M-06 帮助中心;M-07 意见反馈;M-08 应用推广;M-09 VIP 与订单;M-10 关于、协议、隐私与退出确认。
+- [~] N-01 消息中心:列表、已读、空态与失败状态已完成,待用户视觉审核。
+- [~] N-02 消息详情、已读与空/失败状态,待用户视觉审核。
+- [~] M-01 我的首页:资料、提醒、服务入口与失败状态已完成,待用户视觉审核。
+- [~] M-02 个人资料,待用户视觉审核。
+- [~] M-03 安全设置,待用户视觉审核。
+- [~] M-04 修改密码,待用户视觉审核。
+- [~] M-05 修改手机号,待用户视觉审核。
+- [~] M-06 帮助中心,待用户视觉审核。
+- [~] M-07 意见反馈,待用户视觉审核。
+- [~] M-08 应用推广,待用户视觉审核。
+- [~] M-09 VIP 与订单,待用户视觉审核。
+- [~] M-10 关于、协议、隐私与退出说明,待用户视觉审核。
## 6. 推进顺序
-1. **视觉基线审视(进行中)**:已完成页面映射、资产迁移、公共组件中文注释和运行时零引用旧资源清理;A01 两张完整按钮已接入。A01、A02、A04、A05、A06、G01 两种状态与 G03 双步骤均已获用户视觉验收;A03 已删除;G02 已合并入 G01 `state=empty` 并通过验收;G04 已合并入 G03 `step=ancestor`;G07 已合并入 G06 三态。G06 当前的朱砂题签候选只有初始态新截图,必须补同版结果/无结果截图、审视并取得用户确认;不修改已冻结页面的可见效果。
+1. **视觉基线审视(进行中)**:已完成页面映射、资产迁移、公共组件中文注释和运行时零引用旧资源清理;A01 两张完整按钮已接入。A01、A02、A04、A05、A06、G01 两种状态与 G03 双步骤均已获用户视觉验收;A03 已删除;G02 已合并入 G01 `state=empty` 并通过验收;G04 已合并入 G03 `step=ancestor`;G07 已合并入 G06 三态。G05、G06、G08、G09、G10 已进入 `[~]` 候选待审;不修改已冻结页面的可见效果。
2. A-04 至 A-06:在冻结的 A01/A02 认证资产包上完成注册、重设和登录状态页面。
-3. G-03、G-05 至 G-12:在冻结的 G01 列表、题签、导航资产包上完成家谱模块;G07→G06 已完成,下一项为 T02→T01 的世系树状态收敛。
-4. T、F、R、N、M 模块:每个模块先确认母版和完整资产包,再批量实现其页面/状态。
-5. 全量四尺寸复核、真实接口接入与 Android 打包。
+3. G-03、G-05 至 G-12:家谱模块候选稿已全部完成;G07→G06 已收敛,G05、G06、G08 至 G12 均为 `[~]` 待审,集中审核留到全量候选完成后进行。
+4. T、F、R、N、M 模块:候选稿与 360 × 800 运行截图已全部完成;关键页面另有 412 × 915 截图和状态对比。
+5. 当前进入用户逐页视觉审核;全部 `[x]` 后再安排四尺寸总复核、接口阶段与 Android 打包。
## 7. 本轮完成前的验收
diff --git a/pages.json b/pages.json
index ff709aa..e2e6274 100644
--- a/pages.json
+++ b/pages.json
@@ -94,12 +94,6 @@
"disableScroll": true
}
},
- {
- "path": "pages/tree/t02-tree-states",
- "style": {
- "navigationStyle": "custom"
- }
- },
{
"path": "pages/tree/t03-member-profile",
"style": {
diff --git a/pages/family/f01-family-feed.vue b/pages/family/f01-family-feed.vue
index 378096c..f4e4694 100644
--- a/pages/family/f01-family-feed.vue
+++ b/pages/family/f01-family-feed.vue
@@ -1,69 +1,34 @@
-
+
-
- 家族共建家族记事发布动态
- {{ loadError }}
- {{ item.name }}{{ item.detail }}
- 家族近况全部动态
- {{ feed.type || feed.feedType || '动态' }}{{ feed.date || feed.createTime || '' }}{{ feed.title || '家族动态' }}{{ feed.content || feed.feedContent }}发布人:{{ feed.author || feed.creatorName || '族人' }}暂未发布家族动态
+
+
+
+
+ 汤氏家族圈家宴、通知与共同记忆
+
+ {{ item.label }}
+
+
+
+
+ {{ item.tag }} · {{ item.time }}{{ item.title }}{{ item.content }}发布人:{{ item.author }}
+
+
+
+
+ {{ feedState === 'empty' ? '还没有家族动态' : '家族动态暂不可用' }}{{ feedState === 'empty' ? '发布第一条通知、家宴记录或家族故事。' : '请稍后重新进入,已有内容不会受到影响。' }}
+
+ {{ feedState === 'error' ? '重新查看' : '发布家族动态' }}
+
-
-
diff --git a/pages/family/f02-publish-feed.vue b/pages/family/f02-publish-feed.vue
index bcd0cd0..3065e5e 100644
--- a/pages/family/f02-publish-feed.vue
+++ b/pages/family/f02-publish-feed.vue
@@ -1,36 +1,4 @@
-
-
-
-
- 记录此刻发布后,当前家谱的成员可以在家族圈查看。
-
-
-
-
-
-
-
+
+记录此刻分享通知、活动、家族故事或一段共同记忆。发布动态{{publishState==='success'?'动态已发布':'动态未发布'}}{{publishState==='success'?'家人现在可以在家族圈看到这条记录。':'请检查内容后重新发布,当前文字仍保留在页面中。'}}{{publishState==='success'?'继续发布':'重新填写'}}
+
+
diff --git a/pages/genealogy/g01-my-genealogies.vue b/pages/genealogy/g01-my-genealogies.vue
index 67e69f9..206c81c 100644
--- a/pages/genealogy/g01-my-genealogies.vue
+++ b/pages/genealogy/g01-my-genealogies.vue
@@ -278,7 +278,7 @@ const shortcuts = [
];
const openGenealogy = (genealogy) =>
- uni.navigateTo({ url: `/pages/genealogy/g05-genealogy-overview?id=${genealogy.id}` });
+ uni.navigateTo({ url: `/pages/genealogy/g05-genealogy-overview?genealogyId=${genealogy.id}` });
const createGenealogy = () =>
uni.navigateTo({ url: "/pages/genealogy/g03-create-genealogy" });
const applyToJoin = () => uni.navigateTo({ url: "/pages/genealogy/g06-search-genealogies" });
@@ -288,7 +288,7 @@ const toNotifications = () =>
const openShortcut = (key) => {
const paths = {
tree: "/pages/tree/t01-tree-overview",
- members: `/pages/genealogy/g05-genealogy-overview?id=${currentGenealogy.value.id}`,
+ members: `/pages/genealogy/g05-genealogy-overview?genealogyId=${currentGenealogy.value.id}`,
poem: "/pages/genealogy/g12-generation-poems",
applications: "/pages/genealogy/g10-application-review",
};
diff --git a/pages/genealogy/g05-genealogy-overview.vue b/pages/genealogy/g05-genealogy-overview.vue
index 8a61a15..a79da35 100644
--- a/pages/genealogy/g05-genealogy-overview.vue
+++ b/pages/genealogy/g05-genealogy-overview.vue
@@ -1,33 +1,71 @@
-
+
-
-
-
- {{ genealogy.hall || '堂号待补' }} · {{ genealogy.location || '所在地待补' }}
- {{ genealogy.name }}
- {{ genealogy.motto || '敦亲睦族,敬祖传家。' }}
- 共 {{ genealogy.memberCount || 0 }} 人已激活 {{ genealogy.activeCount || 0 }} 人{{ genealogy.visibility || '仅成员可见' }}
+
+
+
+
- {{ loadError || '正在载入家谱…' }}
-
-
- 家谱核心
-
- 世系树查看家脉关系
- 录入族人从首代开始完善
- 字辈谱传承行辈次序
- 入谱审核处理加入申请
+
+
+
+
+
+
+ {{ genealogy.hall || '堂号待补' }} · {{ genealogy.location || '所在地待补' }}
+ {{ genealogy.name }}
+ {{ genealogy.motto || '敦亲睦族,敬祖传家。' }}
+
+ 共 {{ genealogy.memberCount || 0 }} 人
+ 已激活 {{ genealogy.activeCount || 0 }} 人
+ {{ genealogy.visibility || '仅成员可见' }}
+
+
+
+
+
+ 世系树查看家脉关系
+
+
+ 录入族人从首代开始完善
+
+
+ 字辈谱传承行辈次序
+
+
+ 入谱审核处理加入申请
+
+
+
+
+ 家族近况进入家族圈查看动态查看
+
+
+ 家谱资料,仅向家人开放
+ 公开范围、访问说明与管理权由家谱管理员在设置中维护。
+
+
+
+
+
+ {{ stateTitle }}
+ {{ stateCopy }}
+
+
+ {{ overviewState === 'error' ? '重新查看' : '返回我的家谱' }}
- 家族近况进入家族圈查看动态查看
- 邀亲人,共建家谱族人申请加入后,由创建者审核确认。
-
+
diff --git a/pages/genealogy/g08-join-application.vue b/pages/genealogy/g08-join-application.vue
index d4a8c57..a589424 100644
--- a/pages/genealogy/g08-join-application.vue
+++ b/pages/genealogy/g08-join-application.vue
@@ -1,3 +1,131 @@
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+ 公开家谱入谱申请
+ 申请加入 {{ genealogyName }}
+ 请填写真实身份和亲属关系,管理员审核后会通过消息告知结果。
+
+
+
+ 真实姓名
+
+
+
+ 与家谱关系
+
+
+
+ 申请说明
+
+
+ 提交后可在“我的申请”中查看审核进度。
+
+
+ {{ isSubmitting ? '正在提交…' : '提交申请' }}
+
+
+
+
+ {{ joinState === 'success' ? '申请已送达' : '申请未提交' }}
+ {{ joinState === 'success' ? '等待管理员核实亲属关系' : '暂时无法提交申请' }}
+ {{ resultCopy }}
+
+
+ {{ joinState === 'success' ? '查看我的申请' : '重新填写' }}
+
+
+
+
+
+
+
+
+
diff --git a/pages/genealogy/g09-my-applications.vue b/pages/genealogy/g09-my-applications.vue
index 808c204..61d9751 100644
--- a/pages/genealogy/g09-my-applications.vue
+++ b/pages/genealogy/g09-my-applications.vue
@@ -1,3 +1,108 @@
-
-
-
+
+
+
+
+
+
+
+
+
+
+ 入谱申请进度审核结果会同步到消息中心
+
+
+
+
+ {{ item.genealogyName }}
+ {{ item.appliedAt }}
+ {{ item.relation }}
+ {{ statusLabel(item.status) }}
+ {{ item.status === 'APPROVED' ? '点按进入家谱' : item.status === 'PENDING' ? '请耐心等待管理员核实' : '可重新检索并提交申请' }}
+
+
+
+
+
+
+
+ {{ applicationState === 'empty' ? '还没有入谱申请' : '申请记录暂时无法读取' }}
+ {{ applicationState === 'empty' ? '从公开家谱检索开始,找到家谱后可提交加入申请。' : errorMessage || '请检查网络后重新查看。' }}
+
+
+
+
+ {{ applicationState === 'error' ? '重新查看' : '查找公开家谱' }}
+
+
+
+
+
+
+
+
diff --git a/pages/genealogy/g10-application-review.vue b/pages/genealogy/g10-application-review.vue
index bab1ff7..4cd33eb 100644
--- a/pages/genealogy/g10-application-review.vue
+++ b/pages/genealogy/g10-application-review.vue
@@ -1,16 +1,52 @@
-
+
-
-
- {{ loadError || '通过前请核实申请人的亲属关系;审核结果会通过通知告知对方。' }}
-
-
- {{ item.name }}{{ item.phone }}{{ item.appliedAt }}
- {{ item.relation }}
-
- {{ item.status === 'APPROVED' ? '已通过' : '已拒绝' }}
+
+
+
+
+
+
+
+ 核实亲属关系后再决定
+ 审核结果会通过消息告知申请人
+
+
+
+
+
+
+
+ {{ item.name }}
+ {{ item.phone }}
+ {{ item.appliedAt }}
+ {{ item.relation }}
+
+
+ 拒绝
+
+
+ 通过
+
+
+ {{ item.status === 'APPROVED' ? '已通过' : '已拒绝' }}
+
+
+
+
+
+
+
+ {{ reviewState === 'empty' ? '暂无待审核申请' : '审核列表暂时无法读取' }}
+ {{ reviewState === 'empty' ? '新的入谱申请会在这里出现,并同步发送消息提醒。' : errorMessage || '请检查网络或家谱权限后重试。' }}
+
+
+
+ 重新查看
- 暂无待审核申请
@@ -19,50 +55,79 @@
import { ref } from 'vue'
import { onLoad } from '@dcloudio/uni-app'
import PageHeader from '@/components/PageHeader.vue'
-import { appApi } from '@/utils/api.js'
import { genealogyContext } from '@/utils/genealogy-context.js'
const applications = ref([])
+const reviewSamples = [
+ { id: 1, name: '汤志成', phone: '139****6421', relation: '自述为汤正华堂侄 · 祖居洛阳', appliedAt: '今天 10:24', status: 'PENDING' },
+ { id: 2, name: '汤雨薇', phone: '136****2798', relation: '自述为汤正国之女 · 已补充长辈姓名', appliedAt: '昨天 18:02', status: 'PENDING' }
+]
const genealogyId = ref('')
-const loadError = ref('')
+const reviewState = ref('loading')
+const errorMessage = ref('')
-onLoad(async (query) => {
- genealogyId.value = query.genealogyId || genealogyContext.getCurrentGenealogyId()
- if (!genealogyId.value) { loadError.value = '未找到当前家谱,请从家谱总览进入。'; return }
+const loadApplications = (query = {}) => {
+ reviewState.value = 'loading'
+ errorMessage.value = ''
+ genealogyId.value = query.genealogyId?.value || query.genealogyId || genealogyId.value || genealogyContext.getCurrentGenealogyId()
+ if (query.state === 'empty') { reviewState.value = 'empty'; return }
+ if (query.state === 'error') { reviewState.value = 'error'; return }
+ if (!genealogyId.value) {
+ errorMessage.value = '没有找到当前家谱,请从家谱总览进入。'
+ reviewState.value = 'error'
+ return
+ }
genealogyContext.setCurrentGenealogyId(genealogyId.value)
- try {
- applications.value = await appApi.getPendingApplications(genealogyId.value)
- } catch (error) {
- loadError.value = error.message || '审核列表加载失败。'
- }
-})
-
-const audit = async (item, approved) => {
- try {
- await appApi.auditApplication(genealogyId.value, item.id, approved)
- item.status = approved ? 'APPROVED' : 'REJECTED'
- uni.showToast({ title: approved ? '已通过申请' : '已拒绝申请', icon: 'none' })
- } catch (error) {
- uni.showToast({ title: error.message || '审核失败,请稍后重试', icon: 'none' })
- }
+ applications.value = reviewSamples.map((item) => ({ ...item }))
+ reviewState.value = 'list'
}
-const showHelp = () => uni.showModal({ title: '审核说明', content: '仅确认与本家谱存在真实亲属关系的申请,避免错误入谱。', showCancel: false })
+
+onLoad(loadApplications)
+const confirmAudit = (item, approved) => {
+ uni.showModal({
+ title: approved ? '确认通过申请?' : '确认拒绝申请?',
+ content: approved ? '通过后,申请人将成为本家谱成员。' : '拒绝后,申请人会收到审核结果。',
+ confirmText: approved ? '确认通过' : '确认拒绝',
+ success: ({ confirm }) => {
+ if (!confirm) return
+ item.status = approved ? 'APPROVED' : 'REJECTED'
+ uni.showToast({ title: approved ? '已通过申请' : '已拒绝申请', icon: 'none' })
+ }
+ })
+}
+const showHelp = () => uni.showModal({ title: '审核说明', content: '请核对申请人的姓名、亲属关系和补充说明,仅确认与本家谱存在真实关系的申请。', showCancel: false })
diff --git a/pages/genealogy/g11-genealogy-settings.vue b/pages/genealogy/g11-genealogy-settings.vue
index fcc291e..9c00fa9 100644
--- a/pages/genealogy/g11-genealogy-settings.vue
+++ b/pages/genealogy/g11-genealogy-settings.vue
@@ -1,3 +1,131 @@
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+ 谱主可见 · 基础设置
+ 完善家谱访问规则
+ 这里仅安排接口支持的名称、公开范围与访问说明;管理权转让将在成员选择场景中单独处理。
+
+
+
+ 家谱名称
+
+
+
+
+ 公开范围
+
+
+
+ {{ option.label }}
+
+
+ {{ visibilityHint }}
+
+
+
+
+ 访问说明
+
+
+
+
+
+ 保存设置
+
+
+
+
+ {{ settingsState === 'success' ? '设置已保存' : '设置未保存' }}
+ {{ settingsState === 'success' ? '新的访问规则已经生效' : '暂时无法打开家谱设置' }}
+ {{ settingsState === 'success' ? `${genealogyDraft.name} · ${visibilityLabel}` : '请从家谱总览重新进入,当前修改不会被保留。' }}
+
+
+ {{ settingsState === 'success' ? '继续调整' : '重新查看' }}
+
+
+
+
+
+
+
+
+
diff --git a/pages/genealogy/g12-generation-poems.vue b/pages/genealogy/g12-generation-poems.vue
index d77a05d..3546c10 100644
--- a/pages/genealogy/g12-generation-poems.vue
+++ b/pages/genealogy/g12-generation-poems.vue
@@ -1,3 +1,148 @@
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+ 汤氏家谱 · 传承字序
+ 启宗敦本,继世传芳
+ 按世代查看字辈,当前家谱使用到“敦”字辈。
+
+
+
+ 第 {{ item.generationNo }} 世
+ {{ item.character }}
+ {{ item.current ? '当前字辈' : '传承字序' }}
+
+
+
+ 维护字辈诗
+
+
+
+
+ 批量维护
+ 录入连续字辈
+ 按照接口支持的连续文本录入,每个汉字对应一代;保存前可预览新字序。
+
+
+ 字辈内容
+
+
+
+ 缺失旧世代时
+
+
+ {{ stopMissingOldGeneration ? '停止并提醒' : '继续补录' }}
+
+
+ 预览:{{ previewCharacters || '尚未录入字辈' }}
+
+
+ 取消
+
+
+ 保存字辈
+
+
+
+
+
+ {{ poemState === 'empty' ? '尚未建立字辈' : '字辈暂不可用' }}
+ {{ poemState === 'empty' ? '从第一段传承字序开始' : '暂时无法读取字辈诗' }}
+ {{ poemState === 'empty' ? '管理员可以一次录入连续字辈,系统会按世代拆分展示。' : '请从家谱总览重新进入,或稍后再试。' }}
+
+ {{ poemState === 'empty' ? '开始录入' : '重新查看' }}
+
+
+
+
+
+
+
+
+
diff --git a/pages/notification/n01-message-center.vue b/pages/notification/n01-message-center.vue
index 1bcf815..0c0f9d7 100644
--- a/pages/notification/n01-message-center.vue
+++ b/pages/notification/n01-message-center.vue
@@ -1,59 +1,4 @@
-
-
-
-
- {{ loadError || '与家谱相关的提醒都会留在这里。' }}
- {{ item.title }}{{ item.content }}{{ item.time }}
-
-
-
-
-
-
+
+{{item.unread?'未读提醒':'已读'}} · {{item.time}}{{item.title}}{{item.content}}{{noticeState==='empty'?'暂时没有新消息':'消息中心暂不可用'}}{{noticeState==='empty'?'家谱申请、审核结果和家族提醒会留在这里。':'请稍后重新进入,已读状态不会受到影响。'}}{{noticeState==='error'?'重新查看':'前往入谱审核'}}
+
+
diff --git a/pages/profile/m01-profile-home.vue b/pages/profile/m01-profile-home.vue
index 4147586..9ee1067 100644
--- a/pages/profile/m01-profile-home.vue
+++ b/pages/profile/m01-profile-home.vue
@@ -1,58 +1,4 @@
-
-
-
- {{ profile.name ? profile.name.slice(0, 1) : '谱' }}{{ profile.name || '家谱用户' }}{{ profile.phone || '资料加载中' }} · {{ profile.role || '家谱成员' }}资料
- {{ loadError }}
- 待你处理家谱相关提醒与审核通知{{ unreadCount }}
-
-
-
-
-
-
-
-
-
+
+汤文清139****6421 · 家谱成员待你处理2 条家谱提醒与审核通知个人资料暂不可用请稍后重新进入,账号和家谱资料不会受到影响。
+
+
diff --git a/pages/tree/t01-tree-overview.vue b/pages/tree/t01-tree-overview.vue
index 098c82c..66e31a7 100644
--- a/pages/tree/t01-tree-overview.vue
+++ b/pages/tree/t01-tree-overview.vue
@@ -1,44 +1,119 @@
-
+
-
-
- 当前家谱世系查找编辑
-
-
- {{ loadError || '暂未录入族人' }}
- {{ member.name }}{{ member.relation }}{{ member.years }}
+
+
+
+
+
+
+ 汤氏家谱主支 · 第 12—14 世
+
+
+ 阅读提示
+ 关系维护
+
+
+
+
+
+
+
+
+ 第十二世
+ 第十三世
+ 第十四世
+
+
+ {{ member.name }}
+ {{ member.relation }}
+ {{ member.years }}
+
+
+
+
+ {{ stateCopy.eyebrow }}
+ {{ stateCopy.title }}
+ {{ stateCopy.copy }}
+
+
+ {{ stateCopy.action }}
+
+
- {{ selected.name }}第 {{ selected.generation }} 世 · {{ selected.relation }} · {{ selected.branch }}查看资料添加亲属
+
+
+
+
+ {{ selected.name }}
+ 第 {{ selected.generation }} 世 · {{ selected.relation }} · {{ selected.branch }}
+
+
+
+ 查看资料
+
+
+ 添加亲属
+
+
+
diff --git a/pages/tree/t03-member-profile.vue b/pages/tree/t03-member-profile.vue
index c011732..8499490 100644
--- a/pages/tree/t03-member-profile.vue
+++ b/pages/tree/t03-member-profile.vue
@@ -1,59 +1,86 @@
-
+
-
-
- {{ member.name.slice(0, 1) }}{{ member.name }}第 {{ member.generation }} 世 · {{ member.relation }} · 家谱成员
- {{ loadError || '正在载入成员档案…' }}
-
- 基本资料{{ item.label }}{{ item.value }}
- 亲属关系亲属关系将在编辑功能接入后完整维护。
- 生平事迹{{ member.introduction }}
-
+
+
+
+
+
+
+
+ {{ member.name.slice(0, 1) }}
+ {{ member.name }}第 {{ member.generation }} 世 · {{ member.relation }} · {{ member.branch }}
+
+ 基本资料
+
+ {{ item.label }}{{ item.value }}
+
+ 亲属关系
+
+ 长子 · 汤正国次子 · 汤正华
+
+
+ 完善成员档案
+
+
+
+ 成员档案暂不可用请从世系树重新选择成员,当前没有可展示的个人资料。
+ 返回世系树
+
+
-
-
diff --git a/pages/tree/t04-add-relative.vue b/pages/tree/t04-add-relative.vue
index 590bf4b..b46972a 100644
--- a/pages/tree/t04-add-relative.vue
+++ b/pages/tree/t04-add-relative.vue
@@ -1,3 +1,3 @@
-
-
-
+
+
+
diff --git a/pages/tree/t05-edit-member.vue b/pages/tree/t05-edit-member.vue
index a237570..be05abd 100644
--- a/pages/tree/t05-edit-member.vue
+++ b/pages/tree/t05-edit-member.vue
@@ -1,3 +1,3 @@
-
-
-
+
+
+
diff --git a/pages/tree/t06-edit-relationship.vue b/pages/tree/t06-edit-relationship.vue
index 05d564b..338557f 100644
--- a/pages/tree/t06-edit-relationship.vue
+++ b/pages/tree/t06-edit-relationship.vue
@@ -1,3 +1,3 @@
-
-
-
+
+
+
diff --git a/pages/tree/t07-member-directory.vue b/pages/tree/t07-member-directory.vue
index e7f8fef..22746d8 100644
--- a/pages/tree/t07-member-directory.vue
+++ b/pages/tree/t07-member-directory.vue
@@ -1,3 +1,72 @@
-
-
-
+
+
+
+
+
+
+
+
+ 查找
+
+
+
+ 家谱成员{{ filteredMembers.length }} 人 · 按世代排列
+
+
+ {{ item.name }}第 {{ item.generation }} 世 · {{ item.generationName }} · {{ item.branch }}{{ item.note }}
+
+
+
+
+ {{ directoryState === 'empty' ? '没有找到相关成员' : '成员目录暂不可用' }}{{ directoryState === 'empty' ? '换一个姓名、字辈或支系关键词再试。' : '请从当前家谱重新进入,成员资料不会受到影响。' }}
+
+
+
+
+
+
diff --git a/pages/tree/t08-member-states.vue b/pages/tree/t08-member-states.vue
index eba5c91..7d96efb 100644
--- a/pages/tree/t08-member-states.vue
+++ b/pages/tree/t08-member-states.vue
@@ -1,3 +1,67 @@
-
-
-
+
+
+
+
+
+
+
+
+ {{ item.label }}
+
+
+
+
+
+ {{ activeStatus.eyebrow }}{{ activeStatus.title }}{{ activeStatus.copy }}
+
+
+
+
+
+ {{ activeStatus.guideTitle }}
+ {{ line }}
+
+
+
+
+
+
diff --git a/scripts/capture-chrome-page.js b/scripts/capture-chrome-page.js
index 45b0ee5..68b5d1c 100644
--- a/scripts/capture-chrome-page.js
+++ b/scripts/capture-chrome-page.js
@@ -5,14 +5,14 @@ const [url, selector, output, width = '360', height = '800', action] = process.a
const renderSettleMilliseconds = 900
if (!url || !selector || !output) {
- throw new Error('Usage: node scripts/capture-chrome-page.js