修改完成
This commit is contained in:
@@ -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 条”作为完整数字。
|
||||
|
||||
### 任务 2:R02 文档流样板
|
||||
### 任务 2:F10 无意义 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` 违规归零且其他基线未被掩盖。
|
||||
- [ ] 复用唯一 5173/9222 项目页执行四档 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 和普通内容全部文档流;独立视口背景只保留精确白名单。
|
||||
- [ ] T:T01 完成后,继续把目录和表单迁移到 grid/flex。
|
||||
- [ ] A:登录、注册、重置和封存 A06 的普通内容文档流;验证弹窗/Toast 保留精确白名单。
|
||||
|
||||
### 任务 6:最终收敛
|
||||
### 任务 8:最终收敛
|
||||
|
||||
- [ ] `tests/document-flow-position-contract.ps1` 最终 PASS,输出零普通内容违规。
|
||||
- [ ] 运行活动路由转换、关键交互 smoke、四档响应式和 `git diff --check`。
|
||||
|
||||
Reference in New Issue
Block a user