保存视觉审核与文档流迁移进度
This commit is contained in:
@@ -0,0 +1,44 @@
|
||||
# 全项目文档流迁移设计
|
||||
|
||||
## 目标
|
||||
|
||||
把项目中除固定顶部导航栏、固定底部导航栏、真实弹窗、Toast、遮罩、底部弹层和全屏预览外的页面结构全部改为正常文档流,消除正常文字、输入框、按钮、卡片和背景依赖 `absolute`、`fixed` 或 `sticky` 的布局风险。迁移覆盖 `pages/`、`components/`、活动页面和封存的 A06 源码,不接接口、不删除资产。
|
||||
|
||||
## 当前证据
|
||||
|
||||
只读审计发现 37 个 Vue 文件包含 `position: absolute|fixed|sticky`。用法混合了正常内容、装饰图层、页面背景、Tabbar、世系关系线和真实弹层,不能机械删除。R02 已证明普通文字、字段标签和输入框也被定位到装饰图之上,系统字体、长文案、键盘或尺寸变化时存在重叠风险。
|
||||
|
||||
## 单一合同
|
||||
|
||||
- 正常页面内容只允许块级流、flex、grid、gap、padding、margin 和内容自然撑高。
|
||||
- 禁止用 `absolute`、`fixed`、`sticky`、负外边距或位移 transform 摆放普通文字、输入、按钮、卡片、页面背景或世系节点。
|
||||
- `position: relative` 虽不脱离文档流,但普通内容无明确必要时不使用;不得以它作为重新叠放内容的前置手段。
|
||||
- 装饰框优先使用 `background-image`、`border-image` 或九宫格背景;确实需要叠在明确局部容器内的纯装饰图层、角标和红点可以使用 `absolute`,但不得承担正文排版。
|
||||
- 世系节点使用 grid/flex 文档流;关系线属于节点间局部绘制层,可按实际结构使用 grid 边框或受父容器约束的 `absolute`,不得用定位摆放节点正文。
|
||||
- 允许定位的职责只有:固定顶部/底部导航、独立视口背景层、真实弹窗、Toast、遮罩、底部弹层、全屏预览,以及受明确父容器约束的纯装饰/角标/关系线。顶部、底部导航使用 `position: fixed`,页面内容通过正常流占位和安全区 padding 避让。每条例外必须进入精确白名单,记录文件、选择器和用途,不允许按模糊类名放行。
|
||||
- 合同所有者为 `tests/document-flow-position-contract.ps1`,白名单为 `tests/document-flow-position-allowlist.json`。合同必须扫描所有 `position` 声明,包括 `relative`;普通容器不得因叠层或 z-index 习惯而残留无意义定位。运行代码、文档和其他测试不得重新定义第二套例外规则。
|
||||
|
||||
## 迁移顺序
|
||||
|
||||
1. 建立合同、精确白名单和 37 文件初始清单,测试先失败并输出全部违规位置。
|
||||
2. R02 作为第一张页面样板:人物题签、档案卡、表单、状态卡全部改为背景 + flex/grid 文档流。
|
||||
3. 迁移共享控件:AppButton、PageHeader、AppTabbar、ModulePageBackground、GenealogyPageBackground、GenealogyCard;PageHeader 与 AppTabbar 保留用户指定的 fixed 白名单,清除其内部普通内容和装饰定位;弹层组件保留白名单定位。
|
||||
4. 迁移 `ModulePage`,让普通 F/R/N/M 页面共享文档流结构。
|
||||
5. 按 R → N → M → F → G → T → A 迁移专属页面;A06 源码也纳入静态合同。
|
||||
6. 每批执行聚焦合同、现有交互 smoke、四档响应式、真实截图和 `git diff --check`。
|
||||
|
||||
## 冻结页
|
||||
|
||||
当前冻结页不自动取消 `[x]`。每次共享组件或页面迁移后进行同尺寸前后对比:无可见变化且四档通过则保留;有任何可见变化则退回 `[~]` 等待用户复核。不得用自动化通过替代用户确认。
|
||||
|
||||
## 验收门槛
|
||||
|
||||
- 全项目合同最终为零违规,白名单只含固定顶部/底部导航和真实弹层。
|
||||
- 52 条活动路由和封存 A06 源码均被扫描。
|
||||
- 四档固定为 320×568、360×640、360×800、412×915。
|
||||
- 长文案、约 1.3 倍字号、输入校验和键盘场景不重叠,操作区可滚动到达。
|
||||
- 5173 和唯一 9222 Chrome 标签继续复用;不声明 Android 已完成。
|
||||
|
||||
## 边界
|
||||
|
||||
不执行多代理、worktree、git add/commit/push/reset/checkout;不删除、覆盖或清理现有修改、未跟踪文件、测试、文档、截图、母版和候选资产。已知仓库治理失败不通过放宽阈值或删除文件处理。
|
||||
@@ -1,38 +0,0 @@
|
||||
# T01 纵向世系轴基准设计
|
||||
|
||||
## 目标
|
||||
|
||||
将 T01 从“横向大画布上的独立成员卡”调整为可直接读懂亲缘关系的纵向世系轴,并作为后续世系树页面的视觉基准。本轮仅使用页面内模拟数据,不接接口。
|
||||
|
||||
## 已确认方向
|
||||
|
||||
- 始祖置于顶部中央,后代按世代向下分层。
|
||||
- 同一世代横向排列;只有分支超过当前宽度时才横向拖动。
|
||||
- 首屏必须完整看到始祖和主要下一代,不能以裁切节点暗示结构。
|
||||
- 祖先到子代之间显示连续、清晰的关系线;选中成员以红色节点框和文字强调。
|
||||
- 世代标题采用横向分层标签,不再使用分散的竖排小字。
|
||||
- 选中成员信息放在底部透明信息栏中,保留“查看资料”“添加亲属”。
|
||||
- 加载、阅读提示、空、失败继续由 T01 同页状态承载。
|
||||
|
||||
## 视觉资产
|
||||
|
||||
- 页面背景继续使用 T 系列 `ModulePageBackground`。
|
||||
- 成员节点复用现有透明卷框资产,树状态面板与底部信息栏复用现有透明金线框资产,并复制到 tree 模块命名空间。
|
||||
- 移除 T01 对 `g03-create-flow-panel.png`、`g06-search-input-wide.png`、`application-status-card.png` 三个不透明表面资产的引用。
|
||||
- 关系线属于数据关系可视化,可由布局元素绘制;不使用 CSS 仿造装饰图案、SVG 或表情符号。
|
||||
|
||||
## 状态与交互
|
||||
|
||||
- `loading`:保留 `AppLoading` 动画。
|
||||
- `tree`:展示纵向三代世系,默认选中始祖;点击节点更新底部信息栏。
|
||||
- `landscape`:说明“上下看世代、左右看同代分支”,操作后回到树态。
|
||||
- `empty`:引导录入首代成员并跳转 T04。
|
||||
- `error`:说明读取失败,重试后回到树态。
|
||||
- 保留 T03、T04、T06、T07 路由入口。
|
||||
|
||||
## 响应式与验收
|
||||
|
||||
- 内部检查 `320×568`、`360×640`、`360×800`、`412×915`,不把响应式尺寸逐档交给用户确认。
|
||||
- `412×915` 作为当前正常树态的首个视觉审批证据。
|
||||
- H5 截图仅作内部候选;Android/HBuilderX 真机或模拟器验证仍未完成。
|
||||
|
||||
Reference in New Issue
Block a user