diff --git a/.gitignore b/.gitignore index 688b709..6cfdb66 100644 --- a/.gitignore +++ b/.gitignore @@ -11,5 +11,7 @@ build/ .venv/ venv/ -# M9 覆盖层页面壳:构建产物,由 apps/pbls/build.sh 第9步 scripts/gen_overlay_pages.py 重新生成,不入库 +# M9 覆盖层页面壳:构建产物,不入库。生成方式=在新克隆/新部署环境显式执行 +# python3 scripts/gen_overlay_pages.py(截至本提交 apps/pbls/build.sh 尚无调用本脚本的步骤, +# 接入构建脚本由 PM 派单跟踪;README「生成产物与入库边界」有可机械核验的前提检查) wwwroot/pbl_overlay/ diff --git a/README.md b/README.md index b314d93..6995eb0 100644 --- a/README.md +++ b/README.md @@ -5,17 +5,29 @@ PBL 覆盖层前端扩展模块(scense / scense_game 之上的 pbl_scense_ext ## 生成产物与入库边界 - `wwwroot/pbl_overlay/*.ui`(12 个覆盖层页面壳)是**构建产物,不入库**:仓库根 - `.gitignore` 以条目 `wwwroot/pbl_overlay/` 排除该目录,由 `apps/pbls/build.sh` - 第 9 步调用 `python3 scripts/gen_overlay_pages.py` 重新生成 + `.gitignore` 以条目 `wwwroot/pbl_overlay/` 排除该目录 (module-development-spec「CRUD-Generated wwwroot Directories Must Not Be Git-Tracked」)。 +- **生成时机(如实声明,不声称不存在的步骤)**:截至本提交,`apps/pbls/build.sh` + **没有**调用 `scripts/gen_overlay_pages.py` 的步骤——实测 + `grep -n 'gen_overlay_pages' apps/pbls/build.sh` 零命中(该脚本第 9 步是 py_compile + 全量语法验证)。因此**新克隆 / 新部署环境必须显式执行** + `python3 scripts/gen_overlay_pages.py`,否则 `wwwroot/pbl_overlay/` 为空目录、 + `/pbl_overlay/.ui` 导航全量 404。把生成步骤接入应用构建脚本(模块安装之后、 + wwwroot 软链之前)不在本模块职权内(`build.sh` 归应用侧所有),已由本任务交付说明 + 冒泡请 PM 派单跟踪;在其落地前,本模块文档不得声称存在一个不存在的构建步骤。 - 入库的交付物是**生成器与事实源**:`scripts/gen_overlay_pages.py`(生成器)、 `wwwroot/i18n/{zh,en}/msg.txt`(界面文案事实源)、`wwwroot/overlay/*.js|*.css` (覆盖层实现)、`scripts/load_path.py`(RBAC 路径登记)。 -- 一致性自检(两条都必须成立): +- 一致性自检(三条都必须成立,前两条验「入库边界」,第三条验「生成步骤接入前提」): ```bash git check-ignore -v wwwroot/pbl_overlay/home.ui # 命中 .gitignore 的 wwwroot/pbl_overlay/ git ls-files wwwroot/pbl_overlay # 空输出(无任何跟踪文件) + # 前提检查:生成步骤是否已接入应用构建脚本;WARN = 尚未接入,新环境须手动生成 + grep -q gen_overlay_pages ../../apps/pbls/build.sh \ + || echo 'WARN: 生成步骤未接入 apps/pbls/build.sh,新克隆环境需手动执行 scripts/gen_overlay_pages.py' ``` + 第三条也可由生成器自检代跑:`python3 scripts/gen_overlay_pages.py --check` 会实测 + `apps/pbls/build.sh` 并打印 `OK:` 或 `WARN:`(不改变返回码)。 - 新增/删除页面壳:改 `gen_overlay_pages.py` 的 `PAGES` 注册表 + `wwwroot/overlay/pbl_overlay_core.js` 的 `PAGES` + `scripts/load_path.py` 的 `OVERLAY_PAGES` 三处同源,再跑 `python3 scripts/gen_overlay_pages.py --check`(rc=0 才算通过)。