Files
jiapuapp/docs/superpowers/plans/2026-07-20-project-document-flow-migration.md
T
2026-07-20 17:23:13 +08:00

4.5 KiB
Raw Blame History

全项目文档流迁移实施计划

执行要求: 使用 superpowers:executing-plans 当前会话内联执行。用户禁止多代理、worktree 及全部 Git 写操作;不执行提交步骤。

目标: 除用户指定 fixed 的顶部/底部导航与真实弹层外,清除全项目页面内容的脱离文档流定位,并保持现有业务状态与视觉语言。

架构: 以一个静态合同和精确 JSON 白名单为单一规则所有者;先完成 R02 样板,再迁移共享组件和模块页面。每批通过现有 CDP smoke、四档响应式及同尺寸截图后进入下一批。

技术栈: uni-app Vue 3、SCSS、PowerShell、Node.js、Chrome CDP。

全局约束

  • 禁止普通内容使用 absolute/fixed/sticky、负外边距或以位移 transform 承担布局;按钮按压等不改变排版的交互微动效可以保留。
  • 允许定位的职责为固定顶部/底部导航、独立视口背景、真实弹层,以及受明确父容器约束的纯装饰、角标、红点和关系线,必须精确白名单。
  • 不删除或重绘现有资产;装饰图优先改作 background/border-image,只有确需局部叠放时保留 absolute。
  • 四档为 320×568、360×640、360×800、412×915。
  • 每次只修改当前批次,验证失败立即停止扩散。

任务 1:建立全项目失败合同

文件:

  • 新建:tests/document-flow-position-allowlist.json

  • 新建:tests/document-flow-position-contract.ps1

  • 白名单先登记 PageHeader.vue 的固定顶部栏、AppTabbar.vue 的固定底部栏、AppDialog.vue 的弹窗层/皮肤和 AppToast.vue 的 Toast;其他页面本地弹层在迁移到对应批次时逐项审计后登记。

  • 合同扫描 pages/**/*.vuecomponents/**/*.vue 的 style 块,报告不在精确文件+选择器白名单内的 absolute/fixed/sticky

  • 合同同时禁止普通选择器出现负 margin 和 transform: translate(...) 布局。

  • 运行合同并保存初始 37 文件违规清单;预期 FAIL,不放宽规则。

任务 2R02 文档流样板

文件:

  • 修改:pages/records/r02-person-detail.vue

  • 修改:tests/r02-person-detail-contract.ps1

  • 修改:tests/r02-person-detail-runtime-smoke.js

  • 先扩展 R02 合同,禁止文件内 absolute/fixed/sticky 并要求题签、卡片、短字段、长字段和状态卡使用 background + flex/grid。

  • 运行确认 RED。

  • 删除装饰 <image> 叠层;对应容器使用 records 资产作为背景。

  • 题签 copy、字段 label/input、textarea、状态文案全部使用文档流;容器高度由内容和 min-height 控制。

  • 运行 R02 合同、入口交互 smoke、四档 smoke,捕获 412×915 详情和编辑态供复核。

任务 3:共享基础组件

文件: components/AppButton.vuePageHeader.vueAppTabbar.vueModulePageBackground.vueGenealogyPageBackground.vueGenealogyCard.vue

  • 每个组件先新增聚焦合同并确认 RED。
  • PageHeader 与 AppTabbar 保留 fixed,并分别提供正常流顶部占位和页面底部避让;按钮/Header 的局部装饰、角标与红点逐项判断,能用背景则转背景,必须叠放则精确白名单;独立视口背景层可保留 fixed。
  • GenealogyCard 内容改 flex/grid,皮肤转背景。
  • 对 G01、T07、F01、R01、N01、M01 六基准做四档和同尺寸回归。

任务 4:通用 ModulePage

文件: components/ModulePage.vue 及其聚焦测试

  • 合同禁止普通表单、列表、详情、时间轴、设置和状态卡定位。
  • 装饰图转背景;字段用 grid;卡片内容自然撑高。
  • 执行全部消费 ModulePage 的路由 smoke 和四档回归。

任务 5:模块分批迁移

  • R → N → M → F:每页先合同 RED,再改文档流,再跑模块四档。
  • G:保留真实弹层白名单,页面卡片、表单、Header、背景全部文档流。
  • T:目录和表单使用 grid/flex;T01 世系节点和关系线用 grid/border 重做。
  • A:登录、注册、重置和封存 A06 的普通内容文档流;验证弹窗/Toast 保留精确白名单。

任务 6:最终收敛

  • tests/document-flow-position-contract.ps1 最终 PASS,输出零普通内容违规。
  • 运行活动路由转换、关键交互 smoke、四档响应式和 git diff --check
  • 更新验收规划与交接记录,逐一说明冻结页是否保留 [x];没有截图或用户确认不得宣称视觉冻结完成。