修改完成

This commit is contained in:
2026-07-21 07:53:03 +08:00
parent 01d246c47b
commit ff60119277
172 changed files with 7982 additions and 2999 deletions
@@ -0,0 +1,45 @@
# 全活动页面业务所有权审计(2026-07-20)
## 结论
52 条活动路由已经完成业务所有权收敛。活动页面不再引用 `ModulePage.vue``page-catalog.js`;共享层只保留按钮、弹层、Toast、加载、页头、背景和视觉卡片等原语。每个路由自行维护本页的模拟数据、状态、校验、动作及去向,仍未连接接口。
`ModulePage.vue``page-catalog.js``TreeMemberForm.vue` 按“不删除既有源码”的约束保留为历史文件,但活动路由不再消费这些通用业务母版。
## 五个方案与选择
1. 继续使用单一通用业务母版:改动最少,但页面语义、状态和真实入口继续失真,不采用。
2. 扩大 `page-catalog.js` 配置:能增加字段,却会把校验、状态机和导航也塞入配置,不采用。
3. 每个模块保留一个大型业务母版:比全局母版稍好,但 F、R、N、M 内部页面仍然职责不同,不采用。
4. 建立无头 schema 渲染器:扩展性高,但会引入当前项目不需要的抽象和维护成本,不采用。
5. 共享视觉原语、路由拥有业务内容:既保持统一国风视觉,又允许列表、详情、编辑器、时间线、消息、安全和服务页表达真实任务,采用。
## 本轮收敛范围
- F:动态详情、谱文列表/详情/编辑、相册列表/详情/上传、视频状态及 F01 八个真实入口形成闭环。
- R:人物、贺礼、礼仪、成长、人生事、备忘、功德分别拥有专属数据结构、字段、状态和动作。
- N/M:消息卡进入消息详情;资料、安全、密码、手机号、帮助、反馈、推广、订单和关于均为独立页面。
- G:家谱上下文、成员身份、加入申请来源、驳回/撤回再申请、设置草稿和字辈容量由路由参数与数据决定。
- TT01 根据 `generation`/`parentId` 计算树布局;T03—T08 按人物、关系及权限状态工作,不再用演示标签切状态。
- 共享组件:按钮改为原生可聚焦按钮;弹层补齐对话框语义、焦点和 EscapeToast/Loading 补齐 live region 与减少动态效果;页头返回支持深链兜底。
## 数据与布局边界
- 普通列表和卡片由数据循环与自然高度撑开,不依赖固定条数或绝对坐标。
- T01 的布局尺寸从成员关系计算,测试覆盖 10 世代、每代 12 人的 120 节点压力数据。
- 容量合同覆盖 50 条列表、50 条弹层、30 项媒体、三倍长文本和 1.3 倍字号;103 个保留风险均精确到文件、选择器和风险类型。
- 定位合同扫描所有 `position` 值(包括 `relative`);必要定位精确白名单之外无违规,也无失效白名单。
## 验证证据
- 52 条活动路由及 2 个共享组件 Vite 转换:54/54。
- PowerShell 合同:119 项中 118 项通过;唯一失败为既有基础资产候选式命名。A01 预览已从可复现管线重新生成,G06 一致性合同已改读长期 handoff 证据,不再依赖已清理的 runtime 目录。
- 浏览器运行时 smoke:排除会写回已清理长期目录的旧 T07 baseline 后,26/26 通过。
- 52 个活动页面均在 360×800 捕获当前图到 `%TEMP%`,按 A/G/T、F、R、N/M 生成联系表,并与现有同模块长期候选图复核;未发现横向溢出、明显裁切、错误复用母版或不可达主动作。
- 四档视口:320×568、360×640、360×800、412×915;覆盖模块响应式、数据压力和主要业务状态。
## 明确边界
- 本轮结论是 H5 本地模拟数据阶段的页面实现与内部审核完成,不代表接口、持久化、上传权限、微信能力、Android/HBuilderX、软键盘或真机性能完成。
- F01、T01、A05 及大量业务页发生可见变化;自动审计不能替用户维持或新增 `[x]`。这些页面保持“待用户复核”,只有用户再次明确说“通过”才更新视觉冻结状态。
- `foundation-asset-audit` 仍未通过,未放宽规则或删除实际资产。`repository-handoff-size-contract` 通过补齐可再生成目录的忽略规则后已真实通过(35 个长期截图、19.51MB、52 个索引链接),没有删除长期资料或放宽阈值。
@@ -0,0 +1,58 @@
# 全项目数据驱动布局审计(2026-07-20)
## 审计基线
- 权威基线:`main` / `01d246c 保存视觉审核与文档流迁移进度`
- 范围:`pages/``components/`、活动路由与封存 A06;当前只验证 H5,不接接口,不宣称 Android 完成。
- 首次容量合同发现 279 项待解释风险。修正“固定网格容量”规则后为 276 项:普通 `repeat(2/3/4, ...)` 是响应式列数,不等于数据容量上限;只有 12 列及以上的固定重复网格才按固定容量画布拦截。
- 当前截图证据:G01 切换家谱弹层在 412×915、6 条数据下可以自然增高并滚动,作为弹层容量参考;这不代表其他页面已经通过。
## 统一五方案决策
每个确认问题均评估以下五种方案:
1. 扩大固定尺寸:改动小,但只推迟溢出,淘汰。
2. 增加响应式断点:只解决设备宽高差异,不能解决未知数据量;仅作补充。
3. `max-height` 加内部滚动:适合弹层、独立列表和结构化画布,不用于普通内容卡片。
4. 正常文档流自然撑高:适合普通页面、列表卡、表单、状态说明和长文案,作为默认最优方案。
5. 由数据计算布局边界:适合世系树、可变列媒体和结构化关系画布。
## 已确认问题与选择
| 类别 | 已确认风险 | 五方案结论 | 最优方案 |
| --- | --- | --- | --- |
| 共享 `GenealogyCard` | 谱名省略、地点/人数/角色/更新时间不换行 | 1 不能覆盖未知长度;2 只能缓解窄屏;3 不应让普通卡片内部滚动;4 可保持完整数据并自然撑高;5 无结构坐标需求 | 4 |
| T07 成员目录 | 成员卡固定 192/196rpx,姓名和元信息强制单行省略 | 1 仍有上限;2 仍依赖样本;3 破坏页面主滚动;4 与普通列表语义一致;5 无结构坐标需求 | 4 |
| G06 搜索结果 | 结果卡虽有 `min-height`,仍用 `overflow: hidden` 裁切增长内容 | 1 无法解决裁切;2 无法覆盖长字段;3 普通结果卡不应独立滚动;4 删除裁切后由内容撑高;5 无结构坐标需求 | 4 |
| G05 家谱概览 | 内容区使用百分比/固定 grid 行,长标题与详情可能互相挤压 | 1/2 只能推迟;3 不适合普通概览正文;4 可让各段按内容增长;5 当前无坐标关系 | 4 |
| T01 世系树 | 固定 900rpx 画布、180×180 网格和固定世代轨道隐含容量上限 | 1/2 仍有容量上限;3 只能承担视口滚动;4 无法表达节点坐标与连线;5 可由世代数、单代节点数和间距推导画布 | 5,外层配合方案 3 |
## 保留边界
下列固定视觉边界不会因合同扫描被机械删除:图标尺寸、媒体缩略图比例与必要裁切、固定导航、真实弹窗/遮罩/Toast、装饰背景槽位。它们必须进入精确白名单并说明理由;普通正文、按钮文案、表单、列表卡和状态说明不得借白名单隐藏容量问题。
## 再审核要求
修复后必须重新运行全局容量合同、聚焦合同和压力数据 smoke,并在 320×568、360×640、360×800、412×915 下检查横向溢出、文本裁切、末项可达和滚动所有权。凡产生可见变化的既有 `[x]` 页面,只能作为新的视觉候选,必须由用户再次明确说“通过”后才能维持或新增 `[x]`
## 实施与二次审核结果
- 容量合同从初始 279 项、规则纠正后的 276 项,收敛为 0 个未解释风险和 0 个失效白名单。最终 103 个白名单键均精确到文件、选择器和风险类型,只保留图标/印章/装饰分隔、固定导航、媒体缩略图裁切、G01/F01/T01 明确内部滚动壳及 T01 结构化节点边界。
- 共享 `GenealogyCard`、T07、G06、F01、N01、M01、R01/R02、表单控件、状态卡与 G08—G12/T03/T08 的普通内容改为 `min-height`、换行和自然撑高;根容器不再用 `overflow-x: hidden` 掩盖横向问题。
- G08/G11/G12 文本域使用 `auto-height`;G09 状态与操作分为独立数据行。二次截图发现的 G08/G11 原生 textarea 固有高度和 G09 状态操作重叠均已再次修正并复核。
- T01 的画布宽高、行列数、世代轨、节点和关系线全部由成员数据计算。外层纵向滚动与内层横向滚动分工明确;120 节点(10 世代×每代 12 人)压力通过。
- G01 弹层已验证 2/6/12/50 条:少量内容自然增长,达到安全上限后仅列表区滚动,50 条末项可达。
- `data-driven-layout-runtime-smoke.js` 已验证:T07 50 条、G09 50 条、F09 30 项、3 倍长中文与 1.3 倍字号压力、四档视口、末项可达、横向溢出和表单自动增高。
- 二次视觉对比覆盖 G05、T01、G08—G12、T03、T07、T08;对照长期 handoff 图检查了边框、装饰资产、间距和内容区。当前结果只能作为新的 H5 视觉候选,不能代替用户重新确认。
## 验证边界
- 相关静态合同(排除已知独立失败/缺失生成物项)全通过;21 个既有核心 runtime smoke、G01 50 条弹层压力和新增数据容量 smoke 通过。
- `foundation-asset-audit``repository-handoff-size-contract` 的既有失败未通过删资料或放宽阈值处理;G06 runtime 截图一致性脚本因已授权清理 `docs/design/screens/runtime/` 不计入通过项。
- 未运行会恢复长期目录外短期截图且含旧行为断言的 `t07-module-baseline-runtime-smoke.js`;T03—T08 核心流程由独立 smoke 通过。
- 没有新的 Android/HBuilderX、系统字体缩放或真实接口证据;A06 仍为封存静态检查。
## 用户复核结论
- 用户已明确说“通过”,确认 G05、T01、G08—G12、T03、T07、T08 的本轮数据驱动布局迁移候选。
- T01、T07 原有 `[x]` 可以维持;其他页面的本次确认只覆盖迁移后的 H5 可见效果,不替代真实入口、适用状态和整页流程验收。
@@ -0,0 +1,66 @@
# 全活动页面业务所有权收敛实施计划
> **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development or superpowers:executing-plans task-by-task. Steps use checkbox syntax for tracking.
**Goal:** 移除活动页面对通用业务母版的依赖,使 52 个路由拥有正确、数据驱动且可本地审计的页面内容。
**Architecture:** 保留稳定视觉原语和模块资产,F/R/N/M 每个路由自己拥有业务数据、状态、校验和导航。`ModulePage.vue``page-catalog.js` 保留为封存历史文件,但活动路由和合同不再消费它们。
**Tech Stack:** uni-app、Vue 3 `<script setup>`、SCSS、PowerShell 合同、Chrome CDP runtime smoke。
## Global Constraints
- 不接接口,不导入 `@/utils/api.js`
- 不使用 worktree,不执行 git add/commit/push/reset/checkout。
- 不删除源码、测试、文档、长期截图或实际资产;不恢复 `unpackage/``docs/design/screens/runtime/`
- 普通内容使用文档流并支持未知数据量;定位与容量保留项必须进入精确白名单。
- 只复用现有真实视觉资产,不用 CSS/字符/占位图伪造可见资产。
---
### Task 1: 活动页面所有权合同
- [x] 新建合同枚举 52 个活动路由并拒绝活动页面引用 `ModulePage`
- [x] 为 F/R/N/M 建立页面专属字段、状态、动作和导航清单;先运行得到 RED。
- [x] 更新旧 ModulePage 合同,使其验证封存边界而非活动业务入口。
### Task 2: F 模块独立内容
- [x] F03 动态详情拥有正文、媒体、评论列表和评论动作。
- [x] F04 谱文列表拥有分类、搜索、列表、空/失败和新建入口。
- [x] F05 谱文详情拥有作者、时间、正文、收藏和失效回流。
- [x] F07 相册列表拥有封面、数量、权限、空/失败和新建入口。
- [x] 运行 F 聚焦合同与四档 smoke。
### Task 3: R 模块独立内容
- [x] R03/R04 实现贺礼列表与新增/编辑字段、校验和删除确认。
- [x] R05/R06/R07 实现礼仪列表、详情、编辑字段和失效状态。
- [x] R08/R09 实现成长与人生时间线、人物上下文和新增动作。
- [x] R10/R11 实现备忘和功德记录的专属数据结构与状态。
- [x] 运行 R 聚焦合同与四档 smoke。
### Task 4: N/M 模块独立内容
- [x] N02 实现消息详情、已读状态和类型对应去向。
- [x] M02–M10 分别实现资料、安全、密码、手机、帮助、反馈、推广、订单、关于的专属控件和状态。
- [x] 运行 N/M 聚焦合同与四档 smoke。
### Task 5: A/G/T 与共享组件复核
- [x] 逐页检查 A/G/T 是否错误复用业务结构;只修复确认问题。
- [x] 检查共享组件只承担视觉原语,不拥有页面业务。
- [x] 对发现的问题执行 RED/GREEN 并运行既有流程 smoke。
### Task 6: 全量压力与视觉复核
- [x] 52/52 路由 Vite 转换成功。
- [x] 四档视口运行全部活动页,检查横向溢出、内容裁切、末项与主动作可达。
- [x] 对列表 50 条、长文案三倍、字号 1.3 倍和表单长输入做压力验证。
- [x] 捕获代表截图到 `%TEMP%`,与长期同模块参考图同尺寸比较,修复后再审一次。
### Task 7: 最终回归与交接
- [x] 运行全 position、数据容量、资产、路由、页面专属合同和关键 runtime smoke。
- [x] 运行 `git diff --check`,确认已清理目录未恢复、Chrome 项目页仍为 1。
- [x] 更新验收规划、交接记录和审计报告,明确 H5/接口/Android 边界及用户复核停点。
@@ -0,0 +1,193 @@
# 全项目数据驱动布局审核实施计划
> **执行要求:** 使用 `superpowers:executing-plans` 在当前会话逐任务执行。用户明确禁止多代理、worktree 与全部 Git 写操作,因此在已获用户“开始”授权的当前 `main` 工作区内执行,不包含提交步骤。
**目标:** 让 52 条活动路由、共享组件及封存 A06 的布局能够承受数据数量、文案长度和字号增长,同时保留确有必要的固定视觉边界。
**架构:** 新增一个扫描固定容量风险的 PowerShell 合同和精确 JSON 白名单,作为规则单一所有者;新增一个 Chrome CDP 压力脚本,对代表性重复内容注入 1/10/50 条、2~3 倍文案和 1.3 倍字号。普通内容使用自然文档流,弹层使用限高滚动,世系树从数据计算画布边界。
**技术栈:** uni-app Vue 3、SCSS、PowerShell、Node.js、Chrome CDP。
## 全局约束
- 列表验证 1/10/50 条;弹层验证 2/6/12/50 条;相册验证 1/9/30 张。
- 世系树验证 1/5/10 代及单代 1/6/12 人。
- 文案验证正常、2 倍、3 倍;字号验证默认及约 1.3 倍。
- 固定视口为 320×568、360×640、360×800、412×915。
- 不接接口、不新增路由、不改变业务语义、不删除或重绘实际资产。
- 不执行多代理、worktree、git add/commit/push/reset/checkout。
- 每个问题记录五种方案:扩大固定尺寸、增加断点、限高滚动、自然撑高、数据计算边界;按内容类型选择最优方案。
---
### 任务 1:建立全局容量风险合同与审计报告
**文件:**
- 新建:`tests/data-driven-layout-risk-allowlist.json`
- 新建:`tests/data-driven-layout-contract.ps1`
- 新建:`docs/data-driven-layout-audit_2026-07-20.md`
**接口:**
- 合同扫描 `pages/**/*.vue``components/**/*.vue` 的 style 块。
- 风险类型固定为 `fixed-content-height``clipping-overflow``single-line-truncation``fixed-grid-track``fixed-capacity-canvas`
- 白名单项必须包含 `file``selector``risk``reason`,并拒绝失效条目。
- [ ] **步骤 1:编写失败合同**
合同提取选择器和声明,普通内容命中以下条件即失败:固定内容高度、`overflow: hidden``nowrap/ellipsis/line-clamp`、百分比或固定值 grid 行、固定容量 `repeat(N, ...)`
- [ ] **步骤 2:运行合同确认 RED**
运行:
```powershell
powershell.exe -NoProfile -ExecutionPolicy Bypass -File .\tests\data-driven-layout-contract.ps1
```
预期:FAIL,并至少报告 T01、G05、G06、T07、`GenealogyCard` 的已知风险。
- [ ] **步骤 3:逐项分类并写五方案审计表**
审计表每行包含:文件/选择器、真实风险、五个候选方案、最优方案、选择理由、验证用例。装饰背景、媒体比例、图标、固定导航和明确滚动视口才允许加入白名单。
- [ ] **步骤 4:运行白名单失效自测**
临时增加不存在的选择器,确认合同以“失效白名单”失败;随后移除该临时条目。
### 任务 2:共享卡片、目录和普通结果卡自然撑高
**文件:**
- 修改:`components/GenealogyCard.vue`
- 修改:`pages/tree/t07-member-directory.vue`
- 修改:`pages/genealogy/g06-search-genealogies.vue`
- 修改:相关聚焦合同
**接口:**
- 关键姓名、谱名、地区、支系和身份允许换行。
- 卡片使用 `min-height`,不得使用固定 `height` 裁切正文。
- 摘要省略仅在存在同屏完整值或明确详情入口时允许。
- [ ] **步骤 1:扩展聚焦合同并确认 RED**
明确禁止 `.directory-card` 固定高度、`.directory-card__name/.directory-card__meta` 单行截断、`.result-card` 裁切、共享卡关键字段 `nowrap`
- [ ] **步骤 2:记录五方案并选择自然撑高**
对上述普通卡片选择方案 4;方案 1 只延后溢出,方案 2 不解决数据量,方案 3 会制造卡片内滚动,方案 5 对普通文本过度复杂。
- [ ] **步骤 3:最小修改源码**
将固定高度改为 `min-height`,移除正文裁切和关键字段强制单行,使用 `flex-wrap``minmax(0, 1fr)` 和自然行高。
- [ ] **步骤 4:运行聚焦合同和现有 runtime smoke**
预期:聚焦合同、G06、T03—T08 与模块响应式 smoke 全部 PASS。
### 任务 3:G05 百分比轨道改为内容驱动
**文件:**
- 修改:`pages/genealogy/g05-genealogy-overview.vue`
- 修改:`tests/g05-document-flow-contract.ps1`
- 修改:`tests/g05-overview-runtime-smoke.js`
- [ ] **步骤 1:添加长谱名、长来源、长公开说明失败断言**
检查每个内容块 `scrollHeight <= clientHeight + 1` 或容器允许自然增长,操作按钮可达。
- [ ] **步骤 2:运行确认 RED**
预期:百分比固定行导致长内容裁切或重叠。
- [ ] **步骤 3:比较五方案并选择自然撑高**
普通概览正文选择方案 4;保留真实背景比例,但让内容层以 `auto/minmax` 和自然间距排列。
- [ ] **步骤 4:修改并验证**
移除正文百分比行轨道和固定详情行高,改为内容驱动 grid/flex;运行 G05 静态、运行时与四档压力检查。
### 任务 4:T01 世系树由数据计算画布
**文件:**
- 修改:`pages/tree/t01-tree-overview.vue`
- 修改:`tests/t01-tree-state-contract.ps1`
- 修改:`tests/t01-tree-state-runtime-smoke.js`
**接口:**
- `layoutMembers`:从成员的世代和同代顺序生成 grid 行列。
- `treeCanvasStyle`:根据最大列、最大行、节点尺寸和间距返回动态 `gridTemplateColumns``gridTemplateRows``width``height`
- `generationRows`:从实际成员世代分组生成,不维护固定轨道行高数组。
- [ ] **步骤 1:写动态 10 代/单代 12 人失败测试**
断言所有节点处于画布边界内、世代标签与对应节点纵向相交、画布可横纵滚动、节点正文不使用定位。
- [ ] **步骤 2:运行确认 RED**
预期:固定 `900rpx`、180×180 网格和固定世代轨道无法满足压力数据。
- [ ] **步骤 3:比较五方案并选择数据计算边界**
选择方案 5;方案 3 仅解决滚动而不解决画布容量,方案 4 无法表达关系图坐标,方案 1/2 仍有硬上限。
- [ ] **步骤 4:实现动态布局并验证**
用 computed 数据推导画布、节点和世代轨道;保留关系线局部绘制白名单。运行 T01 静态、全状态、运行时和定位合同。
### 任务 5:其余页面全量风险清零
**文件:**
- 修改:任务 1 合同报告的其余 `pages/**/*.vue``components/**/*.vue`
- 修改:对应聚焦测试
- [ ] **步骤 1:按风险类型逐项写 RED**
每次只处理一个选择器;普通正文优先方案 4,弹层列表优先方案 3,媒体网格优先方案 5 或稳定 `aspect-ratio` 白名单。
- [ ] **步骤 2:逐项实现最小修改**
不得顺手重构相邻代码;每行修改必须对应审计表中的风险和选择方案。
- [ ] **步骤 3:全局合同归零**
运行容量合同,预期零未白名单风险、零失效白名单。
### 任务 6:全项目压力运行和二次视觉审核
**文件:**
- 新建:`tests/data-driven-layout-runtime-smoke.js`
- 修改:`scripts/capture-chrome-page.js`(只在需要新增审计动作时)
- 修改:三份交接/验收文档与本计划
**运行接口:**
- 对代表性重复项选择器复制到 10/50 条或 9/30 项。
- 对关键文本替换为 2~3 倍真实中文长文案。
- 对页面根设置 1.3 倍字号压力类,不改变生产默认字号。
- 输出只写 `%TEMP%\jiapuapp-runtime\data-driven-layout-audit`
- [ ] **步骤 1:编写压力脚本并确认在未修页面 RED**
检查横向溢出、正文裁切、末项可达、弹层滚动、按钮可达和树节点边界。
- [ ] **步骤 2:运行四档全量压力 smoke**
预期:所有配置用例 PASS,且 9222 仍只有一个项目页面。
- [ ] **步骤 3:捕获并检查代表性截图**
至少覆盖共享卡、普通列表、弹层、G05、T01、T07、媒体网格;每张截图必须实际打开检查。
- [ ] **步骤 4:修改后再审核一次**
把修改前后同状态同尺寸图放入同一比较图,检查裁切、边距、字体、边框、圆角和装饰资产;发现问题回到对应任务继续 RED/GREEN。
- [ ] **步骤 5:最终验证与交接**
运行容量合同、定位合同、全部相关静态合同、关键 runtime smoke、`git diff --check`,确认 `docs/design/screens/runtime/` 不存在;不运行会恢复该目录的旧脚本。文档明确自动审核不等于用户新增 `[x]` 或 Android 完成。
## 2026-07-20 执行记录
- 任务 1—5 已完成:容量合同覆盖固定内容高度、裁切、单行截断、固定 grid 行和大固定画布;最终为零未解释风险、零失效白名单。
- TDD 记录已形成:共享卡/T07/G06、G05、T01、G08/G09/G11/G12 均先看到聚焦 RED,再完成最小实现和 GREEN。
- 任务 6 已完成 H5 自动化与二次目视审核:四档视口、50 条列表/弹层、30 项媒体、10×12 世系树、长文案和 1.3 倍字号模拟通过。
- 当前停点为用户视觉复核。所有有可见变化的旧 `[x]` 只能视为候选;用户再次明确“通过”前,不维护或新增验收勾选。
@@ -2,15 +2,23 @@
> **执行要求:** 使用 `superpowers:executing-plans` 当前会话内联执行。用户禁止多代理、worktree 及全部 Git 写操作;不执行提交步骤。
**目标:**用户指定 fixed 的顶部/底部导航与真实弹层外,清除全项目页面内容的脱离文档流定位,并保持现有业务状态与视觉语言。
**目标:**精确白名单内确有必要的定位职责外,清除全项目普通页面内容的全部无意义 `position` 声明(包括 `relative`,并保持现有业务状态与视觉语言。
**架构:** 以一个静态合同和精确 JSON 白名单为单一规则所有者;先完成 R02 样板,再迁移共享组件和模块页面。每批通过现有 CDP smoke、四档响应式及同尺寸截图后进入下一批。
**技术栈:** uni-app Vue 3、SCSS、PowerShell、Node.js、Chrome CDP。
## 2026-07-20 执行结果
- 合同已扫描全部 `position` 声明并去除注释干扰;初始基线为 35 个文件、390 条未白名单声明,其中 278 条为 `relative`。当前未白名单违规为 0,失效白名单为 0。
- F10 与 T01 完成后继续按 R → N → M → F → G → T → A 全面迁移,并覆盖共享组件、`ModulePage`、Tree 表单和封存 A06;没有把单页修复冒充全项目完成。
- 普通根容器、Header/Content、正文、字段、按钮和卡片使用正常文档流、flex、grid 或 grid 同单元叠放。白名单只保留固定导航、视口背景、真实弹层/Toast/遮罩/底部弹层/全屏预览、必要媒体覆盖、局部装饰与 T01 关系线等明确职责。
- 已完成迁移批次的聚焦合同、关键 H5 runtime smoke 与同尺寸前后对比;未观察到语义性可见变化。该自动结果不替代用户确认,本轮不新增 `[x]`A06 仅静态覆盖,Android 未验证。
- `tests/t07-module-baseline-runtime-smoke.js` 因会重新生成已清理的 runtime 截图且“清空搜索恢复全部成员”断言失败,不计入通过项;核心 `tests/t03-t08-member-flow-runtime-smoke.js` 独立通过。既有资产命名与仓库交接体积失败未通过放宽阈值或删除长期资料处理。
## 全局约束
- 禁止普通内容使用 `absolute/fixed/sticky`、负外边距或以位移 transform 承担布局;按钮按压等不改变排版的交互微动效可以保留。
- 禁止普通内容使用无明确必要的 `relative/absolute/fixed/sticky` 或其他 `position` 声明、负外边距或以位移 transform 承担布局;按钮按压等不改变排版的交互微动效可以保留。
- 允许定位的职责为固定顶部/底部导航、独立视口背景、真实弹层,以及受明确父容器约束的纯装饰、角标、红点和关系线,必须精确白名单。
- 不删除或重绘现有资产;装饰图优先改作 background/border-image,只有确需局部叠放时保留 absolute。
- 四档为 320×568、360×640、360×800、412×915。
@@ -24,12 +32,39 @@
- 新建:`tests/document-flow-position-allowlist.json`
- 新建:`tests/document-flow-position-contract.ps1`
- [ ] 白名单登记 `PageHeader.vue` 的固定顶部栏、`AppTabbar.vue` 的固定底部栏、`AppDialog.vue` 的弹窗层/皮肤和 `AppToast.vue` 的 Toast;其他页面本地弹层在迁移到对应批次时逐项审计后登记
- [ ] 合同扫描 `pages/**/*.vue``components/**/*.vue` 的 style 块,报告不在精确文件+选择器白名单内的 `absolute/fixed/sticky`
- [ ] 合同同时禁止普通选择器出现负 margin 和 `transform: translate(...)` 布局。
- [ ] 运行合同并保存初始 37 文件违规清单;预期 FAIL,不放宽规则
- [x] 白名单登记固定顶部/底部导航、真实弹层、Toast、独立视口背景及经审计确有必要的局部装饰、角标和关系线;每项使用精确文件+选择器+用途,不放行普通 `relative`
- [x] 合同扫描 `pages/**/*.vue``components/**/*.vue` 的 style 块,报告不在精确白名单内的所有 `position` 声明,包括 `relative`
- [ ] 合同继续补齐普通选择器负 margin 和 `transform: translate(...)` 布局检查
- [x] 2026-07-20 新口径初始基线为 35 个文件、390 条未白名单声明,其中 278 条为 `relative`;预期 FAIL,不再使用旧“37 文件/112 条”作为完整数字
### 任务 2R02 文档流样板
### 任务 2F10 无意义 relative 返工样板
**文件:**
- 修改:`pages/family/f10-video-list.vue`
- 修改:`tests/f10-video-status-contract.ps1`
- 验证:`tests/f10-video-status-runtime-smoke.js`
- [ ] 先扩展 F10 聚焦合同,禁止页面根容器、Header/Content 包装、导语正文、状态卡和状态卡正文使用 `position: relative`,保留已审计装饰层的精确白名单。
- [ ] 运行聚焦合同确认 RED。
- [ ] 使用正常文档流和 grid 同单元叠放移除 6 条无意义 `relative`,装饰图不得承担正文排版。
- [ ] 运行全局定位合同,确认 F10 的 6 条 `relative` 违规归零且其他基线未被掩盖。
- [ ] 复用唯一 51739222 项目页执行四档 smoke 和同尺寸前后截图;有可见变化时 F10 退回 `[~]`,只有用户重新明确通过才能维持 `[x]`
### 任务 3:T01 世代栏与成员节点文档流
**文件:**
- 修改:`pages/tree/t01-tree-overview.vue`
- 修改:`tests/t01-tree-state-contract.ps1`
- 修改:`tests/t01-all-states-visual-contract.ps1`
- 验证:`tests/t01-tree-state-runtime-smoke.js`
- [ ] 聚焦合同先禁止 `.generation-band``.generation-rail``.member-node` 使用定位摆放普通节点内容,关系线只保留经审计的局部绘制职责。
- [ ] 运行聚焦合同确认 RED。
- [ ] 世代栏、成员节点和节点正文改为 grid/flex 文档流;关系线使用 grid 边框或受父容器约束的精确白名单层。
- [ ] 运行 T01 状态合同、全状态视觉合同、运行时 smoke 和全局定位合同。
- [ ] 复用唯一项目页完成正常、状态、节点选择和四档同尺寸对比;有可见变化时 T01 退回 `[~]` 等待用户重新确认。
### 任务 4:R02 文档流样板复核
**文件:**
- 修改:`pages/records/r02-person-detail.vue`
@@ -42,7 +77,7 @@
- [ ] 题签 copy、字段 label/input、textarea、状态文案全部使用文档流;容器高度由内容和 min-height 控制。
- [ ] 运行 R02 合同、入口交互 smoke、四档 smoke,捕获 412×915 详情和编辑态供复核。
### 任务 3:共享基础组件
### 任务 5:共享基础组件
**文件:** `components/AppButton.vue``PageHeader.vue``AppTabbar.vue``ModulePageBackground.vue``GenealogyPageBackground.vue``GenealogyCard.vue`
@@ -51,7 +86,7 @@
- [ ] GenealogyCard 内容改 flex/grid,皮肤转背景。
- [ ] 对 G01、T07、F01、R01、N01、M01 六基准做四档和同尺寸回归。
### 任务 4:通用 ModulePage
### 任务 6:通用 ModulePage
**文件:** `components/ModulePage.vue` 及其聚焦测试
@@ -59,14 +94,14 @@
- [ ] 装饰图转背景;字段用 grid;卡片内容自然撑高。
- [ ] 执行全部消费 ModulePage 的路由 smoke 和四档回归。
### 任务 5:模块分批迁移
### 任务 7:模块分批迁移
- [ ] R → N → M → F:每页先合同 RED,再改文档流,再跑模块四档。
- [ ] G:保留真实弹层白名单,页面卡片、表单、Header、背景全部文档流
- [ ] T:目录和表单使用 grid/flex;T01 世系节点和关系线用 grid/border 重做
- [ ] G:保留真实弹层白名单,页面卡片、表单、Header 和普通内容全部文档流;独立视口背景只保留精确白名单
- [ ] TT01 完成后,继续把目录和表单迁移到 grid/flex。
- [ ] A:登录、注册、重置和封存 A06 的普通内容文档流;验证弹窗/Toast 保留精确白名单。
### 任务 6:最终收敛
### 任务 8:最终收敛
- [ ] `tests/document-flow-position-contract.ps1` 最终 PASS,输出零普通内容违规。
- [ ] 运行活动路由转换、关键交互 smoke、四档响应式和 `git diff --check`
@@ -0,0 +1,50 @@
# 全活动页面业务所有权与成熟度收敛设计
## 目标
在不接业务接口、不改变现有浅色国风视觉体系的前提下,把 52 个活动路由从“视觉覆盖稿”收敛为可独立理解、可本地操作、可扩容的 H5 产品候选。共享组件只负责背景、页头、按钮、弹窗、提示和加载等视觉原语;每个业务页面必须自己拥有字段、内容结构、状态语义、入口与下一步。
## 已确认根因
`components/ModulePage.vue``data/page-catalog.js` 当前同时拥有 F/R/N/M 23 个路由的业务结构和交互。不同任务只替换标题、字段数组或模板类型,造成动态详情、谱文、相册、贺礼、礼仪、成长日志、消息详情、个人资料、安全、帮助、反馈、推广、订单和关于页共享同一套“查看详情/提交后成功”行为。历史规划已经把它定义为第一版覆盖工具而非最终视觉答案,因此用户对同质化的怀疑成立。
## 五方案比较
1. **继续沿用单一 `ModulePage`**:改动最少,但业务含义继续由模板猜测,不能成为成熟产品,淘汰。
2. **扩大 `pageCatalog` 配置协议**:可补字段类型和动作,但会把页面逻辑继续集中到一个巨型解释器,配置与运行时容易分叉,淘汰。
3. **按 form/list/detail/timeline/settings 拆五个业务组件**:比单一母版清晰,但“同样是表单”不代表个人资料、密码、礼仪和反馈拥有相同验证与状态,仅作为视觉结构参考。
4. **每页复制完整视觉与业务代码**:业务独立但重复背景、页头、按钮和状态样式,后续全局调整风险过高,淘汰。
5. **共享视觉原语、页面拥有业务(最优)**:活动路由不再委托 `ModulePage``pageCatalog`;每页直接声明真实本地数据、字段类型、状态和动作,只复用 `ModulePageBackground``PageHeader``AppButton``AppDialog``AppToast``AppLoading` 等稳定视觉原语与公共样式。
## 所有权边界
- 页面拥有:业务文案、字段与输入类型、列表项目结构、空/加载/失败/权限/失效/成功状态、校验、确认动作、入口和返回目标。
- 公共组件拥有:模块长背景、顶部/底部导航、按钮表面、卷轴弹窗、Toast、Loading、稳定卡片皮肤映射。
- `ModulePage.vue``page-catalog.js` 不再是活动路由入口;为遵守现有文件保留要求,文件保留为封存历史实现,并由合同禁止活动页面引用。
- 不接 `utils/api.js`;页面使用真实语义的本地 mock 数据与查询参数状态,接口阶段替换数据源而不重写视觉结构。
## 分模块业务内容
- F:动态详情/评论、谱文列表与详情、相册列表必须各自拥有内容和动作;编辑、上传与待开放页沿用现有独立实现。
- R:贺礼、礼仪、成长日志、人生事、备忘、功德分别拥有对应金额/关系/时间/地点/人物/提醒/贡献字段,不再是通用卡片换标题。
- N:消息详情拥有消息类型、时间、正文、已读与业务去向。
- M:资料、安全、改密、改手机、帮助、反馈、推广、订单、关于分别拥有正确控件、校验、确认与状态。
- A/G/T:保留现有独立页面,重点复核共享组件边界、长数据、长文本、状态与导航,不为了统一而退回母版。
## 数据驱动与视觉规则
- 普通内容由文档流自然撑高;列表使用数组渲染,不写死项目数。
- 文字允许换行;只有真实媒体缩略图、图标和结构画布可精确裁切。
- 表单使用与语义匹配的 `input` 类型和 `textarea auto-height`;长列表末项必须可达。
- 四档 H5320×568、360×640、360×800、412×915;压力覆盖 1/10/50 条、三倍长文案和 1.3 倍字号模拟。
- 视觉继续使用仓库现有真实位图资产,不新增 CSS 伪装饰、占位资产或手绘 SVG。
## 验收
1. 52 个活动路由均能被 Vite 转换并通过静态资产、定位、数据容量合同。
2. 活动页面对 `ModulePage` 的引用为 0;页面目录不再是活动业务合同。
3. 每个替换页至少有一个页面专属合同,验证核心字段、状态、动作、路由和禁止项。
4. 四档运行 smoke 无横向溢出,长内容不裁切,主动作和末项可达。
5. 代表页面与同模块长期参考图同尺寸比较;视觉自审不能替用户的最终 `[x]`,但代码与候选状态必须完整记录。
6. 不宣称接口、Android/HBuilderX、系统字体缩放或真实系统权限完成。
@@ -0,0 +1,72 @@
# 全项目数据驱动布局审核设计
> 日期:2026-07-20
> 阶段:H5 视觉与布局韧性,不接接口,不宣称 Android 完成
> 约束:不使用多代理或 worktree,不执行 Git 写操作,不删除源码、测试、文档、长期截图或实际资产
## 目标
在全项目文档流迁移完成后,再以真实数据增长为前提审核 `pages/``components/`、52 条活动路由及封存 A06。当前 Mock 数量或短文案能显示正常,不再视为数据驱动布局通过。
审核必须证明:列表、卡片、表单、弹层、相册、世系树和共享组件能够由数据数量、文案长度和字号自然驱动;固定尺寸只用于图标、媒体比例、明确的装饰槽位和视口级导航等稳定视觉边界。
## 压力基线
- 列表:1、10、50 条。
- 弹层列表:2、6、12、50 条;内容先自然增长,达到视口上限后仅列表区滚动。
- 相册/上传网格:1、9、30 张。
- 世系树:1、5、10 个世代;单代 1、6、12 个成员;节点和关系线边界由数据计算。
- 文案:正常、2 倍、3 倍长度,覆盖长谱名、长姓名、堂号、地区、支系、身份、状态、说明和按钮文案。
- 字号:默认与约 1.3 倍。
- 视口:320×568、360×640、360×800、412×915。
## 审核分类
1. 普通页面和共享卡片:检查固定 `height`、固定 grid 行、`overflow: hidden`、单行截断、不可换行和固定项目数量假设。
2. 列表和目录:检查数据增加后页面自然增长、末项可达、底部导航避让和滚动所有权。
3. 弹层和底部层:检查少量内容自然增长、大量内容达到 `max-height` 后内部滚动、标题和操作区不被挤出。
4. 表单和状态页:检查错误文案、长标签、长输入值、键盘前后及成功/失败信息自然撑高。
5. 媒体网格:检查项目数量改变、长说明、失败状态和当前项标识;媒体缩略图可保留稳定 `aspect-ratio`
6. 世系树:检查画布宽高、世代轨道、节点坐标和关系线是否由数据边界推导;不允许固定 `900rpx` 或固定 180×180 网格成为容量上限。
## 每项问题的五方案决策
每个确认问题都必须记录下列五种候选方案,并按该问题的内容类型选择最优方案,不机械套用同一种 CSS:
1. **扩大固定尺寸**:改动最小,但只是推迟溢出,默认淘汰。
2. **增加尺寸断点**:适合设备差异,不解决未知数据量,通常只作补充。
3. **容器限高并滚动**:适合弹层、独立列表和全屏画布;普通卡片不使用。
4. **正常文档流自然撑高**:适合正文、表单、状态卡、普通列表卡和长文案;为普通内容首选。
5. **由数据计算布局边界**:适合世系树、媒体网格、可变列数和结构化关系;由数据推导行列、画布和连接关系。
选择顺序:普通内容优先方案 4;独立滚动容器优先方案 3;结构化画布优先方案 5。方案 1 不作为最终修复,方案 2 只处理确实由视口造成的差异。
## 实施规则
- 先建立全局静态容量合同,列出风险选择器,但对白名单视觉边界做精确说明,不能简单禁止所有固定尺寸。
- 每个确认问题先添加最小失败测试并看到预期 RED,再修改源码。
- 卡片默认使用 `min-height` 和自然撑高;文本默认允许换行。只有同时存在完整值查看路径、非关键摘要语义和明确空间边界时才允许省略号。
- 页面主列表使用正常文档流;弹层列表、固定导航下的独立区域和世系画布可以拥有明确滚动容器。
- 背景图使用 `background`、九宫格或稳定比例承载装饰,不让装饰图高度决定正文容量。
- 不改变接口、路由、业务状态含义、当前视觉资产和用户已确认的色彩/字体/装饰语言。
## 验证与证据
1. 静态容量合同为零未解释风险。
2. 每类页面运行压力数据 smoke,检查横向溢出、内容裁切、末项可达、滚动所有权和操作区可达。
3. 使用唯一 51739222 Chrome 项目页,在四档尺寸获取当前审核运行的新截图。
4. 修改后再次获取同状态、同尺寸截图;将修改前后放入同一比较图检查可见变化。
5. 自动化与截图只能证明候选稳定,不能代替用户视觉确认或新增 `[x]`
## 已知首轮风险
- T01 使用固定 `900rpx` 画布、固定 180×180 网格及固定世代轨道行高,属于高风险。
- G05 使用百分比固定行轨道和局部固定行高,长文案可能挤压。
- G06 结果卡在可增长内容上保留 `overflow: hidden`,存在裁切风险。
- T07 成员卡固定高度,姓名和成员信息强制单行省略,存在长数据风险。
- 共享 `GenealogyCard` 的谱名、元信息、角色与更新时间多处不换行,存在真实数据截断风险。
- G01 切换家谱弹层已验证 2/6/12 条可增长与滚动,是可复用的弹层容量参考。
## 完成边界
本轮完成只表示 H5 数据容量候选通过源码合同、压力运行和同尺寸视觉回归。A06 封存路由只做静态检查;Android/HBuilderX、系统键盘、真实接口数据和设备级字体缩放仍需后续单独验证。既有 `foundation-asset-audit``repository-handoff-size-contract` 失败不得通过放宽阈值或删除长期资料处理。
@@ -6,7 +6,11 @@
## 当前证据
只读审计发现 37 个 Vue 文件包含 `position: absolute|fixed|sticky`。用法混合了正常内容、装饰图层、页面背景、Tabbar、世系关系线和真实弹层,不能机械删除。R02 已证明普通文字、字段标签和输入框也被定位到装饰图之上,系统字体、长文案、键盘或尺寸变化时存在重叠风险。
只读审计发现 37 个 Vue 文件包含 `position: absolute|fixed|sticky`,漏掉了普通容器上的 `relative`,因此旧“剩余 112 条”无效。2026-07-20 扩展合同后,新口径发现 35 个文件存在 390 条未白名单 `position` 声明,其中 278 条为 `relative`F10 一页即有 6 条无意义 `relative`。用法混合了正常内容、装饰图层、页面背景、Tabbar、世系关系线和真实弹层,不能机械删除。R02 已证明普通文字、字段标签和输入框也被定位到装饰图之上,系统字体、长文案、键盘或尺寸变化时存在重叠风险。
## 执行状态
2026-07-20 已按本设计完成全项目源码迁移。合同从上述 390 条未白名单声明收敛为零,并增加失效白名单检查,保证白名单与源码实际定位逐项对应。迁移覆盖共享组件、R/N/M/F/G/T/A 页面及封存 A06;普通内容改用正常文档流、flex、grid 或 grid 同单元叠放,只有本设计列出的明确职责保留定位。H5 同尺寸回归未发现语义性可见变化,但这不替代用户确认;本次不新增视觉 `[x]`,不宣称 Android 或接口完成。
## 单一合同
@@ -20,12 +24,13 @@
## 迁移顺序
1. 建立合同精确白名单 37 文件初始清单,测试先失败并输出全部违规位置。
2. R02 作为第一张页面样板:人物题签、档案卡、表单、状态卡全部改为背景 + flex/grid 文档流
3. 迁移共享控件:AppButton、PageHeader、AppTabbar、ModulePageBackground、GenealogyPageBackground、GenealogyCardPageHeader 与 AppTabbar 保留用户指定的 fixed 白名单,清除其内部普通内容和装饰定位;弹层组件保留白名单定位
4. 迁移 `ModulePage`,让普通 F/R/N/M 页面共享文档流结构
5. 按 R → N → M → F → G → T → A 迁移专属页面;A06 源码也纳入静态合同
6. 每批执行聚焦合同、现有交互 smoke、四档响应式、真实截图和 `git diff --check`
1. 建立扫描全部 `position`合同精确白名单,以 35 文件/390 条未白名单声明作为新初始基线;测试先失败并输出全部违规位置。
2. F10 先移除页面根容器、Header/Content、正文和卡片的 6 条无意义 `relative`,作为新口径最小返工样板
3. T01 随后迁移世代栏与成员节点;节点正文使用 grid/flex,关系线只保留经审计的局部绘制职责
4. 复核 R02 样板并迁移共享控件:AppButton、PageHeader、AppTabbar、ModulePageBackground、GenealogyPageBackground、GenealogyCardPageHeader 与 AppTabbar 保留用户指定的 fixed 白名单,清除其内部普通内容定位;弹层组件保留白名单定位
5. 迁移 `ModulePage`,让普通 F/R/N/M 页面共享文档流结构
6. 按 R → N → M → F → G → T → A 迁移其余专属页面;A06 源码也纳入静态合同
7. 每批执行聚焦合同、现有交互 smoke、四档响应式、真实截图和 `git diff --check`
## 冻结页
@@ -33,7 +38,7 @@
## 验收门槛
- 全项目合同最终为零违规白名单只含固定顶部/底部导航和真实弹层
- 全项目合同最终为零未白名单违规白名单只含固定顶部/底部导航、独立视口背景、真实弹层/Toast/遮罩/底部弹层/全屏预览,以及经审计确有必要的局部装饰、角标和关系线
- 52 条活动路由和封存 A06 源码均被扫描。
- 四档固定为 320×568、360×640、360×800、412×915。
- 长文案、约 1.3 倍字号、输入校验和键盘场景不重叠,操作区可滚动到达。
+32 -4
View File
@@ -3,12 +3,17 @@
> 最后更新:2026-07-20
> 用途:更换电脑、重新打开 Codex/GPT 后的唯一接管入口。
> 当前阶段:只做页面样式与视觉流程验收;不对接接口,不做功能验收。
> 当前施工停点:六个模块基准 G01、T07、F01、R01、N01、M01,以及 T01、G03、F09 和 F10 已由用户明确通过并进入当前 H5 视觉冻结。T08、F05、F06 仍按已记录的局部通过范围保持 `[~] ⚠`。F08 的正常、空相册、照片预览和相册失效四种 H5 视觉状态已由用户确认合适,但因真实入口、跳转、接口和 Android 未完成继续保持 `[~] ⚠`。F10 已成为专属视频待开放状态页,用户明确通过 412×915 候选;按钮真实返回 F01,静态合同、运行时跳转和四档响应式 smoke 通过,但 F01 真实入口、视频接口、列表/失败数据态和 Android 不在本次结论内。下一步审核 R02;其余页面保持原标记。最新事实与换机提示见 `docs/夜间批量收敛交接_2026-07-20.md`。
> 当前施工停点:全项目文档流迁移的源码与定位合同已完成收敛,正在做综合回归和用户复核交接。合同已覆盖包括 `relative` 在内的全部 `position` 声明,当前为零未白名单违规,且会拒绝失效白名单。旧“剩余 112 条”永久作废。现有 `[x]` 仅沿用迁移前用户明确通过的范围;本轮没有自动新增 `[x]`,也没有把自动截图对比冒充用户再次确认。下一步是向用户交付迁移后的同尺寸 H5 复核结论,再恢复其他页面审核。Android、接口和业务功能不在本次结论内。最新事实与换机提示见 `docs/夜间批量收敛交接_2026-07-20.md`。
## 0. 2026-07-20 最新接管覆盖说明
本节覆盖下方仍保留的 2026-07-19 历史停点;不要再从 G01 正常态重新开始。
- 本次换机接管已只读确认:初始分支为 `main`,权威 HEAD 为 `01d246c 保存视觉审核与文档流迁移进度`,初始工作区为空。下方 `5a31a75` 和“56 项工作区变化”仅是该提交形成前的上传审计历史,不是当前未上传状态。
- 全项目定位合同的新初始基线为 35 个文件、390 条未白名单声明,其中 278 条为 `relative`;F10、T01 之后继续全面审查 R/N/M/F/G/T/A 页面、封存 A06 与共享组件,未停在单页修复。
- 当前 `tests/document-flow-position-contract.ps1` 扫描所有 style 块中的 `position` 声明,去除注释干扰,并对精确白名单同时检查“未登记定位”和“失效登记”;最新运行结果为 `DOCUMENT-FLOW-POSITION-CONTRACT PASS`,即普通内容违规为 0,白名单不存在失效项。
- 仍允许的定位只承担固定顶部/底部导航、视口背景、真实弹层、Toast、遮罩、底部弹层、全屏预览、媒体局部覆盖以及 T01 关系线/成员弹层等明确职责。普通根容器、Header/Content 包装、正文、表单、按钮和卡片均已改为文档流、flex、grid 或 grid 同单元叠放。
- 已在唯一 5173/9222 项目页做迁移批次的同尺寸 H5 对比;观察到的差异为无可见变化或栅格抗锯齿差异,但这不等于用户再次确认,也不扩大原 `[x]` 范围。A06 未注册路由,仅完成静态合同,不宣称运行截图;Android 未验证。
- 活动路由仍为 52 条,A02 已合并,A06 仍封存保留。
- 用户已明确通过 6 个模块基准、T01、G03、F09 及 F10G01、G03、T01、T07、F01、F09、F10、R01、N01、M01。`docs/验收规划.md` 应统计为 10 个 `[x]`、42 个 `[~]`
- T01 已完成固定左侧代际栏返工,并在唯一 Chrome 项目页完成正常、加载、阅读提示、空、失败、节点选中及四档 H5 审核;用户已明确通过,现为 `[x]` 并冻结。状态联系表为 `docs/design/screens/runtime/2026-07-20/T01-state-contact-sheet.png`,响应式联系表为同目录 `T01-responsive-contact-sheet.png`
@@ -377,10 +382,33 @@ GPT 不操作 Git。用户切换电脑前应自行确认以下内容已纳入版
- 不要执行 `git add .` 后盲目提交;用户应先用 `git status --short --ignored` 确认缓存目录仍为 `!!` 忽略状态。
- 当前不重写 Git 历史、不执行 `git gc`、不删除 `.git` 内的孤立索引;若远端仍拒绝推送,应保留完整错误信息,再按远端限制单独排查,不能用 reset 或重建仓库规避。
## 13. 2026-07-20 文档流迁移未完成阻断与清理记录
## 13. 2026-07-20 文档流迁移收敛与清理记录
- 当前迁移**未完成**。原定位合同只扫描 `absolute/fixed/sticky`,漏掉了普通容器上不必要的 `position: relative`F10 已被用户现场指出,其他页面也必须按同一规则重新审计。后续不得再用“剩余 112 条”作为完整数字,必须先扩展合同覆盖所有 `position` 声明
- 原定位合同只扫描 `absolute/fixed/sticky`,漏掉了普通容器上不必要的 `position: relative`旧“剩余 112 条”无效。扩展后的初始基线为 35 个文件、390 条未白名单声明,其中 278 条为 `relative`
- 当前源码迁移已覆盖 F10、T01、共享组件及 R/N/M/F/G/T/A 全模块,封存 A06 也纳入静态扫描。全局合同已覆盖所有 `position` 声明,普通内容未白名单违规为 0,失效白名单为 0。
- 正确边界:固定顶部/底部导航、真实弹层、Toast、全屏预览等保留必要定位;普通页面根容器、Header/Content 包装、正文、表单、卡片和可用 grid 同单元叠放的装饰不得残留无意义 `relative/absolute`
- 当前停点:先返工 F10,再处理 T01 世代栏与成员节点;没有新的用户视觉确认,不新增 `[x]`
- 当前停点:综合合同与 H5 回归完成后交给用户复核;没有新的用户视觉确认,不新增 `[x]`。迁移前冻结页若被用户认为存在可见变化,立即退回 `[~]` 重新审核
- 已知验证边界:`tests/t07-module-baseline-runtime-smoke.js` 会向已清理的 runtime 目录写短期截图,且其“清空搜索恢复全部成员”断言仍失败,因此未把它计入通过项,也未保留其生成物;覆盖 T03—T08 核心流程的 `tests/t03-t08-member-flow-runtime-smoke.js` 独立通过。A06 因路由封存不宣称运行态。没有新的 Android 证据。
- 本次用户明确授权清理无用文件。已确认 `unpackage/dist/` 为可再生成构建产物,`docs/design/screens/runtime/` 为短期诊断证据且不能作为长期唯一资料;两者可以删除。长期 `docs/design/screens/handoff/`、实际引用资产、有效测试与源码继续保留。
- 2026-07-20 已完成或被总规划取代的 F05/F06/F08/F09/F10/R02/T01 单页 plan/spec 不再作为独立合同;有效结论以本记录、`docs/验收规划.md``2026-07-20-project-document-flow-migration` 总规划/设计为准。
## 14. 2026-07-20 全项目数据驱动布局审计
- 原容量扫描在纠正规则后发现 276 项固定高度、裁切、截断、固定 grid 行或固定大画布风险;现已收敛到零未解释风险和零失效白名单。103 个保留项全部精确到文件/选择器/风险类型,不能扩展成通配放行。
- 普通卡片、表单、状态说明和列表采用自然撑高;弹层长列表采用安全上限与内部滚动;T01 采用数据计算画布。完整五方案比较、选择和证据见 `docs/data-driven-layout-audit_2026-07-20.md`
- 压力证据:G01 弹层 2/6/12/50 条,T07/G09 各 50 条,F09 30 项,T01 10 世代×每代 12 人,3 倍中文长文案与 1.3 倍字号模拟,四档 H5 视口均通过相关 smoke。
- 二次截图复核已发现并修正 T01 世代栏/画布堆叠、G08/G11 textarea 固有高度、G09 状态与操作重叠;代表图只写 `%TEMP%\jiapuapp-runtime\data-driven-audit`,没有恢复 `docs/design/screens/runtime/`
- 当前停点:把有可见变化的 H5 候选交给用户复核。自动化和目视自审不能替用户维持或新增 `[x]`;没有新 Android、系统字体缩放或接口证据。
- 后续用户已明确说“通过”,确认 G05、T01、G08—G12、T03、T07、T08 的本轮数据驱动布局迁移候选。该确认使原已冻结的 T01、T07 继续保持 `[x]`;其余页面只通过本轮可见迁移复核,仍须按 `docs/验收规划.md` 补齐真实入口、适用状态和整页流程后才能标 `[x]`
## 15. 2026-07-20 全活动页面业务所有权收敛
- 用户确认需要全面审查,不只处理 F10;同时指出项目必须由数据驱动,且怀疑多个页面错误共用同一组件。审计确认 23 个 F/R/N/M 活动页面直接消费 `ModulePage.vue`,页面虽有不同标题,业务字段、状态和动作仍由同一目录配置模拟。
- 比较五个方案后采用“共享视觉原语、路由拥有业务内容”:活动页面继续复用背景、按钮、页头、弹层、Toast、加载和视觉资产,但每个路由自行拥有模拟数据、状态、校验、动作及导航。52 条活动路由对 `ModulePage.vue` / `page-catalog.js` 的引用已收敛为 0;历史文件按用户不删除约束保留。
- F03—F07、R03—R11、N02、M02—M10、T03—T08 已按业务拆分;F01 增加谱文、相册、礼仪、备忘、人物、贺礼、功德和视频入口,M01 增加推广/订单入口,N01 消息进入 N02R01/R02 与 F08/F09 建立创建/编辑上下文闭环。
- G01/G05/G06/G08—G12 改由家谱 ID、名称、成员身份和申请状态驱动;T01 根据 `generation`/`parentId` 计算成员位置,压力数据不再依赖手写 x/y;G03、G11、G12 的字段和容量边界同步补齐。
- 共享交互补齐原生按钮语义、对话框焦点/Escape、Toast live region、Loading 减少动态效果以及页头深链返回兜底。普通内容继续遵守全 position 和数据容量合同。
- 最新验证:52 路由加 2 共享组件 Vite 转换 54/54PowerShell 119 项中 118 项通过,唯一失败为既有且不可伪造的基础资产候选式命名;排除会恢复已清理 runtime 目录的旧 T07 baseline 后,浏览器 runtime smoke 26/26 通过。A01 预览已由代码管线重建,G06 一致性合同改读长期 handoff 证据;52 个活动页面均已捕获 360×800 当前图到 `%TEMP%` 并按模块复核。
- `repository-handoff-size-contract` 的当前阻塞根因只是 `.gitignore` 缺少合同要求的可再生成目录规则;补齐 `/tmp/``/unpackage/``/.vite/`、runtime 截图等忽略项后,合同在未删除长期资料、未放宽阈值的前提下通过:35 个截图、19.51MB、52 个索引链接。
- 仍未完成:接口、持久化、系统分享/上传权限、Android/HBuilderX、软键盘和真机性能。本轮页面存在可见变化,自动证据不能替用户维持或新增 `[x]`;醒来后的停点是用户查看全量 H5 候选并明确是否通过。
- 完整审计见 `docs/active-page-business-ownership-audit_2026-07-20.md`,执行计划见 `docs/superpowers/plans/2026-07-20-active-page-business-ownership.md`
+27 -14
View File
@@ -2,6 +2,10 @@
## 1. 当前准确停点
- 换机接管的权威提交已更新为 `01d246c 保存视觉审核与文档流迁移进度`;接管时已确认 `main`、该 HEAD 与空工作区。文中后续出现的 `5a31a75`/56 项变化均为提交前历史审计,不是当前基线。
- 全项目文档流迁移已完成源码收敛并进入最终回归:新合同从 35 个文件、390 条未白名单声明(278 条 `relative`)收敛到零未白名单违规,并拒绝失效白名单。审查覆盖共享组件、全部模块页面与封存 A06,不只覆盖 F10。
- 必要的固定导航、真实弹层、Toast、遮罩、底部弹层、全屏预览、局部媒体覆盖和 T01 关系线等保留精确白名单;普通根容器、Header/Content、正文、表单、按钮和卡片已迁移到正常流、flex 或 grid。
- 本轮没有新增 `[x]`。同尺寸 H5 对比未发现语义性可见变化,但仍须由用户决定是否维持迁移前冻结结论;没有 Android 新证据。
- 当前阶段仍是 uni-app Android 项目的 H5 页面样式与视觉状态收敛,不对接接口。
- `pages.json` 注册 52 条活动路由;A02 已合并,A06 保持封存且源码、测试、文档和证据全部保留。
- 用户已明确通过 6 个模块基准、T01 及 G03G01、G03、T01、T07、F01、R01、N01、M01。
@@ -26,15 +30,14 @@
### 普通 F/R/N/M 页面
- `components/ModulePage.vue` 28 个普通任务页统一母版。
- 已删除重复的“页面编号 + 说明”介绍块,避免每页看起来像同一张编号展示页
- 表单、列表、详情、时间轴、设置和状态仍是不同结构;加载统一使用 `AppLoading`
- 每个模块使用自己的长背景和 `module-content-frame.png` / `module-field-frame.png`,不再引用 G 模块旧不透明业务面板。
- `components/ModulePage.vue` 是普通任务页统一母版,现仅按不删除约束保留为历史文件;活动路由引用为 0
- F03—F07、R03—R11、N02、M02—M10 已各自拥有业务数据、字段、状态、校验和导航,不再由 `page-catalog.js` 模拟页面差异
- 页面继续共享 `AppLoading``AppButton``AppDialog``AppToast``PageHeader`、背景及模块视觉资产,不复制视觉原语
### 其他自定义页
- F02 改用 F01 所属 family 资产。
- T03、T04—T06、T08 改用 T01/T07 的 tree 透明资产;`TreeMemberForm.vue` 继续统一 T04—T06 的表单与结果结构
- T03、T04—T06、T08 改用 T01/T07 的 tree 透明资产;T04—T06 已拆为添加亲属、编辑成员、维护关系三套独立业务结构,`TreeMemberForm.vue` 仅历史保留
- G03、G08—G12 改用 G01 的透明宣纸框、列表卷框和新 `g-form-field-frame.png`
- G05、G06 保留其特殊总览/搜索结构;G01 和六个已通过基准没有被批量母版覆盖。
@@ -42,12 +45,12 @@
- 5173 H5 服务仍在运行。
- 对 52 个活动页面和 2 个共享组件逐一请求 Vite 转换:`54/54` 返回 HTTP 200。
- PowerShell 静态契约总数 68:66 项通过,2 项为下述仓库治理失败
- PowerShell 静态契约总数 119:118 项通过;唯一失败为基础资产候选式命名。A01 新机预览已由代码管线重建,G06 一致性合同已改读长期 handoff 证据
- 页面与组件中的静态资产引用检查为 `0` 个缺失;活动页面和组件中的原生 `uni.showToast/showModal/showLoading/showActionSheet` 引用为 `0`
- `git diff --check` 退出码为 0;只有现有 LF/CRLF 转换提示,没有空白错误。
- `foundation-asset-audit.ps1` 仍因历史基础资产文件名含 `v1/v2/v3` 等候选式命名失败;这是既有已知问题,不能通过删除仍在使用的资产或放宽规则解决。
- `repository-handoff-size-contract.ps1` `docs/design/screens` 现有 647 张历史截图超过 35 张上限失败。用户明确要求不删除或清理截图,所以保留并如实记录
- 9222 Chrome 调试端口当夜未监听,但有 Chrome 进程连接 5173。为遵守“已有项目页时不得新开第二个浏览器或标签页”,没有另启浏览器,也没有伪造运行时 smoke、截图或四档响应式证据
- `repository-handoff-size-contract.ps1` 已通过补齐可再生成目录忽略规则真实通过:35 个长期截图、19.51MB、52 个索引链接;没有删除长期资料或放宽阈值
- 9222 后续已按用户许可开放并复用唯一项目页;排除会写回已清理 runtime 目录的旧 T07 baseline 后,26 项浏览器 runtime smoke 全部通过,52 页当前图已写入 `%TEMP%` 供复核
- 后续经用户明确许可重启 Chrome 并开放 9222;T01 复核期间始终复用同一项目标签页。5173 返回 HTTP 2009222 项目页面数为 1;T01 的 9 张原始状态/尺寸证据均核对为目标分辨率,两项聚焦契约通过。该后续结果不等于 Android 真机或其他候选页面已经验收。
- Android/HBuilderX 真机或模拟器验证、系统字体放大、软键盘、4GB Android 长图性能仍未完成。
@@ -66,7 +69,7 @@
3. 保留所有现有修改、未跟踪与忽略文件;不要执行 add、commit、push、reset、checkout,不要使用 worktree 或多代理。
4. 检查 5173 和 9222。若现有 Chrome 项目页仍存在,只能复用;若需要为了 CDP 重启 Chrome,必须先让用户明确确认关闭现有窗口后再启动唯一审批窗口。
5. T01 已完成 412×915 正常树态、加载、阅读提示、空、失败、节点选择和四档响应式审核,并由用户明确通过;不要重新打开返工,除非用户指出新问题或共享视觉变更触发冻结回归。
6. 页面视觉审核暂时让位于全项目文档流迁移。用户指出原合同漏扫普通容器上的 `position: relative`;当前先返工 F10 的无意义定位,再处理 T01 世代栏与成员节点,之后才恢复模块抽查
6. 全项目文档流、数据驱动容量和 52 路由业务所有权均已收敛;当前直接把全量 H5 候选交给用户复核,不再恢复旧的通用 `ModulePage` 逐页审核路线。自动化通过不能替用户维持或新增 `[x]`
7. 只有用户明确通过的页面才能标 `[x]`。没有 CDP/截图/Android 证据时不得宣称最终完成。
## 5. Git 上传前注意
@@ -74,9 +77,9 @@
- 用户换机时只能通过 Git,不能复制项目目录。换机前必须由用户自行把全部应保留修改、未跟踪文件和删除记录提交并成功推送;否则新电脑 clone/pull 后必然缺失当前工作区状态。
- 当前工作区本来就包含大量已修改和未跟踪文件,它们是用户要求保留的页面、测试、文档、截图、母版和候选资产,不属于可擅自清理的垃圾。
- 本轮没有执行任何 Git 暂存、提交、推送、重置或检出操作。
- 2026-07-20 最新只读复核:分支为 `main`HEAD 为 `5a31a75 Review changes batch 6 of 6``git status --short` 有 56 项,包括 25 项修改、4 项删除和 27 项未跟踪内容
- 上传前历史只读复核曾记录:分支为 `main`HEAD 为 `5a31a75 Review changes batch 6 of 6`,工作区有 56 项变化。上述内容已经合并进权威提交 `01d246c 保存视觉审核与文档流迁移进度`;本次换机接管已从该提交的空工作区开始
- 上传前由用户自行审阅 `git status --short``git diff --check`;不要让新的 GPT 自动删除未跟踪文件来缩小提交。
- `unpackage/``docs/design/screens/runtime/` 已按用户明确授权清理,不需要上传;长期 `docs/design/screens/handoff/`、实际运行资产、源码、测试和交接文档必须进入远端。既有 `repository-handoff-size-contract` 失败不得通过放宽阈值或继续删除长期资料伪造通过。
- `unpackage/``docs/design/screens/runtime/` 已按用户明确授权清理,不需要上传;长期 `docs/design/screens/handoff/`、实际运行资产、源码、测试和交接文档必须进入远端。`repository-handoff-size-contract` 已在不放宽阈值、不删除长期资料的前提下通过。
- 上传前只读审计未发现常见 Git 体积硬阻断:远端 `origin` 和上游 `origin/main` 已配置,候选内容没有超过 20MiB/100MiB 的单文件,最大单文件约 6.51MiB,未跟踪文件合计约 17.81MiB;关键交接文件均未被忽略,`git diff --check``git fsck --full` 均为 0。该结论只证明本地提交候选结构可上传,网络、认证和远端配额仍必须以用户实际 push 结果为准。
## 6. 可直接发给新 GPT 的提示词
@@ -84,15 +87,25 @@
```text
请全程使用中文。不要根据旧对话猜状态,不使用多代理或 worktree,不执行 git add、commit、push、reset、checkout,也不要删除、覆盖或清理任何现有修改、未跟踪文件、测试、文档、截图、母版和候选资产。
先完整阅读 AGENTS.md、docs/交接记录.md、docs/验收规划.md、docs/夜间批量收敛交接_2026-07-20.md,然后运行 git branch --show-current、git log -1 --oneline、git status --short、git status --short --ignored。
远端 `main` 的接管权威提交为 `01d246c 保存视觉审核与文档流迁移进度`。先完整阅读 AGENTS.md、docs/交接记录.md、docs/验收规划.md、docs/夜间批量收敛交接_2026-07-20.md 及文档流迁移 plan/spec,然后运行 git branch --show-current、git log -1 --oneline、git status --short、git status --short --ignored;提交不符或初始工作区不空立即停止。文中 `5a31a75`/56 项变化只是上传前历史审计
当前仍是 uni-app Android 家谱项目的 H5 视觉阶段,不接接口。用户已明确通过 G01、G03、T01、T07、F01、F09、F10、R01、N01、M01 等当前 H5 视觉候选;其余页面以 `docs/验收规划.md` 为准,不能根据本提示词自行新增 `[x]`。Android/HBuilderX、接口和业务功能仍未完成。
当前最高优先级不是继续逐页视觉审核,而是完成全项目文档流迁移。原定位合同扫描 `absolute/fixed/sticky`,漏掉普通容器上无意义的 `position: relative`,所以此前“剩余 112 条”不能作为完整数字。先扩展合同覆盖所有 `position`,再返工 F10,随后处理 T01 世代栏与成员节点。顶部和底部导航使用必要的 `fixed`;普通根容器、Header/Content 包装、文本、表单和卡片不得滥用定位;真实弹窗、Toast、全屏预览和确有必要的局部装饰层可以保留精确白名单。
全项目文档流迁移源码已完成收敛,当前停点是综合回归与用户复核交接。合同扫描包括 `relative` 在内的全部 `position` 声明,从 35 个文件、390 条未白名单声明(278 条 `relative`)收敛到零未白名单违规,并拒绝失效白名单;旧“剩余 112 条”无效。审查覆盖共享组件、R/N/M/F/G/T/A 全模块和封存 A06,不只覆盖 F10。顶部和底部导航使用必要的 `fixed`;普通根容器、Header/Content、文本、表单、按钮和卡片不得滥用定位;真实弹窗、Toast、遮罩、底部弹层、全屏预览、必要媒体覆盖和关系线只保留精确白名单。
换机只能通过 Git。开始工作前先确认用户已把上一台电脑的全部应保留修改、未跟踪文件和删除记录提交并推送;然后核对当前分支、HEAD、`git status --short` 和 `git status --short --ignored`。若远端没有上述 2026-07-20 文档流迁移文件、测试、F08 资产或交接更新,立即停止,不能用旧 HEAD 猜状态。
检查 5173 和 9222。如果已有 Chrome 项目页,只能复用同一个窗口和标签页;若必须重启以开放 9222,先征得我的明确同意。只有用户明确说“通过”才能新增 `[x]`;定位迁移造成可见变化时,冻结页面必须重新对比,不能用自动测试代替用户确认。
请先简要复述当前停点,再开始检查;没有真实证据不得宣称完成。已知 foundation-asset-auditrepository-handoff-size-contract 的失败不能靠放宽阈值或删除用户文件处理
请先简要复述当前停点,再开始检查;没有真实证据不得宣称完成。`foundation-asset-audit` 的失败不能靠放宽规则或删除实际资产处理;`repository-handoff-size-contract` 当前已真实通过
```
## 7. 2026-07-20 夜间全量完成记录
- 23 个原 `ModulePage` 活动消费者已全部改为路由专属业务页面,52 条活动路由中直接引用 `ModulePage.vue` / `page-catalog.js` 的数量为 0。历史组件和目录按不删除约束保留。
- 原 22 个流程断点均已补齐本地 H5 入口、必要路由参数和返回方向;接口、持久化和系统权限仍延期到功能阶段。
- 全量验证为 Vite 54/54、浏览器 runtime smoke 26/26PowerShell 119 项中 118 项通过,唯一失败为基础资产候选式命名。未运行会写回 `docs/design/screens/runtime/` 的旧 T07 baseline。
- 52 个活动页面逐页抓取 360×800 当前图到 `%TEMP%\jiapuapp-runtime\all-pages-2026-07-20`,并生成 A/G/T、F、R、N/M 四张联系表;与长期同模块 360×800 候选图比较后未发现横向溢出、明显裁切、错误共用业务母版或主动作不可达。
- Chrome 9222 和 Vite 5173 均在运行,复核结束时只保留 1 个 localhost 项目页。`unpackage/``docs/design/screens/runtime/` 未恢复。
- 本轮不接接口、不宣称 Android/HBuilderX 完成;页面发生可见变化,用户醒来后仍需明确说“通过”才能更新 `[x]`
- 审计报告:`docs/active-page-business-ownership-audit_2026-07-20.md`
+21 -8
View File
@@ -17,6 +17,9 @@
### 2026-07-20 夜间批量收敛说明
- 全项目文档流迁移已按新口径完成源码收敛:合同扫描包括 `relative` 在内的全部 `position` 声明;从 35 个文件、390 条未白名单声明(其中 278 条 `relative`)收敛到零未白名单违规,并新增失效白名单检查。旧“剩余 112 条”不再使用。
- 迁移范围不是只有 F10:已覆盖共享组件、R/N/M/F/G/T/A 全模块和封存 A06。普通根容器、Header/Content、正文、表单、按钮、卡片改用正常流、flex、grid 或 grid 同单元叠放;固定导航、真实弹层、Toast、遮罩、底部弹层、全屏预览、媒体覆盖、关系线等必要职责才进入精确白名单。
- 本轮同尺寸 H5 回归未观察到迁移造成的语义性可见变化,但自动对比不能代替用户确认,因此不自动新增 `[x]`,也不扩大已有 `[x]` 的含义。A06 仅有静态合同证据;Android/HBuilderX、接口与真实业务状态仍未完成。
- 用户已明确授权:其余未验收页面不再逐页提问,统一按 G01、T07、F01、R01、N01、M01 六个已确认基准推进;T01 已在后续人工审核中明确通过。
- 本轮已将 F/R/N/M 的 28 个普通任务页统一到各自模块母版,删除重复的页面编号介绍块;表单、列表、详情、时间轴、设置和状态页仍保留不同业务结构。
- F02、T03—T06、T08、G03、G08—G12 已移除跨模块旧不透明业务面板引用,改用所属模块或 G01/T07 基准的真实透明资产。
@@ -294,15 +297,9 @@ G01、G03、G05、G06、G08、G09、G10、G11、G12 共 9 个活动 G 页面统
## 6. 当前视觉流程断点与后续功能依赖
除 APP 启动页 A01 外,目前有 22 个最终页面没有被其他页面真实跳转到:
2026-07-20 全活动页面业务所有权收敛后,原 22 个流程断点已补齐本地 H5 入口与返回路径:T08 由 T03 的人物状态进入;F05/F06 由 F04 进入,F08/F09 由 F07/F08 进入,F10 由 F01 进入;R01/R03/R05/R10/R11 由 F01 的记录入口进入,R02 由 R01 进入,R04 由 R03 进入,R06/R07 由 R05/R06 进入,R08/R09 由人物详情进入;N02 由 N01 消息卡进入;M04/M05 由 M03 进入,M07 由帮助/反馈入口进入,M08/M09 由 M01 进入。
- T08
- F05、F06、F08、F09、F10。
- R01、R02、R03、R04、R06、R07、R08、R09、R11。
- N02。
- M04、M05、M07、M08、M09。
这些页面必须先确定合理的上游入口和返回位置,再做用户流程验收。直接输入路由只能用于内部开发定位,不能作为用户流程证据。
上述结论只证明本地模拟数据阶段存在合理入口、路由参数和返回方向。接口返回、持久化、系统分享/上传权限以及 Android 返回栈仍须在后续功能阶段验证;直接输入路由仍只能作为开发状态定位,不可替代真实入口回归
后续功能验收必须覆盖:A01 微信登录、A01/A04/A05 公共行为验证、G06 邀请码验证、G08 邀请码直接加入、角色/权限清单和功能开关。它们不属于本文件的完成门槛,也不得因为页面样式通过而宣称真实数据链路通过。
@@ -349,3 +346,19 @@ G01、G03、G05、G06、G08、G09、G10、G11、G12 共 9 个活动 G 页面统
- 四尺寸检查、Android 真机复核、受影响测试、运行时 smoke、真实截图和 `git diff --check` 均有最新证据。
- 页面样式验收阶段未对接业务接口、未修改接口契约、未使用截图作为运行资产;后续另建功能验收规则验证真实数据链路。
- 未执行 `git add`、commit、push、reset、checkout 或上传。
## 10. 2026-07-20 数据驱动布局复核停点
- 全项目容量合同已覆盖所有 Vue 样式块,当前零未解释风险、零失效白名单;定位合同继续保持通过。
- 已完成 50 条普通列表、50 条弹层、30 项媒体、10×12 世系树、三倍长文案、1.3 倍字号模拟和四档 H5 运行压力。
- 用户已在本轮明确说“通过”,确认 G05、T01、G08—G12、T03、T07、T08 的数据驱动布局迁移候选。T01、T07 恢复并维持视觉冻结;其余页面只确认本轮迁移后的 H5 可见效果,仍因真实入口、适用状态或整页流程尚未全部验收而保持 `[~]`,不能把本次确认扩大为整页功能通过。
- 本阶段仍不接接口、不宣称 Android/HBuilderX 或系统级字体缩放完成;A06 继续封存。
## 11. 2026-07-20 全活动页面业务所有权复核停点
- 已按五方案比较选择“共享视觉原语、路由拥有业务内容”。52 条活动路由对 `ModulePage.vue` / `page-catalog.js` 的引用为 0;历史文件按不删除约束保留但不再承担活动业务。
- F03—F07、R03—R11、N02、M02—M10、T03—T08 已拆为各自业务页面;F/G/T/A 与共享组件也完成逐页复核。页面数据、状态、校验和导航不再由一个目录配置模拟。
- 52 个活动页面已逐页捕获 360×800 当前图到 `%TEMP%`,并按模块与长期同尺寸候选联系表复核;四档响应式、长文本、1.3 倍字号和大列表由运行时 smoke/容量合同覆盖。
- 最新证据:Vite 54/54PowerShell 119 项中 118 项通过,唯一失败为明确保留的基础资产候选式命名;浏览器运行时 smoke 26/26 通过。A01 新机预览已由代码管线重建,G06 一致性合同改读长期 handoff 证据;旧 T07 baseline 因会恢复已清理 runtime 目录而未运行、未计数。
- 本轮发生可见变化的页面不能凭自动审计维持或新增 `[x]`。当前代码可作为全量 H5 复核候选,但最终视觉冻结仍待用户醒来后明确确认;接口、Android/HBuilderX、软键盘、系统权限和持久化不在本次完成结论内。
- 完整五方案、页面清单和证据见 `docs/active-page-business-ownership-audit_2026-07-20.md`