#!/usr/bin/env python3 # -*- coding: utf-8 -*- """生成 M9 覆盖层 12 个页面壳 wwwroot/pbl_overlay/.ui(bricks 纯 JSON)。 【产物定位:构建产物,不入库】 wwwroot/pbl_overlay/*.ui 属生成目录,仓库根 .gitignore 以条目 `wwwroot/pbl_overlay/` 将其排除(module-development-spec「CRUD-Generated wwwroot Directories Must Not Be Git-Tracked」/ QC 退回意见 #3 方案 (b))。可核验: git check-ignore -v wwwroot/pbl_overlay/home.ui # 命中 .gitignore 中的该条目 git ls-files wwwroot/pbl_overlay # 输出为空(无跟踪文件) 本脚本(生成器)与 wwwroot/i18n/*/msg.txt(文案事实源)才是入库的交付物。 【生成时机:如实声明,不声称不存在的步骤(QC #9 复审改法 b)】 截至本次提交,apps/pbls/build.sh 中**不存在**调用本脚本的步骤——实测 `grep -n gen_overlay_pages apps/pbls/build.sh` 零命中。因此新克隆/新部署环境 必须显式执行 `python3 scripts/gen_overlay_pages.py` 生成页面壳,否则 wwwroot/pbl_overlay/ 为空目录、`/pbl_overlay/.ui` 导航全量 404。 把该生成步骤接入应用构建脚本(模块安装之后、wwwroot 软链之前)由 PM 另行派单 跟踪(本模块不拥有 apps/pbls/build.sh,不在本任务改动范围内);`--check` 会 调用 warn_build_integration() 实测并打印 WARN,使本声明可机械核验。 为什么需要页面壳:wwwroot/overlay/pbl_overlay_core.js 的 PAGES 注册表 route 指向 `/pbl_overlay/.ui`,play.js 的 pageUrl() 会拼成 `/pbl_scense_ext/pbl_overlay/.ui`;页面壳文件不存在则导航即 404。 页面壳职责(只做壳,不做业务渲染): 1. 打 `data-pbl-page=""` + `data-pbl-overlay-root="1"` 标记 —— play.js hostPageKey() 据此识别当前页、boot() 据此挂载覆盖层根节点; 2. 每个文案节点带 `data-pbl-i18n=""`,正文内嵌中文(首屏零请求可读); loader.js 在切换语言时按 msg.txt 覆盖同名节点(i18n 单一事实源); 3. 提供 `script` actiontype 按钮调用 `PblOverlayLoader.start({page:...})`, 由 loader 按需注入 core/transport/play JS 与 CSS(不在 .ui 里硬写