product-planning:用备份里的新版④段装回(四段恢复),替换 10-14 删掉的旧版

- 来源:E:/技能备份/product-planning/references/stage-proto-doc/(4 份,与备份逐字一致,md5 逐个核过)。
- 新版与旧版的差别:新版定位改成「解释与记录**现有**原型,不重新规划产品、不重新设计界面」;
  交**两份产物**(原型内嵌说明区 + 独立产品文档 designs/<项目>/产品文档.html);
  内容按「需求列表 → 用户场景 → 操作流程 → 功能」四块 + 附录「原型页面地址」铺;
  配 R/S/F 编号体系与三份方法论(doc-area-spec / doc-language-spec 322 行 / guided-tour)。
  旧版那套(状态轴、三段必填、逐步骤演示)不再使用。
- 总入口 SKILL.md 同步改回四段:description、「四段结构」表(④子步=4a 场景盘点 / 4b 说明区 /
  4c 演示引导(可选))、交接口加 ③→④、产物落哪加④行、进入方式加回两行、只读清单加④条、
  执行规则与反面清单(加回两条:③别顺手写说明区/产品文档、④别重新规划产品);段名链恢复
  「产品 / 功能 / 界面 / 说明」;留痕位改写为④段的完整沿革(10-14 删旧版 → 10-15 装新版)。
- ③段 stage-delivery:「与④段的界」改回(③造物、④解释与记录),两处约束改回「说明区与独立产品文档归④段」,
  反面清单加回一条。①②段的段名对称链与越界条目改回四段。
- 闸门 check_naming.py:STAGES 恢复 stage-proto-doc(圈号数组回 ①②③④、交接口回三条边、
  子步例外列表回 4b/4c),DEPRECATED 去掉④段名(段名与子步名仍在使用)。
- 补入配套留痕:references/_留痕/stage-proto-doc-SKILL-20261014-替换前.md(旧版 SKILL 存档,转 LF)。
- 验收:check_naming.py --ws E:/ProgramData/AIProject/contentm_agent = 通过 2063 / 失败 0 / 提示 27。
This commit is contained in:
admin committed 2026-10-15 07:58:14 +08:00
1 parent 956382944d
commit f64a172b5a
10 files changed
+803 -41

No files matched your search

