Files
jiapuapp/docs/data-driven-layout-audit_2026-07-20.md
T
2026-07-21 07:53:08 +08:00

59 lines
5.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 全项目数据驱动布局审计(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 可见效果,不替代真实入口、适用状态和整页流程验收。