目的:按 gpt6 9 项视觉验收 checklist,对「通用模块渲染器」迁移后的 product-detail 做真机逐项打勾。
铁律(gpt6):默认关的功能也必须视觉验收,不能只靠"不显示"蒙混;分包不是审核隔离区。
代码基线:4796c03a(feat: 通用模块渲染器 + 预埋板块策略落地)。
| 项 | 值 |
|---|---|
| 页面 | pages/product-detail |
| 代码版本(commit) | 4796c03a |
| 验证环境 | 微信开发者工具 + 真机预览(iOS / Android 各一台) |
| 基础库版本 | ______(建议 ≥ 2.32.3) |
| 验证人 | ______ |
| 验证日期 | 2026-__-__ |
| 结果汇总 | 通过 ____ 项 / 阻断 ____ 项 |
真改了代码包,上传前必须先验再提审。以下任选一种,验完务必还原:
方式 A(推荐,本地临时改,不影响线上数据)
miniprogram-v3/utils/detail-config.tsDEFAULT_PAGE_CONFIGS.PRODUCT_DEFAULT.modules 中,把 leader / gallery / video / notice 四个模块的 enable 临时改为 truegit checkout 还原该文件,不要把这个改动提交方式 B(A 端开关,动 staging/prod 数据)
enable 置 true方式 C(预览参数,已内置实现,推荐 ✅)
product-detail.ts 已内置 __preview 钩子:读 options.__preview,把列出的 type 强制 enable:true 并注入样例内容(图集复用真实封面图、领队/须知注入文案样例)。previewTypes 恒空 → 零行为变更,可安全保留,无需还原。 pages/product-detail/product-detail?id=<真实套餐id>&__preview=gallery,video,notice,leader
product-detail.ts 顶部 DEV_PREVIEW_VIDEO 常量填成一个已备案域名的 mp4 直链,否则视频块因 videoUrl 为空被模板隐藏(wx:if)。| # | 模块 | type | 默认态 | 验证动作 | 预期渲染 | 结果(✓/✗) | 备注 |
|---|---|---|---|---|---|---|---|
| 1 | 头图/标题 | hero | 常显 | 正常进页 | 大图 + 标题 + 副标题 + 价格,不参与 wx:for,独立渲染 | [ ] | |
| 2 | 商品介绍 | intro | 常显 | 正常进页 | 取真实 description 渲染;无描述时整块隐藏不报错 | [ ] | |
| 3 | 费用包含 | includes | 常显 | 正常进页 | includes 数组 join 成条目列表;空数组时隐藏 | [ ] | |
| 4 | 领队同行 | leader | 默认关 | 用方式 A/B/C 开启 | 显示领队名 + 标签;关闭时整块不渲染(无占位/无泄漏) | [ ] | |
| 5 | 核销说明 | redeem | 常显 | 正常进页 | 核销规则文本/条目;无数据时隐藏 | [ ] | |
| 6 | 温馨提示 | notice | 默认关 | 开 flag | 纯文本提示块,样式走 token;关闭时不渲染 | [ ] | |
| 7 | 实拍图集 | gallery | 默认关 | 开 flag + 多图 | 3 列网格(.g-grid),单图 200rpx 高;无图时隐藏;多图不卡 | [ ] | |
| 8 | 视频展示 | video | 默认关 | 开 flag + videoUrl | <video> 原生控件可播放/全屏;无新权限 scope;无 URL 时隐藏 | [ ] |
通过准则:默认关的 4 块(leader/notice/gallery/video)在「关」时必须完全不渲染、不留空白占位;在「开」时必须正常渲染且风格一致。
| # | 验收项 | 验证方法 | 预期 | 结果(✓/✗) | 备注 |
|---|---|---|---|---|---|
| 1 | 窄屏不溢出/不挤压 | iPhone SE 1st(320pt) 或 开发者工具 320 宽 | 无横向滚动、文字不重叠、图集不破版 | [ ] | |
| 2 | 常规屏排版正常 | iPhone 12/13(390pt) | 间距/留白均衡,模块间距一致 | [ ] | |
| 3 | 长标题不破版 | 标题 >20 字 | 不截断(或合理省略号)、不撑破 hero | [ ] | |
| 4 | 多图不卡 | gallery 开 + >8 张图 | 网格流畅,无长白屏;建议懒加载 | [ ] | |
| 5 | 空数据兜底 | intro 无 description / gallery 无图 / leader 无数据 | 对应块隐藏,页面其余正常,绝不白屏或 JS 报错 | [ ] | |
| 6 | setData 体积 | DevTools Audits 截 renderModules | 单页 renderModules < 30KB;大图走 CDN 不全量进 setData | [ ] | |
| 7 | token 一致性 | 取色核对所有色值 | 全部走 --color-* / --space-* 变量,无裸 hex 回退 | [ ] | |
| 8 | 视频控件 | video 开 + 点播放 | 原生 <video> 可播/可全屏;确认审核无新增 scope | [ ] | |
| 9 | 顺序与分享卡 | 调整 modules 顺序后预览 | 模块按配置顺序渲染;onShareAppMessage 标题/图取商品正确 | [ ] |
✗ 项 → 必须修复后重新编译验证,再提审,不得带阻断项上传gallery/video/notice 仅用代码包已登记类型,未引入新权限 scope;若需新 scope 则必须走提审流程git status 干净)| 角色 | 姓名 | 日期 | 结论 |
|---|---|---|---|
| 执行验收 | ______ | 2026-__-__ | 通过 / 驳回 |
| 复核(波波) | ______ | 2026-__-__ | 准予提审 / 打回 |
关联文档:docs/reports/2026-09-29-预埋板块清单-波波.md(各常用页预埋板块清单表 + gpt6 架构建议)
回归记录:Node harness buildRenderModules 17/17 通过(默认隐藏 leader、A 端覆盖启用、空态兜底、未知类型告警跳过、增量追加实例)