From 799ceb749be487cafb67e89a7b794ff69af9ba41 Mon Sep 17 00:00:00 2001 From: maogeigei Date: Tue, 13 Oct 2026 17:47:59 +0800 Subject: [PATCH] =?UTF-8?q?product-planning=20=E2=91=A2=E6=AE=B5=EF=BC=9A?= =?UTF-8?q?=E9=97=B8=E9=97=A8=E8=84=9A=E6=9C=AC=E4=B8=8B=E6=B2=89=E8=BF=9B?= =?UTF-8?q?=E6=8A=80=E8=83=BD=E5=8C=85=EF=BC=88=E6=A1=86=E6=9E=B6=E4=B8=80?= =?UTF-8?q?=E4=BB=BD=E3=80=81=E5=B8=B8=E9=87=8F=E7=8E=B0=E8=AF=BB=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 起因:③段只定义 Gate(自检表),不供给执行件 ⇒ 每个目标自建一份 (实测本区 执行会话/*/ui/_tools/ 下 check_skeleton.py 6 份 / 3 个版本,其中一版 还停在"八页骨架"常量上 ⇒ ②段收成七页后要么 SystemExit、要么静默比错)。 新增 references/stage-delivery/scripts/(跨项目共用一份): - _common.py 定位(按 docs/pm/*/prd|ui 形态找,⛔ 不写死项目名/文件名)+ 自检文本解析规则(唯一一份)+ node/harness 自动发现 - check_skeleton.py ②段骨架 ↔ 原型 FROZEN 表逐页逐位比对;节号/页集合/页数现读 - check_js.py " not in src: + return C.die("原型里没有 `") + js = src[i:j] + fails = [] + + # ① 语法 + if not node: + fails.append("没找到 node(用 --node 或环境变量 NODE_BIN 指定)") + print("FAIL 语法:没找到 node ⇒ 这一条没跑(⛔ 不是 PASS)") + else: + with tempfile.NamedTemporaryFile("w", suffix=".js", delete=False, + encoding="utf-8", newline="") as f: + f.write(js) + tmp = f.name + try: + r = subprocess.run([node, "--check", tmp], capture_output=True) + if r.returncode == 0: + print("PASS 语法: