From f9d3e0a11f82ec280f1e3762c643cfd980a2fe14 Mon Sep 17 00:00:00 2001 From: "agent.develop" Date: Mon, 21 Sep 2026 12:59:21 +0800 Subject: [PATCH] =?UTF-8?q?approve:=20[M11b-2a]=20Git=20=E6=94=B6=E5=8F=A3?= =?UTF-8?q?=EF=BC=9A=E6=8F=90=E4=BA=A4=20tx=5Fwrite=20+=20p99=5Fprobe=20?= =?UTF-8?q?=E5=B9=B6=E8=B7=91=E9=80=9A=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scripts/gen_overlay_pages.py | 38 +++++++++++++++++++++++++++++++++--- 1 file changed, 35 insertions(+), 3 deletions(-) diff --git a/scripts/gen_overlay_pages.py b/scripts/gen_overlay_pages.py index f2bc652..39623c5 100644 --- a/scripts/gen_overlay_pages.py +++ b/scripts/gen_overlay_pages.py @@ -4,13 +4,21 @@ 【产物定位:构建产物,不入库】 wwwroot/pbl_overlay/*.ui 属生成目录,仓库根 .gitignore 以条目 -`wwwroot/pbl_overlay/` 将其排除,由 apps/pbls/build.sh 第 9 步调用本脚本重跑生成 -(module-development-spec「CRUD-Generated wwwroot Directories Must Not Be Git-Tracked」/ -QC 退回意见 #3 方案 (b))。可核验: +`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。 @@ -177,6 +185,29 @@ def build_page(key, in_world, zh): } +def warn_build_integration(): + """机械核验:页面壳生成步骤是否已接入应用构建脚本(QC #9 复审意见 #2)。 + + 只告警、不改返回码——apps/pbls/build.sh 归应用侧所有,接入与否由 PM 派单跟踪; + 但文档不得依赖未经核验的口头承诺,故每次校验都实测一次并如实打印结论。 + """ + build_sh = os.path.normpath(os.path.join(ROOT, os.pardir, os.pardir, + 'apps', 'pbls', 'build.sh')) + if not os.path.isfile(build_sh): + print('[gen_overlay_pages][WARN] 未找到 %s:无法核验生成步骤是否已接入构建脚本,' + '新环境请手动执行本脚本生成页面壳' % build_sh) + return + with io.open(build_sh, 'r', encoding='utf-8', errors='replace') as f: + body = f.read() + if 'gen_overlay_pages' in body: + print('[gen_overlay_pages] OK: 生成步骤已接入 %s' % build_sh) + else: + print('[gen_overlay_pages][WARN] 生成步骤未接入 apps/pbls/build.sh:' + '新克隆/新部署环境需手动执行 `python3 scripts/gen_overlay_pages.py`,' + '否则 wwwroot/pbl_overlay/ 为空、/pbl_overlay/.ui 全量 404' + '(接入构建脚本由 PM 派单跟踪,见 README「生成产物与入库边界」)') + + def check(zh, en): """校验:① zh/en key 集合一致;② 每个页面的 i18n key 齐备;③ 生成目录与注册表一致。""" problems = [] @@ -223,6 +254,7 @@ def main(argv=None): if args.check: print('[gen_overlay_pages] CHECK PASS: %d 页面壳 / zh+en 各 %d 条文案 key 一致' % (len(PAGES), len(zh))) + warn_build_integration() return 0 if args.clean: if os.path.isdir(OUT_DIR):