+22 -16
View File
@@ -1,8 +1,8 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""三段流水线**命名一致性**自检(纯静态文本比对,不需要渲染、不需要外部依赖)。
"""四段流水线**命名一致性**自检(纯静态文本比对,不需要渲染、不需要外部依赖)。
只查一件事:**三段的段名 / 子步名,在总入口、各段 SKILL.md、各段 references 之间有没有漂。**
只查一件事:**四段的段名 / 子步名,在总入口、各段 SKILL.md、各段 references 之间有没有漂。**
⛔ 本脚本**不查视觉、几何、配色** —— 那些判据归③段 §供给·工艺数值判据,本脚本一概不碰。
为什么需要它(不是"为了严谨",是实测过的两次真实事故):
@@ -48,11 +48,17 @@ STAGES = [
"h1": "# ③ 界面交互",
"subs": ["3a 视觉规范", "3b 原型", "3c GPT参考版", "3d 审查打磨"],
},
{
"slug": "stage-proto-doc",
"cn": "原型说明文档",
"h1": "# ④ 原型说明文档",
# 4b/4c 允许只在一处出现完整(总入口与段内都写全),但**两处都必须能读到**
"subs": ["4a 场景盘点", "4b 说明区", "4c 演示引导"],
},
]
# 2026-10-14 用户令:④段「原型说明文档」整段删除(原做法=往原型 HTML 注入说明区注解层,
# 实测不好用)⇒ `references/stage-proto-doc/` 连方法论一并撤掉,本表同步去掉该项。
# 该段的段名与子步名转入下面的 DEPRECATED(提示级),用来查正文里的残留引用。
# ④段沿革(2026-10-14 → 10-15):10-14 按用户令删掉旧版(做法=往原型 HTML 注入说明区注解层,实测不好用);
# 10-15 用备份里的新版装上(两份产物 + R/S/F 编号 + 四块框架),本表随之恢复该项。
# 已废止的旧名。出现在「废止理由块」里是正当的(那是留痕),
# 所以这里只做**提示级**检查(不计入 FAIL),人工确认上下文即可。
@@ -68,8 +74,8 @@ DEPRECATED = [
"00-问题定义.md", "01-需求澄清.md",
"10-参考实装拆解.md", "11-竞品分析.md", "12-用户画像.md",
"strategy/30-产品策略.md", "strategy/31-使用场景.md",
# 2026-10-14 ④段整段删除:段名与三个子步名一并废止
"④ 原型说明文档", "4a 场景盘点", "4b 说明区", "4c 演示引导",
# 2026-10-14 旧版④段的做法废止(状态轴 / 三段必填 / 逐步骤演示),段名与子步名**仍在使用**,
# 故不列入本表;新版的判据在段内 `references/doc-language-spec.md` 等三份。
]
# ⛔ 2026-10-06 用户定案:①段**产出白名单**——本段只许这五份,第 6 份须用户明确要求。
@@ -200,10 +206,10 @@ def check_root(root, label):
add("PASS", f"[{label}] 技能根存在", root)
# 1) 每段:frontmatter 闭合 + H1 与权威表一致 + 每个子步都有 H2
# ⚠️ 2026-10-05 整合后:三段收进 references/<slug>/,不再是技能根下的平级目录。
# ⚠️ 2026-10-05 整合后:四段收进 references/<slug>/,不再是技能根下的平级目录。
# 本函数按「技能包 = 一个目录,SKILL.md 在最外层」的形态定位:
# <root>/SKILL.md ← 总入口(曾为 <root>/product-planning/SKILL.md)
# <root>/references/<slug>/SKILL.md ← 三段(曾为 <root>/<slug>/SKILL.md)
# <root>/references/<slug>/SKILL.md ← 四段(曾为 <root>/<slug>/SKILL.md)
# ⛔ 不许改回平级探测:那会让整合形态静默退回「一目录套多技能」而门禁照样全绿。
for st in STAGES:
p = os.path.join(root, "references", st["slug"], "SKILL.md")
@@ -241,26 +247,26 @@ def check_root(root, label):
for st in STAGES:
num = STAGES.index(st) + 1
circled = "①②③"[num - 1]
circled = "①②③④"[num - 1]
# 段名必须以「圈号 + 空格 + 段名」成对出现,避免只匹配到散落正文
ok = f"**{circled} {st['cn']}**" in text
add("PASS" if ok else "FAIL",
f"[{label}] {rel} 三段结构表含 `{circled} {st['cn']}`", "")
f"[{label}] {rel} 四段结构表含 `{circled} {st['cn']}`", "")
# 子步:总入口表里每个子步都要能被逐个读到
for st in STAGES:
for sub in st["subs"]:
if sub.split()[0] in ("3d",):
# 3d 在总入口可能与相邻子步合并书写,只要求"子步号 + 关键词"能被搜到
if sub.split()[0] in ("3d", "4b", "4c"):
# 3d/4b/4c 在总入口可能与相邻子步合并书写,只要求"子步号 + 关键词"能被搜到
kw = sub.split(" ", 1)[1] if " " in sub else sub
ok = (sub in text) or (kw in text)
else:
ok = sub in text
add("PASS" if ok else "FAIL",
f"[{label}] {rel} 三段结构表子步列含 `{sub}`", "")
f"[{label}] {rel} 四段结构表子步列含 `{sub}`", "")
# 交接口表:两条边必须都在
for edge in ("① → ②", "② → ③"):
# 交接口表:三条边必须都在
for edge in ("① → ②", "② → ③", "③ → ④"):
add("PASS" if edge in text else "FAIL",
f"[{label}] {rel} 交接口表含 `{edge}`", "")