配套代码:miniprogram-v3/detail-render/normalize.ts(通用模块渲染器)、miniprogram-v3/utils/detail-config.ts(配置契约 + 白名单)。
生成日期:2026-09-29。目的:把"常用页常用板块"提前在代码包登记好,A 端只管启停/排序/加实例,等 A 端做好后手动控制,不重提审。
enable:true 真机验渲染,不能只靠"不显示"蒙混。「已登记」= detail-config.ts 的 DetailModuleType 并集;其中 BODY_TYPES(真实可被动态渲染) = intro/includes/leader/redeem/gallery/video/notice,hero 由页面单独渲染不入循环。provenance/visit/rooms/booking 仅在 item/hotel 默认配置里出现,尚未接入动态渲染器(item/hotel 仍是写死块,迁移待办)。
| 类型 | 数据来源 | 需新 scope | 默认态 | 是否已被动态渲染 | 说明 |
|---|---|---|---|---|---|
| hero | 页面顶层 title/cover | 否 | 常显 | 页面单独处理 | 沉浸式头图 |
| intro | 真实接口 description 兜底 A 端文案 | 否 | 开 | ✅ product | 简介 |
| includes | 真实接口 includes | 否 | 开 | ✅ product | 套餐包含 |
| leader | 真实接口 leader | 否 | 关 | ✅ product | 领队同行(默认关,铁律) |
| redeem | A 端文案 | 否 | 开 | ✅ product | 到店核销说明 |
| gallery | A 端 content.images | 否(<image> 内建) | 关(预埋) | ✅ product | 实景图集 |
| video | A 端 content.videoUrl | 否(<video> 内建) | 关(预埋) | ✅ product | 视频介绍 |
| notice | A 端 content.text | 否 | 关(预埋) | ✅ product | 须知/公告 |
| provenance | A 端文案 | 否 | 开 | ❌ item 待迁移 | 风物印记 |
| visit | A 端文案 | 否 | 开 | ❌ item 待迁移 | 到店看实物 |
| rooms | A 端/后端房型 | 否 | 开 | ❌ hotel 待迁移 | 房型 |
| booking | A 端 | 否 | 开 | ❌ hotel 待迁移 | 预约 |
provenance、visit(已写死块,待迁移通用渲染器)。gallery、video、notice 三项——代码包已支持,A 端写实例即启用。intro/includes/leader/redeem/notice/gallery/video)。wx:for + 各自 template)。gallery/video/notice/leader 启停、modules 排序、加同类型新 id 实例。reviews/related/faq/活动 等)、需新权限 scope 的功能、类目资质型(在线医疗/金融等)。detail.{pageType}.{entityId}(如 detail.product-detail.1)。PageConfig 的 Partial JSON(modules 数组)。{id:'g2',type:'gallery',enable:true,content:{images:[...]}})→ 默认模块保留 + 追加启用(预埋铁律落地)。enable 改 true 即显示,无需改代码。在开发者工具/体验版临时把 leader/gallery/video/notice 设为 enable:true 后逐项核对:
wx:if 隐藏,无空白占位、无"undefined"。renderModules < 50KB(图片只传 CDN URL,不塞 base64)。--color-* / --radius-* / accent-bar 统一,无裸色。<video> 控件可用、封面无黑块、不自动播放。modules 配置一致(非代码写死顺序)。onShareAppMessage / onShareTimeline 取真实 cover / title。normalize.ts + product-detail 迁移(动态模板渲染)。gallery/video/notice;mergeConfig 双模式(full + 增量预埋)。