diff --git a/components/GenealogyCard.vue b/components/GenealogyCard.vue
index ee41de9..9b8f417 100644
--- a/components/GenealogyCard.vue
+++ b/components/GenealogyCard.vue
@@ -198,16 +198,18 @@ defineEmits(["select"]);
margin-right: 6rpx;
}
.card-meta {
- color: $ink-muted;
+ color: #62584c;
font-size: 26rpx;
+ font-weight: 500;
}
.card-updated {
display: flex;
flex: 0 0 auto;
align-items: center;
margin-left: 10rpx;
- color: $ink-muted;
- font-size: 22rpx;
+ color: #62584c;
+ font-size: 24rpx;
+ font-weight: 500;
white-space: nowrap;
}
@@ -224,8 +226,9 @@ defineEmits(["select"]);
}
.card-role {
- color: $ink-muted;
- font-size: 24rpx;
+ color: #62584c;
+ font-size: 26rpx;
+ font-weight: 500;
white-space: nowrap;
}
.card-chevron {
diff --git a/components/ModulePage.vue b/components/ModulePage.vue
index 2f2829e..cfb4fe7 100644
--- a/components/ModulePage.vue
+++ b/components/ModulePage.vue
@@ -9,9 +9,8 @@
'module-state--error': moduleState === 'error'
}
]">
-
-
-
+
+
@@ -28,7 +27,7 @@
{{ field }}
{{ normalizedNote }}
- {{ page.action }}
+
@@ -37,7 +36,7 @@
{{ item[0] }}{{ item[1] }}点按查看详情
- {{ page.action }}
+
@@ -49,7 +48,7 @@
{{ item[0] }}{{ item[1] }}
- {{ page.action }}
+
@@ -58,7 +57,7 @@
第 {{ index + 1 }} 则{{ item[0] }}{{ item[1] }}
- {{ page.action }}
+
@@ -68,7 +67,7 @@
{{ item[0] }}{{ item[1] }}查看
- {{ page.action }}
+
@@ -76,7 +75,7 @@
{{ page.badge }} · 服务说明{{ page.lead }}{{ normalizedNote }}
- {{ page.action }}
+
@@ -86,27 +85,35 @@
{{ stateCopy.eyebrow }}{{ stateCopy.title }}{{ stateCopy.copy }}
- {{ stateCopy.action }}
+
+
diff --git a/components/PageHeader.vue b/components/PageHeader.vue
index f0a6716..3f6e6a6 100644
--- a/components/PageHeader.vue
+++ b/components/PageHeader.vue
@@ -8,7 +8,9 @@
-
+
@@ -27,7 +29,6 @@
const props = defineProps({
title: { type: String, required: true },
action: { type: String, default: '' },
- backLabel: { type: String, default: '返回' },
root: { type: Boolean, default: false },
unreadCount: { type: Number, default: 0 }
})
@@ -114,13 +115,14 @@ const goBack = () => uni.navigateBack()
background: #fff9ed;
}
-.header-back,
.header-action {
width: 100%;
font-size: 27rpx;
}
-.header-back { text-align: left; }
+.header-back { display: flex; width: 88rpx; height: 88rpx; align-items: center; justify-content: flex-start; }
+.header-back__icon { width: 42rpx; height: 42rpx; filter: brightness(0) invert(1); transform: scaleX(-1); }
+.header-back--pressed { opacity: .62; }
.header-action { color: #ffe3a7; text-align: right; }
.header-title {
diff --git a/components/tree/TreeMemberForm.vue b/components/tree/TreeMemberForm.vue
index 7ce6d8d..c5967cc 100644
--- a/components/tree/TreeMemberForm.vue
+++ b/components/tree/TreeMemberForm.vue
@@ -6,7 +6,7 @@
'form-state--conflict': formState === 'conflict',
'form-state--error': formState === 'error'
}">
-
+
@@ -22,7 +22,7 @@
{{ config.note }}
- {{ config.action }}
+ {{ config.action }}
@@ -32,36 +32,33 @@
{{ resultCopy.copy }}
- 返回核对
+ 返回核对
- 查看冲突
+ 查看冲突
- {{ formState === 'success' ? '继续完善' : '重新填写' }}
+ {{ formState === 'success' ? '继续完善' : '重新填写' }}
-
-
-
-
- 关系校验规则
- 关系冲突说明
- 同一成员不能同时存在两个生父,也不能形成上下代循环。请返回世系树核对原关系后再调整。
-
- 我知道了
-
-
-
-
+
diff --git a/docs/superpowers/plans/2026-07-15-a01-asset-first-design.md b/docs/superpowers/plans/2026-07-15-a01-asset-first-design.md
index 255d005..2822434 100644
--- a/docs/superpowers/plans/2026-07-15-a01-asset-first-design.md
+++ b/docs/superpowers/plans/2026-07-15-a01-asset-first-design.md
@@ -24,8 +24,8 @@
**文件:**
-- 密码:`docs/design/screens/handoff/2026-07-15/A01-visual-source-password-selected-v2-841x1870.png`
-- 验证码:`docs/design/screens/handoff/2026-07-15/A01-visual-source-sms-selected-v1-841x1870.png`
+- 密码与验证码的可恢复源:`docs/design/assets/a01-vnext/source/A01-layered-source-v1.psd`
+- 图层与导出清单:`docs/design/assets/a01-vnext/source/a01-psd-manifest.json`
**验收:**
diff --git a/docs/superpowers/plans/2026-07-16-a01-red-hall-ink-login.md b/docs/superpowers/plans/2026-07-16-a01-red-hall-ink-login.md
index fa971a2..4d6bacf 100644
--- a/docs/superpowers/plans/2026-07-16-a01-red-hall-ink-login.md
+++ b/docs/superpowers/plans/2026-07-16-a01-red-hall-ink-login.md
@@ -25,8 +25,8 @@
### Task 1: 锁定选定视觉证据与新资产契约
**Files:**
-- Create: `docs/design/screens/handoff/2026-07-16/A01-selected-password-red-hall-ink-412x915.png`
-- Create: `docs/design/screens/handoff/2026-07-16/A01-selected-sms-red-hall-ink-412x915.png`
+- Keep: `docs/design/screens/handoff/2026-07-16/A01-current-password-sms-contact-824x915.png`
+- Source: `docs/design/assets/a01-vnext/source/A01-layered-source-v1.psd`
- Modify: `tests/a01-a02-ui-contract.ps1`
- Create later: `static/assets/modules/auth/opaque/a01-red-hall-ink-backdrop-v1.png`
diff --git a/docs/superpowers/specs/2026-07-13-a01-entry-hierarchy-amendment-design.md b/docs/superpowers/specs/2026-07-13-a01-entry-hierarchy-amendment-design.md
index 1352c6f..17b3ce5 100644
--- a/docs/superpowers/specs/2026-07-13-a01-entry-hierarchy-amendment-design.md
+++ b/docs/superpowers/specs/2026-07-13-a01-entry-hierarchy-amendment-design.md
@@ -16,6 +16,6 @@
## 视觉与范围
- 保留已确认的家祠朱砂红头、暖宣纸、古金云纹、墨褐标题、淡墨建筑与山水背景方向。
-- 已归档效果稿 v3:`docs/design/screens/A01-启动登录引导-效果稿-v3-文字注册入口.png`。
+- 原 v3 效果稿已转入项目外历史归档;仓库内当前可恢复源为 `docs/design/assets/a01-vnext/source/A01-layered-source-v1.psd`。
- v1、v2 效果稿保留为历史,不删除、不覆盖,且不能作为当前布局依据。
- 本次只调整设计记录、效果稿与后续验收口径;不改 uni-app 页面、接口、真实登录或 Android 打包。
diff --git a/docs/superpowers/specs/2026-07-15-a01-layered-psd-assets-design.md b/docs/superpowers/specs/2026-07-15-a01-layered-psd-assets-design.md
index c31fc64..84dd8fc 100644
--- a/docs/superpowers/specs/2026-07-15-a01-layered-psd-assets-design.md
+++ b/docs/superpowers/specs/2026-07-15-a01-layered-psd-assets-design.md
@@ -6,8 +6,8 @@ A01 不再以 Figma 作为设计与资产生产环节。重新建立一份真正
现有两张选定效果图只保留为风格、构图和状态参考,不再作为必须反向拆分的扁平像素真值:
-- `docs/design/screens/handoff/2026-07-15/A01-visual-source-password-selected-v2-841x1870.png`
-- `docs/design/screens/handoff/2026-07-15/A01-visual-source-sms-selected-v1-841x1870.png`
+- `docs/design/assets/a01-vnext/source/A01-layered-source-v1.psd`
+- `docs/design/assets/a01-vnext/source/a01-psd-manifest.json`
新的最终视觉真值是用户确认后的 PSD 组装效果。只有这样,设计稿与页面才能使用同一批美术资产,避免重新生成导致的偏差。
diff --git a/docs/交接记录.md b/docs/交接记录.md
index 1accbf9..86784a4 100644
--- a/docs/交接记录.md
+++ b/docs/交接记录.md
@@ -3,7 +3,7 @@
> 最后更新:2026-07-16
> 用途:更换电脑、重新打开 Codex/GPT 后的唯一接管入口。
> 当前阶段:只做页面样式与视觉流程验收;不对接接口,不做功能验收。
-> 当前施工停点:14 个活动页面已有内部 H5 候选;A06 另行封存并保留实现。用户下一审核页是 G01,无人审核时下一施工页是 T07 成员目录。
+> 当前施工停点:52 个活动页面均已有基础内部 H5 样式候选;A06 另行封存并保留实现。用户下一审核页仍是 G01,当前没有未施工页面,后续按用户逐页审核意见返工。
## 1. 接管后先复述的准确停点
@@ -12,14 +12,17 @@
- `docs/验收规划.md` 当前活动页统计为:**52 个待审核、0 个已验收、0 个返工标记、0 个冻结**;A06 属于封存页,不计入这些数量。
- 历史上曾标记通过的 A01、A02、A04、A05、A06、G01、G03 只保留为历史视觉证据;活动页必须在本轮重新审核,A06 按最新决定封存。
- 当前没有任何页面处于视觉冻结状态;只有用户在本轮明确说“通过”后,对应页面才能改为 `[x]` 并冻结。
-- 2026-07-16 已完成 **A01、A04、A05、G01、G03、G05、G06、G08、G09、G10、G11、G12、T01、T04** 共 14 个活动页面的内部 H5 候选、聚焦合同和运行时检查;这些结果都只是待审候选,不能写成“用户已验收”或“已冻结”。A06 的候选实现和证据另行封存。
+- 2026-07-16 用户要求在次日审核前把全部页面样式先设计并落地。当前 **52 个活动页面** 均已有基础内部 H5 样式候选:A 系列保留已确认视觉;G 系列以 G01 为母体;T、F、R、N、M 各自拥有独立长背景和内容气质,但共享浅色国风、楷体、宣纸、朱砂、古金与 A 系列控件。静态合同与无截图运行 smoke 已覆盖主要页面状态;这些结果都只是待审候选,不能写成“用户已验收”或“已冻结”。A06 的候选实现和证据另行封存。
- A01 当前候选已落实:闭眼图标保留中心瞳孔;密码行使用项目现有锁图标;短信验证码输入图标使用自生成的“消息气泡 + 三点”;不得恢复勾选图标或临时第三方 SVG。密码/短信两态代表联系表为 `docs/design/screens/handoff/2026-07-16/A01-current-password-sms-contact-824x915.png`。
- 2026-07-16 用户已逐态确认 A04 当前可实现的 8 类 H5 视觉状态;A04 继续保持 `[~]`,因为真实滑动验证必须使用接口组件自带样式,注册成功/失败真实链路和 Android/HBuilderX 复核尚未完成。当前用户逐页审核位置已推进到 **A05 重置密码**。
- A05 已按用户决定向 A01 完整收拢 Logo、全局楷体、标题分隔、两处朱砂按钮、浅色卷轴 Toast 和成功结果卷轴;旧验证面板、伪“验证码已发送”和“重新获取”状态已移除。2026-07-16 用户已逐态确认当前 7 类 H5 视觉状态;返回 A01 后“回填手机号、聚焦密码框”由用户明确延期到真实重置接口链路接入时解决,不阻塞当前样式验收。真实滑动验证、接口结果和 Android/HBuilderX 仍待复核,A05 继续保持 `[~]`、不冻结。
- A06 已向 A01 完整收拢 Logo、全局楷体、标题分隔、页面主按钮、恢复层按钮和恢复卷轴。2026-07-16 用户确认样式没有问题,但判断当前流程暂时不用该页,并选择第二种封存方式:从 `pages.json` 和活动验收表移除,保留 `pages/auth/a06-auth-status.vue`、测试、设计记录与截图证据。A06 不标 `[x]`、不冻结,也不计入活动页 `[~]` 数量;运行 smoke 在封存期间明确 SKIP。
-- G01 审核中已把“加入申请”三张卡改为独立 `12rpx` 间距并通过 H5 合同与运行截图;页面尚未整体通过。用户随后提出顶部标题、当前家谱大卡片和四个快捷入口应固定,仅从“我创建的”开始滚动;该结构留到下一轮继续讨论,尚未改代码。
-- G01 旧底部山水存在主体过低和上部空白问题。2026-07-16 已生成 A/B/C 三个 `1024×1536` 背景母版并保存到 `docs/design/assets/g01-background/masters/`,建立 `g01-background-candidates.json`、Python 绿幕/色彩处理和 Node 编排。本机三候选构建的尺寸、可见绿幕、透明 RGB、体积和 sRGB 检查均为 0 错误;尚未由用户选择,不得接入页面。换机命令和质量哈希见 `docs/design/G01_列表背景候选与换机重建.md`。
-- 当前施工停在 **T04 新增亲属之后**,无人审核时下一页严格按 `docs/验收规划.md` 进入 **T07 成员目录**。T01 收敛时删除了未注册路由但仍被 Git 跟踪的旧占位文件 `pages/tree/t02-tree-states.vue`;T04 复核时把共用成员表单残留的原生 `uni.showModal` 替换为项目自定义冲突说明层。当前用户逐页审核已完成 A01、A04、A05 的可实现 H5 状态审视并封存 A06,下一活动审核页为 **G01 我的家谱**;尚缺的真实接口状态与 Android/HBuilderX 复核继续保留为待办。
+- G01 审核中已把“加入申请”三张卡改为独立 `12rpx` 间距并通过 H5 合同与运行截图;页面尚未整体通过。用户随后确认顶部标题、当前家谱大卡片、四个快捷入口和金色分隔线固定,仅从“我创建的”开始独立滚动;2026-07-16 已按该设计形成内部 H5 候选,五档尺寸、弹层保持位置、切换家谱回顶和底部入口可达性均通过运行 smoke,等待用户查看实际页面,不能写成整页已验收。
+- G01 旧 C 图固定贴底后,在高屏上与纯色宣纸承接区出现明显横向分界线。2026-07-16 用户随后确认新生成的连续长背景,并决定仍作为 G01、G03、G05、G06、G08、G09、G10、G11、G12 共 9 个活动 G 页面的公共背景。ImageGen 原稿 `793×1983` 已原样保留;确定性归一化母版为 `1536×3840`,APP 运行图为 `1440×3600`,唯一运行入口是 `GenealogyPageBackground.vue` 和 `genealogy-page-background-long.png`。图片继续以 `widthFix` 按页面宽度等比完整显示并固定贴底,短屏只裁顶部安全区,左右不裁剪、不变形;用户查看多档对比后确认共享图片画层使用 `opacity: 0.28`,宣纸底色与页面内容层不变。旧 A/B/C 母版和旧 C 运行图均保留且不再作为当前入口。本机四候选构建、Python/Node/静态契约、G01 四档基础尺寸与 `412×1000` 压力档、其余 G 页面运行 smoke 均已覆盖,H5 截图未见旧横向接缝。该公共背景决定不等于 G01 或其他 G 页面整页验收;Android/HBuilderX 和 4GB Android 图片解码/切页/回收仍未复核。用户已查看 G01 固定区/独立滚动实际 H5 页面并确认背景浓度,但未给出 G01 整页正式验收。换机命令和质量哈希见 `docs/design/G01_列表背景候选与换机重建.md`。
+- 用户随后指出 G01“加入申请”说明和状态文字偏小偏浅;首轮 `26rpx / 25rpx` 实际生效但肉眼变化不够明显,用户最终选择 B 方案:说明使用 `28rpx / 500 / #62584c / 1.4`,状态使用 `27rpx / 600`,审核中为 `#7f4f16`、被拒绝保留 `#a7160c`、已退出为 `#62584c`。本次全线视觉收敛又把当前家谱和列表卡片的地区、人数、角色、更新时间统一改为 `#62584c` 与中等字重;共享家谱卡“更新于”等现已纳入该全局可读性调整。Android/HBuilderX 与 G01 整页验收仍待完成。
+- 全局控件现以 A 系列为唯一视觉标准:新增 `AppButton.vue`、`AppDialog.vue`、`AppToast.vue`、`AppLoading.vue`;活动代码中的旧不透明 A01 按钮引用与 `uni.showToast`、`uni.showModal`、`uni.showLoading`、`uni.showActionSheet` 均为 0。普通 `PageHeader` 已把“返回”文字换成真实左箭头。G01/G09/G10 与 T04–T06 的当前对话场景已接入 A 系列卷轴对话框;其他按钮统一消费 A 系列透明卷轴资产。
+- T、F、R、N、M 已分别生成并接入 `1440×3600` 长背景,正式输入保存在 `docs/design/assets/module-backgrounds/masters/`,运行资产位于各模块 `static/assets/modules/*/opaque/`,重建脚本为 `design-pipeline/scripts/build_module_page_backgrounds.py`,清单为 `design-pipeline/manifests/module-page-backgrounds.json`。G 系列继续只使用既定 G01 公共长背景,不与其他模块背景混用。
+- 当前没有未施工页面。用户下一活动审核页仍为 **G01 我的家谱**;后续只根据用户逐页审核意见做局部返工,不再按旧“无人审核时施工 T07”的规则自动推进。真实接口状态、Android/HBuilderX、系统字体放大、软键盘和 4GB Android 长图性能仍待复核。
如果其他文档仍写“53/54 条路由、7 个已验收或冻结”,那是旧阶段记录。当前状态和验收数量以本文件、实际 `pages.json`、`docs/验收规划.md` 为准。
@@ -46,7 +49,7 @@ git status --short
必须保留全部已有未提交改动。不要因为文件是未跟踪状态就删除,也不要用旧提交覆盖当前工作区。
-随后先向用户复述:52 条活动路由、52 页全部待审核、当前无冻结页、已有 14 页活动 H5 候选、A06 封存保留、用户下一审核页是 G01、无人审核时下一施工页是 T07,以及准备使用的技能。复述准确前不要继续修改页面。
+随后先向用户复述:52 条活动路由、52 页全部待审核、当前无冻结页、52 页均已有基础内部 H5 样式候选、A06 封存保留、用户下一审核页是 G01、当前没有未施工页面,以及准备使用的技能。复述准确前不要继续修改页面。
## 3. 文档权威顺序
@@ -93,7 +96,7 @@ git status --short
- 卷轴祥云微信按钮:`static/assets/foundation/transparent/a01-scroll-secondary-v3.png`
- 卷轴祥云 Toast:`static/assets/foundation/transparent/a01-scroll-toast-v3.png`
- 卷轴祥云安全验证弹窗:`static/assets/modules/auth/transparent/a01-scroll-dialog-v3.png`
-- 最新可跨电脑查看的代表图:`docs/design/screens/handoff/2026-07-15/A01-current-sms-generated-412x915.png`
+- 最新可跨电脑查看的代表图:`docs/design/screens/handoff/2026-07-16/A01-current-password-sms-contact-824x915.png`
`static/assets/modules/auth/transparent/a01-icon-sms-code-v1.svg`、`a01-icon-verification-v1.png` 等未引用候选仍可能存在于工作区。当前不要顺手清理;页面样式全部完成后再单独做文档与资产清理。
@@ -173,28 +176,11 @@ http://localhost:5173/#/pages/auth/a01-entry
6. 内部检查 320×568、360×640、360×800、412×915;默认只向用户展示一张代表图。密码/短信等复杂状态用一张联系表,不连续发送大量对比图。
7. 用户明确确认 A01 通过后,才把 `docs/验收规划.md` 中 A01 从 `[~]` 改为 `[x]` 并冻结;否则保持 `[~]`,明确返工时改 `[!]`。
-### 第三步:无人审核期间从 T01 继续施工;用户审核时以当前审核页优先
+### 第三步:52 页基础候选已覆盖;用户审核时以当前审核页优先
-截至 2026-07-16,以下 14 个活动页面已生成内部候选并完成聚焦检查,但仍全部为 `[~]`:
+截至 2026-07-16,`pages.json` 中 52 个活动页面均已有基础内部 H5 样式候选,但仍全部为 `[~]`,不表示用户已验收。G 系列以 G01 为风格母体,T、F、R、N、M 已形成同一浅色国风主题下的独立模块背景;A 系列按钮、弹窗、Toast 和 Loading 为全局控件标准。
-```text
-A01 登录
-→ A04 注册
-→ A05 重置密码
-→ G01 我的家谱
-→ G03 创建家谱/录入始祖
-→ G05 家谱总览
-→ G06 搜索/邀请码加入
-→ G08 加入申请
-→ G09 我的申请
-→ G10 入谱审核
-→ G11 家谱设置
-→ G12 字辈诗
-→ T01 世系树
-→ T04 新增亲属
-```
-
-用户下一活动审核页是 `G01 我的家谱`。下一施工页是 `T07 成员目录`,随后继续 T03、T05 等验收表顺序。若用户开始逐页审核或指出返工项,立即停下后续施工,回到用户当前指定页面;只有用户明确说“通过”后才能把活动页面改为 `[x]` 并冻结。A06 不在该队列内,其源码、测试和证据保留供未来恢复。
+用户下一活动审核页是 `G01 我的家谱`,当前没有未施工页面。若用户开始逐页审核或指出返工项,只处理用户当前指定页面;只有用户明确说“通过”后才能把活动页面改为 `[x]` 并冻结。A06 不在该队列内,其源码、测试和证据保留供未来恢复。
真实入口优先。开发者直达路由只用于排错,不能冒充流程可达证据。不同用户身份、空态、加载、失败、权限、审核中、被拒绝、已退出/移除等状态必须在同一页面验收项下覆盖。
@@ -287,6 +273,8 @@ node scripts/capture-chrome-page.js `
- H5 运行时 smoke 分别通过:A01、A04、A05、G01、G03、G05、G06、G08-G10、G11-G12、T01、T03-T08;A06 因路由封存明确输出 `SKIP archived route`。G05 与 T03-T08 在串联 CDP 测试中曾因页面目标重建瞬时失败,独立重跑均已通过;不要把该诊断噪声写成功能缺陷,也不要隐瞒独立复核方式。
- 实际活动路由统计为 52;A06 源码保留但未注册。
- 长期代表图集中在 `docs/design/screens/handoff/2026-07-16/`,并已登记到 `docs/design/视觉证据索引.md`;这些仍是 H5 候选,Android/HBuilderX 真机或模拟器复核尚未完成。
+- 本轮全模块基础视觉的 12 组专项静态合同、10 组无截图 H5 运行 smoke、52 路由合同、编译审计、Vue 3 入口合同、文档合同和清单合同已通过;五张模块长背景可重复构建,输出尺寸与 SHA-256 和交接清单一致。
+- 两个旧总合同仍与最新权威决定冲突,未为绿灯而放宽:`core-flow-contract.ps1` 仍要求视觉阶段的 G03 调用 `appApi.createPerson`;`foundation-asset-audit.ps1` 仍把已确认并全局采用的 A 系列 `-v1/-v2/-v3` 资产统一判作临时名。当前专项 G03 静态/运行合同和全局 A 系列视觉合同均已通过。
- 仓库交接截图体积合同未通过,具体数据与处置边界见第 12 节。
先跑当前页面的聚焦验证。A01 当前最小集合:
@@ -326,7 +314,7 @@ GPT 不操作 Git。用户切换电脑前应自行确认以下内容已纳入版
- `docs/交接记录.md`
- `docs/design/视觉证据索引.md`
- `design-qa.md`
-- `docs/design/screens/handoff/2026-07-15/A01-current-sms-generated-412x915.png`
+- `docs/design/screens/handoff/2026-07-16/A01-current-password-sms-contact-824x915.png`
- `docs/design/screens/handoff/2026-07-16/` 中 A01 至 G12 的当前代表图
- A01 当前页面实际引用的全部新增 PNG 资产
- 2026-07-16 新增的各页面聚焦合同、运行时 smoke、截图脚本和实施计划
@@ -340,10 +328,10 @@ GPT 不操作 Git。用户切换电脑前应自行确认以下内容已纳入版
### 2026-07-16 下班前资产与清理交接
-- G01 已保存 A/B/C 三个列表背景候选母版;候选尚未由用户选择,也未接入页面。页面“上方固定、下方列表独立滚动”的结构问题留待下一轮继续讨论。
+- G01 已保存 A/B/C 历史母版与旗舰长屏母版;用户已选择旗舰长屏并接入为 9 个 G 页面的公共背景,且确认共享图片画层使用 28% 不透明度,历史输入/输出继续保留,不删除。页面“上方固定、下方列表独立滚动”已按用户确认方向形成内部 H5 候选,用户已查看实际 H5 页面并确认背景浓度,五档运行证据已更新;G01 整页仍未验收,Android/HBuilderX 仍待复核。
- 跨电脑重建入口为 `npm.cmd --prefix design-pipeline run build:g01-background-candidates`,完整环境、依赖、输出哈希与可复现边界见 `docs/design/G01_列表背景候选与换机重建.md`。
- 上传前审计只删除了两张无任何引用且已被新版证据替代的 2026-07-15 A01 旧全页截图,共减少 3,590,742 字节;精确清单见 `docs/design/上传前文件清理审计_2026-07-16.md`。
-- 清理后 handoff 专项目录仍为 50 个文件、29,887,097 字节,继续超过 35 个文件/20MB 合同。未删除其他被引用历史证据,未放宽阈值,归档策略仍需用户决定。
+- 2026-07-17 用户确认上传前清理后,handoff 专项目录为 30 个文件、16,899,601 字节;连同 `docs/design/screens/` 根目录保留的四档 A01 栅格图和 G01 v5 稿,全目录为 35 个文件且低于 20MB,满足仓库截图合同。20 张被新版联系表/正式母版替代的 handoff 旧图、7 张被正式 PSD/当前证据替代的早期整页稿已删除并迁移长期引用。生成母版、清单、脚本、测试、`requirements.txt` 和 APP 运行图均保留。
2026-07-16 推送失败根因已处理:原本地提交包含约 **229,085,446 字节**新 Blob,混入嵌套 `node_modules`、生成预览、4 个大型 PSD 和候选中间 PNG,压缩上传包达到 81.39MiB 后被远端断开。清单改为正式运行资产自包含后,上述四类目录已从提交和本机删除;最新待推送提交的新 Blob 总量复核约 **20,518,032 字节**。旧大对象可能暂时存在于本机 `.git` reflog/对象库,但不再由最新提交引用,也不会随本次正常推送上传;不要为清理它们执行 reset 或手工删除 `.git` 对象。
diff --git a/docs/验收规划.md b/docs/验收规划.md
index c979cad..1884a9f 100644
--- a/docs/验收规划.md
+++ b/docs/验收规划.md
@@ -20,6 +20,8 @@
1. 页面在真实运行环境中打开;流程页优先从上游可见入口进入,尚未实现入口时明确标记 `⚠`,不能冒充流程设计完整。
2. 正常、加载、空、失败、权限、校验和成功等适用状态的视觉呈现均已检查;本阶段只验状态外观,不验证后台结果真伪。
3. 基础版本只验收当前浅色国风主题,并在 320×568、360×640、360×800、412×915 四个尺寸确认无溢出、裁切、遮挡或错位;深色与跟随系统整体延期到下一版本,不作为本轮 52 页通过条件。
+
+G01 公共背景在上述四档验收尺寸之外,额外增加 `412×1000` 超高屏压力测试,用于确认 `1440×3600` 连续长图固定贴底时整屏覆盖、下方列表叠放和横向宽度仍然稳定;该压力尺寸不替代四档基础合同,也不扩大其他 51 个页面的当前验收门槛。
4. 默认系统字号和约 1.3 倍系统字号均可完整操作;关键按钮、表单错误、姓名、关系和操作结果不得截断,空间不足时允许合理换行或滚动,不得强行缩小文字或遮挡主操作,并使用超长族谱名、生僻姓名完成边界检查。
5. 状态栏、底部手势区、软键盘、系统返回和长文本不会破坏页面。
6. 点击反馈、加载、滚动、动画和图片解码在当前静态/Mock 数据下无明显卡顿。
@@ -120,6 +122,8 @@
弹窗、卡片、按钮和装饰面继续遵守完整位图规则:完整视觉面由独立不透明位图承载,透明 PNG 只作叠加装饰;CSS 只负责布局、文字、遮罩、状态和轻量动效。
+G01、G03、G05、G06、G08、G09、G10、G11、G12 共 9 个活动 G 页面统一使用用户选定的“旗舰长屏连续云竹亭台宣纸景”公共背景。背景由 `GenealogyPageBackground.vue` 单一维护,运行图为 `1440×3600`,按页面宽度等比完整显示并固定贴底,左右不裁剪、不变形;顶部疏竹淡云属于短屏安全裁切区,高屏不再使用纯色区拼接。用户查看多档 H5 对比后确认共享图片画层使用 `opacity: 0.28`,宣纸底色、标题栏、卡片、文字、按钮和底栏保持原有不透明度。旧 A/B/C 母版和旧 C 运行图保留为历史输入/输出,不再作为当前页面入口。该公共决定不等于任一页面已经验收,各页仍需按真实状态和四档尺寸分别审核;Android/HBuilderX 与 4GB Android 图片解码、切页和回收仍待复核。
+
所有表单采用“就近显示错误”:单字段错误显示在对应输入框下;关联错误同时标记相关字段;页面级错误显示在提交区附近;网络或系统错误使用自定义结果弹层。提交时错误字段执行一次 200–260ms、3–5px 的横向视觉抖动,只使用 `transform`,不调用手机振动、不循环闪烁;动画必须与静态错误描边和文字同时存在,减少动态效果时仅保留静态提示。
基础版本固定使用当前浅色国风主题,M10“设置与关于”不展示尚未生效的外观模式入口,也不实现主题切换、持久化或跟随系统。深色与跟随系统统一延期到下一版本;升级时继续使用统一主题变量管理背景、文字、边框、遮罩、状态色、状态栏图标和必要位图资产,禁止依赖系统自动反色或在页面内散落覆盖样式。下一版本的主题切换、过渡、持久化和系统联动必须另建产品合同与验收计划。
@@ -151,14 +155,14 @@
| 状态 | 编号 | 验收项 | 通过标准 |
| --- | --- | --- | --- |
-| `[ ]` | C01 | 自定义轻提示 | 普通提示、校验错误、操作成功均使用统一家谱视觉;替换 `uni.showToast` |
-| `[ ]` | C02 | 自定义信息弹窗 | 审核说明、关系冲突和功能说明使用单按钮信息弹窗 |
-| `[ ]` | C03 | 自定义确认弹窗 | 通过、拒绝、删除、退出登录等场景区分主按钮、次按钮和危险操作 |
+| `[~]` | C01 | 自定义轻提示 | 已建立 A 系列卷轴 `AppToast` 并清零活动代码中的 `uni.showToast`;待逐页审核提示位置、时长和长文案 |
+| `[~]` | C02 | 自定义信息弹窗 | 已建立 A 系列卷轴 `AppDialog`,审核说明与关系冲突已接入;待逐页审核内容密度 |
+| `[~]` | C03 | 自定义确认弹窗 | 已建立单双按钮统一结构,撤回与审核确认已接入;危险操作强度待逐页审核 |
| `[ ]` | C04 | 自定义结果弹窗 | 保存成功、提交失败、网络失败和可重试结果语义明确 |
-| `[ ]` | C05 | 页面级加载 | 首屏使用结构稳定的骨架屏;按钮在原位置显示内部进度;局部卡片仅覆盖局部;列表统一下拉刷新与底部加载状态;仅在页面结构完全不可预知时使用全屏加载,不闪白屏或突然跳布局 |
+| `[~]` | C05 | 页面级加载 | 已建立自定义 `AppLoading` 且活动代码无原生 Loading;骨架、局部加载、下拉刷新和长列表加载仍需逐页及接口阶段补全 |
| `[ ]` | C06 | 按钮级加载 | 登录、提交、保存期间立即禁用重复点击并显示明确进度 |
| `[ ]` | C07 | 权限与进度 | 相册、上传、分享权限及上传进度、取消、失败重试均有自定义反馈 |
-| `[ ]` | C08 | 基础主题与四尺寸适配 | 当前浅色国风主题通过 320×568、360×640、360×800、412×915;状态栏、弹窗和页面颜色一致且无溢出、裁切和错位;深色与跟随系统延期到下一版本 |
+| `[~]` | C08 | 基础主题与四尺寸适配 | 52 个活动页面已形成浅色国风基础 H5 候选:G 以 G01 为母体,T/F/R/N/M 各有独立模块风格;Android 与逐页四尺寸视觉审核仍待完成 |
| `[ ]` | C09 | 安全区适配 | 状态栏、刘海、底部手势区和固定导航不遮挡页面内容或操作 |
| `[ ]` | C10 | 软键盘适配 | 输入框、校验信息和提交按钮不被软键盘遮挡,页面可滚动到当前字段 |
| `[ ]` | C11 | 字体与长文本 | 默认字号与约 1.3 倍系统字号下,Android 字体回退、超长族谱名、生僻姓名和长文案均不重叠、不截断关键含义、不遮挡主操作 |
@@ -185,7 +189,7 @@
| 状态 | 序号 | 页面 | 真实入口与必须覆盖的可能性 |
| --- | ---: | --- | --- |
-| `[~]` | 4 | G01 我的家谱 | 登录成功→同页多状态;空态保留搜索/邀请码/创建三入口,以搜索为主、邀请码快捷、创建为次并提示先确认无现有家谱;三分组列表、顶部当前项切换、上次选择恢复、待录入始祖/继续完善、审核中、被拒绝、已退出/被移除、加载、失败、添加家谱弹层、通知入口 |
+| `[~]` | 4 | G01 我的家谱 | 登录成功→同页多状态;空态保留搜索/邀请码/创建三入口,以搜索为主、邀请码快捷、创建为次并提示先确认无现有家谱;三分组列表、顶部当前项切换、上次选择恢复、待录入始祖/继续完善、审核中、被拒绝、已退出/被移除、加载、失败、添加家谱弹层、通知入口;用户已确认 `1440×3600` 连续长图作为 9 个 G 页面的公共背景,并在查看多档实际 H5 对比后确认共享图片画层使用 28% 不透明度;用户已选择标题栏、当前家谱卡、四快捷入口和分隔线固定,从“我创建的”开始独立滚动;“加入申请”最终采用 B 方案(说明 `28rpx / 500`、状态 `27rpx / 600`),当前家谱与列表卡片的地区、人数、角色、更新时间进一步统一为更深颜色与中等字重;添加家谱/切换家谱弹层和按钮已向 A 系列卷轴标准收拢;G01 整页尚未正式验收,Android/HBuilderX 与 4GB Android 图片性能仍待审核 |
| `[~]` | 5 | G03 创建家谱 | G01 空态或“添加家谱”→创建独立家谱;姓氏、谱名、堂号、所在地、访问规则,创建前提示搜索潜在已有家谱;覆盖必填校验、创建中、失败和已创建但始祖未完成的中断恢复;成功后直接成为创建者→录入始祖→进入 G05 总览,不直接跳 T01;下属支系创建待接口提供上级谱与权限字段 |
| `[~]` | 6 | G06 加入家谱 | G01 空态或“添加家谱”→加入;搜索/邀请码双模式、地区与谱名筛选;结果卡展示谱名、姓氏、地区、堂号、所属上级谱、当前支系、管理/认证信息、成员规模和更新时间,并覆盖未加入、已加入、审核中、被拒绝、已退出/移除、我创建的六种操作状态;邀请码验证、初始、加载、结果、无结果、无效/过期邀请码、失败、清空输入 |
| `[~]` | 7 | G08 关系确认与入谱 | G06 选定家谱→填写真实姓名和以已知长辈为参照的文字关系;搜索态显示申请说明/提交申请并在成功后进入 G09,邀请码态显示可选补充信息/确认加入并明确无需审核,成功后返回 G01 选中新家谱;覆盖校验、重复提交、提交中、成功/失败、返回保护;结构化关系待接口提供后迁移 |
diff --git a/pages/family/f01-family-feed.vue b/pages/family/f01-family-feed.vue
index f4e4694..8bba940 100644
--- a/pages/family/f01-family-feed.vue
+++ b/pages/family/f01-family-feed.vue
@@ -1,12 +1,12 @@
-
+
汤氏家族圈家宴、通知与共同记忆
- {{ item.label }}
+ {{ item.label }}
@@ -18,17 +18,17 @@
{{ feedState === 'empty' ? '还没有家族动态' : '家族动态暂不可用' }}{{ feedState === 'empty' ? '发布第一条通知、家宴记录或家族故事。' : '请稍后重新进入,已有内容不会受到影响。' }}
- {{ feedState === 'error' ? '重新查看' : '发布家族动态' }}
+ {{ feedState === 'error' ? '重新查看' : '发布家族动态' }}
diff --git a/pages/family/f02-publish-feed.vue b/pages/family/f02-publish-feed.vue
index 3065e5e..d89b17b 100644
--- a/pages/family/f02-publish-feed.vue
+++ b/pages/family/f02-publish-feed.vue
@@ -1,4 +1,4 @@
-记录此刻分享通知、活动、家族故事或一段共同记忆。发布动态{{publishState==='success'?'动态已发布':'动态未发布'}}{{publishState==='success'?'家人现在可以在家族圈看到这条记录。':'请检查内容后重新发布,当前文字仍保留在页面中。'}}{{publishState==='success'?'继续发布':'重新填写'}}
-
-
+记录此刻分享通知、活动、家族故事或一段共同记忆。{{publishState==='success'?'动态已发布':'动态未发布'}}{{publishState==='success'?'家人现在可以在家族圈看到这条记录。':'请检查内容后重新发布,当前文字仍保留在页面中。'}}
+
+
diff --git a/pages/genealogy/g01-my-genealogies.vue b/pages/genealogy/g01-my-genealogies.vue
index ed6f591..dc9c8b1 100644
--- a/pages/genealogy/g01-my-genealogies.vue
+++ b/pages/genealogy/g01-my-genealogies.vue
@@ -1,16 +1,10 @@
-
-
-
+
+
暂时无法读取家谱
网络或服务暂不可用,请稍后重新查看。
-
+
重新加载
-
+
+
管理员
-
-
-
-
-
- {{ item.label }}
-
-
-
-
-
-
-
- 我创建的
-
-
- 我加入的
-
-
-
-
- 加入申请
+
-
-
-
- {{ item.name }}
- {{ item.statusLabel }}
-
- {{ item.description }}
-
-
+
+ {{ item.label }}
-
-
-
- 添加家谱
-
-
+
+
+
+
+
+ 我创建的
+
+
+
+
+ 我加入的
+
+
+
+
+ 加入申请
+
+
+
+
+ {{ item.name }}
+ {{ item.statusLabel }}
+
+ {{ item.description }}
+
+
+
+
+
+
+
+
+ 添加家谱
+
+
+
+
@@ -203,8 +206,8 @@
>
搜索家谱
@@ -215,8 +218,8 @@
>
邀请码加入
@@ -231,19 +234,13 @@
-
+
添加家谱
建议先搜索已有家谱,避免重复创建
-
-
- 搜索家谱
-
-
-
- 邀请码加入
-
- 确认没有现有家谱,继续创建
+
+
+
取消
@@ -251,7 +248,7 @@
-
+
切换当前家谱
-
+{{item.unread?'未读提醒':'已读'}} · {{item.time}}{{item.title}}{{item.content}}{{noticeState==='empty'?'暂时没有新消息':'消息中心暂不可用'}}{{noticeState==='empty'?'家谱申请、审核结果和家族提醒会留在这里。':'请稍后重新进入,已读状态不会受到影响。'}}
+
+
diff --git a/pages/profile/m01-profile-home.vue b/pages/profile/m01-profile-home.vue
index 9ee1067..86365c4 100644
--- a/pages/profile/m01-profile-home.vue
+++ b/pages/profile/m01-profile-home.vue
@@ -1,4 +1,4 @@
-汤文清139****6421 · 家谱成员待你处理2 条家谱提醒与审核通知个人资料暂不可用请稍后重新进入,账号和家谱资料不会受到影响。
-
-
+汤文清139****6421 · 家谱成员待你处理2 条家谱提醒与审核通知个人资料暂不可用请稍后重新进入,账号和家谱资料不会受到影响。
+
+
diff --git a/pages/tree/t01-tree-overview.vue b/pages/tree/t01-tree-overview.vue
index 66e31a7..d9c9963 100644
--- a/pages/tree/t01-tree-overview.vue
+++ b/pages/tree/t01-tree-overview.vue
@@ -6,7 +6,7 @@
'tree-state--empty': treeState === 'empty',
'tree-state--error': treeState === 'error'
}">
-
+
@@ -40,7 +40,7 @@
{{ stateCopy.title }}
{{ stateCopy.copy }}
-
+
{{ stateCopy.action }}
@@ -55,10 +55,10 @@
- 查看资料
+ 查看资料
- 添加亲属
+ 添加亲属
@@ -68,6 +68,7 @@