16 KiB
家谱 APP 换机继续任务交接(2026-07-22)
用途:把当前项目完整复制到另一台电脑后,让新的 Codex/GPT 会话无需重新推翻既有设计,直接从正确停点继续。
当前权威状态:2026-07-21 的全项目响应式审核、MuMu 复核、两位专家评审与第一轮产品优化已经闭环。本文件覆盖
docs/交接记录.md、docs/新会话审批交接_2026-07-19.md、docs/夜间批量收敛交接_2026-07-20.md中与当前进度冲突的旧停点;旧文件只保留为历史证据。
1. 换机时必须复制什么
最稳妥的方式是复制整个 jiapuapp 项目目录,而不是只重新拉取远端代码。当前工作包含源码、测试、规划和可能尚未同步到远端的文件,不能假设远端仓库已经拥有本轮全部成果。
新电脑上的项目路径可以变化。下文把项目根目录记为:
<JIAPUAPP_ROOT>
必须保留:
AGENTS.mdApp.vue、pages/、components/、styles/、utils/tests/,尤其是响应式覆盖、白名单和本轮新增合同docs/,尤其是 2026-07-21、2026-07-22 的规格、计划和本交接static/与design-pipeline/中的正式资产、清单和重建脚本pages.json、package.json及项目配置文件
本地证据目录:
tmp/project-audit/:G10 之后逐页 MuMu 审核截图tmp/project-optimization/:专家优化后的 MuMu 复核截图
tmp/ 通常不属于长期仓库资料。如果希望在新电脑继续查看本轮截图,必须单独复制上述两个目录;不复制不会影响源码和合同,但会失去本轮临时视觉证据。
可在换机后重新生成、无需作为权威资料的目录包括 node_modules/、unpackage/、.vite/ 和其他构建缓存。不要删除正式资产、测试、规划、母版或长期证据来缩小目录。
2. 新会话必须按顺序阅读
新的 Codex/GPT 接管后,在修改代码前完整阅读:
AGENTS.mddocs/换机继续任务交接_2026-07-22.md(本文件)docs/superpowers/specs/2026-07-21-project-wide-responsive-layout-design.mddocs/superpowers/plans/2026-07-21-responsive-foundation-phase-1.mdtests/responsive-layout-coverage.jsonstyles/adaptive-frame-profiles.scssdocs/superpowers/plans/2026-07-21-project-wide-audit-and-expert-optimization.mddocs/superpowers/specs/2026-07-21-whole-product-enrichment-design.mddocs/superpowers/plans/2026-07-21-whole-product-enrichment-implementation.md
发生冲突时,权威顺序为:
- 用户在新会话中的最新明确要求。
- 本交接文件。
- 2026-07-21 的响应式、专家优化规格和计划。
- 当前源码、测试和配置。
- 更早的交接、设计记录和历史截图。
旧文档中“从 G01 开始”“只审核 H5”“Android 尚未验证”“仍剩 52 页待审”等说法已经失效,不得据此回退当前进度。
3. 当前真实完成状态
App.vue、公共组件和所有活动页面共 66 个 Vue 文件已全部纳入响应式扫描。- 最近一次闭环结果:实际 Vue
66、覆盖66、缺失0、陈旧0。 - A 系列与 G01—G10 由用户在 MuMu 中逐页确认过;正式人工验收断点曾是 G10。
- G11、G12 以及后续 T、F、R、N、M 页面已经按用户授权,由主代理在 MuMu 中逐页、逐状态继续审核并完成问题修复,不再停在 G11。
- G10 之后已覆盖 G11—G12、T01/T03—T08、F01—F10、R01—R11、N01—N02、M01—M10。
- 两位专家已经完成评审和交叉质询:
- 视觉交互专家:Dirac
- 功能代码专家:Leibniz
- 不要重新创建两位专家或重复第一轮专家评审,除非用户在新会话明确要求第二轮。
- 两位专家的结论已经汇总到产品丰富化设计和实施计划;第一轮接受的六个优化批次已经实现。
- 规划文件中的实施检查项已经全部标记完成。
4. 已完成的关键修复与优化
4.1 全项目响应式基础
- 九宫格边框和可变高度装饰面的唯一所有者:
styles/adaptive-frame-profiles.scss。 - 页面和普通组件不得自行定义
border-image-slice。 - 可变高度内容由内容自然撑高,不使用固定高度掩盖问题。
- 弹窗只允许使用视口
max-height,内容区域内部滚动。 - 页面内禁止重新出现
background-size: 100% 100% no-repeat。 - 固定比例图标、头像、印章、缩略图等例外只允许登记在
tests/responsive-layout-allowlist.json。 - 响应式扫描范围唯一清单:
tests/responsive-layout-coverage.json。
4.2 第一轮专家优化的六个批次
-
原生路由参数
- G01、G03、G06 不再依赖
location.hash、URLSearchParams或hashchange。 - Android 活动页参数由各页
onLoad(query)唯一持有。 - 保护合同:
tests/native-route-query-contract.ps1。
- G01、G03、G06 不再依赖
-
AppDialog 高度预算
components/AppDialog.vue统一持有顶部、底部安全区和唯一最大高度公式。- 外层弹窗使用 Flex 列布局,内容区
min-height: 0并独立滚动。 - 已在 G10、R04、R08、F07、M10 等短/长弹窗复核。
-
共享点击语义
components/AppTabbar.vue提供tablist、tab、aria-selected和按压反馈。components/GenealogyCard.vue提供按钮语义、组合可访问名称和按压反馈。- 保护合同:
tests/shared-interaction-accessibility-contract.ps1。
-
G10 拒绝原因校验
- 文本域具有稳定 ID、
aria-invalid、aria-describedby。 - 错误元素使用
role="alert";空提交后文本域自动聚焦。 - 页面:
pages/genealogy/g10-application-review.vue。
- 文本域具有稳定 ID、
-
唯一密码策略
- 唯一所有者:
utils/validation.js。 - A04、A05、M04 统一要求 8—32 位且同时包含字母和数字。
- M04 额外拒绝新密码与当前密码相同。
- 保护合同:
tests/password-policy-contract.ps1、tests/password-policy-runtime-smoke.js。
- 唯一所有者:
-
T01 回到当前成员
- 页面:
pages/tree/t01-tree-overview.vue。 - 用户横向拖离当前节点后才显示“回到当前”。
- 最终实现不是固定偏移或简单
scroll-into-view,而是测量滚动视口和选中节点中心后设置精确scroll-left。 - MuMu 最终实测中心误差约
0.24 CSS px。
- 页面:
4.3 本轮逐页审核中已经解决的典型问题
- G11、G12、T03—T06 等内容面板移除强制
min-height,恢复内容驱动高度。 - F02、F06、F09 等长文本输入改为自然增长的
auto-height。 - F04/F03 和 F09/F08 修复固定页头在长列表、原生媒体滚动时的层叠问题。
- F10 的可变高度装饰面迁移到共享九宫格档案。
- R01 卡片移除固定高度和百分比内边距,并改用原生
onLoad状态参数。 - T01 的代际栏、横向提示、树画布和非树状态已分别约束,不能再退回固定大画布补丁。
完整逐页记录见:
docs/superpowers/plans/2026-07-21-project-wide-audit-and-expert-optimization.mddocs/superpowers/specs/2026-07-21-whole-product-enrichment-design.mddocs/superpowers/plans/2026-07-21-whole-product-enrichment-implementation.md
5. 最近一次验证基线
2026-07-21 最终闭环时:
- 全部
tests/*.ps1:129/129 PASS tests/password-policy-runtime-smoke.js:PASS- 四个用户指定核心基线:全部 PASS
- Vue 文件:
66/66 - Vue 中
100% 100% no-repeat:0 - Vue 中直接
border-image-slice:0 - MuMu 设备:
emulator-5554在线 - MuMu 物理尺寸:
900×1600 - MuMu density:
320 dpi - Android WebView 逻辑视口约为
451×800 CSS px
这些数字是上次闭环事实。换机后必须重新运行验证,不能因为本文件写着通过就直接宣称新环境通过。
6. 新电脑首次启动后的验证顺序
在 <JIAPUAPP_ROOT> 中运行:
powershell -ExecutionPolicy Bypass -File tests/adaptive-frame-profiles-contract.ps1
powershell -ExecutionPolicy Bypass -File tests/project-responsive-layout-contract.ps1
powershell -ExecutionPolicy Bypass -File tests/ag-responsive-surfaces-contract.ps1
powershell -ExecutionPolicy Bypass -File tests/compile-audit.ps1
node tests/password-policy-runtime-smoke.js
运行全部 PowerShell 合同:
$files = Get-ChildItem -LiteralPath tests -Filter '*.ps1' | Sort-Object Name
$pass = 0
$fail = 0
$failed = @()
foreach ($file in $files) {
& powershell -NoProfile -ExecutionPolicy Bypass -File $file.FullName *> $null
if ($LASTEXITCODE -eq 0) {
$pass++
} else {
$fail++
$failed += $file.Name
}
}
Write-Output "TOTAL=$($files.Count) PASS=$pass FAIL=$fail"
$failed
核对 Vue 覆盖:
$coverage = (Get-Content -Raw tests/responsive-layout-coverage.json | ConvertFrom-Json).covered | Sort-Object
$actual = @(rg --files -g '*.vue' | ForEach-Object { $_ -replace '\\','/' }) | Sort-Object
$missing = @($actual | Where-Object { $_ -notin $coverage })
$stale = @($coverage | Where-Object { $_ -notin $actual })
"ACTUAL=$($actual.Count) COVERED=$($coverage.Count) MISSING=$($missing.Count) STALE=$($stale.Count)"
核对两项禁用规则:
rg -n --glob '*.vue' '100%\s+100%\s+no-repeat' .
rg -n --glob '*.vue' 'border-image-slice\s*:' .
两条 rg 命令无输出才是正确结果。
7. MuMu 验证规则
- 只使用 MuMu 安卓模拟器作为视觉验收依据,不使用浏览器截图代替。
- 不要启动、关闭或改变用户的模拟器配置,除非用户明确要求。
- 新电脑上的设备序列号可能不再是
emulator-5554,先用adb devices读取真实值,不要硬编码旧值。 - 上次设备为
900×1600 / 320dpi;如果新电脑已有不同配置,先报告,不要擅自调整。 - 忽略截图中的“3D研究室”等系统水印。
- 每次修改页面后,先跑聚焦合同、全局响应式合同和编译审计,再等待 HBuilderX 热更新,最后在 MuMu 复核。
- 视觉截图必须等待页面稳定;拒绝过渡帧、空白页、错误路由、未加载完成和被软键盘意外遮挡的截图。
- MuMu WebView 调试端口在上次环境为
9223,每次导航后 target ID 都可能变化,可用以下命令重新查询:
curl.exe -s http://127.0.0.1:9223/json
- CDP 只能辅助导航、读取 DOM 和逻辑状态;最终视觉结论必须来自 ADB 获取的 MuMu 屏幕截图。
8. 后续开发必须继续遵守的原则
- 整个项目自适应,不接受只针对某个尺寸的单页补丁。
- 内容高度由内容决定。
- 弹窗只使用视口最大高度和内部滚动。
- 不通过压缩字号、降低行高或随意缩小按钮掩盖布局错误。
- 每个确认问题先提出五个可行方案,比较全局合同、回归风险、影响范围、维护成本和 MuMu 可验证性,再自主选择最优方案。
- 共享规则必须由唯一公共所有者持有;页面不得复制九宫格切片、密码规则或共享弹窗高度公式。
- 修改合同必须同时更新唯一所有者、运行代码、验证器、测试和文档,删除旧路径,不保留“以防万一”的兼容读取。
- 页面提示文案不得使用“汤正华堂侄”等具体姓名示例,应使用“某某某堂侄”等通用提示;已有 fixture/mock 数据本身无需清理。
- 不重复修改已经通过的 G01—G10,除非有明确证据证明全局改动造成回归。
- 不执行
git add、commit、push、restore、checkout、reset等 Git 变更操作。 - 不删除或覆盖用户现有改动、未跟踪文件、资产、测试和文档。
9. 下一阶段推荐入口
响应式和第一轮专家优化已完成。下一阶段不要重新做全项目响应式迁移,优先从已记录但尚未进入第一轮实现的产品深化项中选择:
- 导航栈语义统一:区分
navigateTo、redirectTo、reLaunch、switchTab的业务边界,避免深层页面堆栈和错误返回。 - 短信验证码完整状态机:发送、倒计时、重发、失败、过期、提交锁定及页面离开清理。
- 跨页面领域数据持久化:替换部分只在当前页面生效的演示状态,使创建、编辑、删除后的结果在返回列表时一致。
- 全局文字层级与可访问性第二轮:在不缩小字号的前提下统一正文、辅助信息、错误提示和可触控语义。
推荐先处理“导航栈语义统一”,因为它影响页面返回、跨模块入口和后续数据持久化,但实施前仍要先形成独立设计与迁移计划。不要一次混合实施以上四项。
10. 新会话首次回复必须报告
接管者完成阅读和只读检查后,先向用户报告:
- 读到了哪些当前权威文件。
- 当前已经完成到哪里。
- 五个核心验证和全量合同是否仍通过。
- Vue 覆盖是否仍为精确相等,禁用规则是否仍为零。
- MuMu 是否在线、实际设备序列号、尺寸和 density。
- 准备从哪个第二阶段深化项开始,以及为什么。
在这些事实没有核对前,不要一上来修改代码。
11. 可直接复制到新会话的提示词
请全程使用中文。项目根目录是:
【替换成新电脑上的 jiapuapp 绝对路径】
开始前必须完整阅读:
1. AGENTS.md
2. docs/换机继续任务交接_2026-07-22.md
3. docs/superpowers/specs/2026-07-21-project-wide-responsive-layout-design.md
4. docs/superpowers/plans/2026-07-21-responsive-foundation-phase-1.md
5. tests/responsive-layout-coverage.json
6. styles/adaptive-frame-profiles.scss
7. docs/superpowers/plans/2026-07-21-project-wide-audit-and-expert-optimization.md
8. docs/superpowers/specs/2026-07-21-whole-product-enrichment-design.md
9. docs/superpowers/plans/2026-07-21-whole-product-enrichment-implementation.md
当前全项目响应式、G10 后续页面 MuMu 审核、两位专家评审和第一轮六个优化批次已经完成。不要重新推翻已通过设计,不要回到 G01/G10 重新开始。两位专家 Dirac 与 Leibniz 已完成工作,不要重复创建。
先运行并报告:
powershell -ExecutionPolicy Bypass -File tests/adaptive-frame-profiles-contract.ps1
powershell -ExecutionPolicy Bypass -File tests/project-responsive-layout-contract.ps1
powershell -ExecutionPolicy Bypass -File tests/ag-responsive-surfaces-contract.ps1
powershell -ExecutionPolicy Bypass -File tests/compile-audit.ps1
node tests/password-policy-runtime-smoke.js
然后运行全部 tests/*.ps1,并核对:
- 实际 Vue 与 tests/responsive-layout-coverage.json 是否完全相等;
- 是否仍有 100% 100% no-repeat;
- Vue 是否仍直接写 border-image-slice;
- MuMu 是否在线及其实际尺寸、density。
只使用 MuMu 做视觉审核,不使用浏览器截图代替;不要启动或关闭模拟器,不要擅自修改模拟器尺寸。不要执行任何 Git 变更操作,不要删除或覆盖现有文件。
下一阶段优先评估“导航栈语义统一”。遇到真实问题时提出五个方案,自主选最优方案;修改前写失败合同,修改后必须在 MuMu 复核。先报告读到的内容、当前完成状态、测试、覆盖、MuMu 状态和下一步,不要一上来改代码。
12. 交接完成判定
新电脑满足以下条件后,才算成功接管:
- 能完整打开项目且正式资产没有缺失。
- 五个核心验证通过。
- 全部 PowerShell 合同通过,或明确列出只在新环境失败的合同及根因。
- Vue 覆盖精确相等,两个禁用扫描为零。
- HBuilderX 能把项目热更新到用户当前 MuMu。
- MuMu 截图中的 G10、T01、G01 或另一个代表页与本轮视觉基线一致。
- 接管者能准确复述唯一所有者、禁止事项和下一阶段入口,没有回退到旧 H5 审核停点。