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:
1 parent
956382944d
commit
f64a172b5a
10 files changed
+803
-41
No files matched your search
@@ -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}`", "")
|
||||
|
||||
|
||||
Reference in new issue
Block a user