|
@@ -57,6 +57,8 @@ SOURCES = [
|
|
|
SRC2CN = {"substance": "实质", "form": "形式", "feeling": "感受", "effect": "作用", "intent": "意图"}
|
|
SRC2CN = {"substance": "实质", "form": "形式", "feeling": "感受", "effect": "作用", "intent": "意图"}
|
|
|
TYPE2ATTR = {"how": "how工序", "what": "what构成", "why": "why原理"}
|
|
TYPE2ATTR = {"how": "how工序", "what": "what构成", "why": "why原理"}
|
|
|
CSTAGE = {"定向", "构思", "结构", "成文", "打磨"} # 创作阶段受控 5 值
|
|
CSTAGE = {"定向", "构思", "结构", "成文", "打磨"} # 创作阶段受控 5 值
|
|
|
|
|
+KINDS = {"子集", "多维关系", "序列"} # what.kind 受控 3 值
|
|
|
|
|
+KIND_FIX = {"多维度关系": "多维关系", "多维": "多维关系", "集合": "子集", "序列型": "序列"} # LLM 偶发变体归一
|
|
|
REUSE_THRESHOLD = 0.90
|
|
REUSE_THRESHOLD = 0.90
|
|
|
|
|
|
|
|
|
|
|
|
@@ -421,6 +423,8 @@ def main() -> None:
|
|
|
how_titles = {k.get("id"): k.get("title") for k in knowledges if k.get("type") == "how"}
|
|
how_titles = {k.get("id"): k.get("title") for k in knowledges if k.get("type") == "how"}
|
|
|
for k in knowledges:
|
|
for k in knowledges:
|
|
|
k["业务阶段"] = [b for b in (k.get("业务阶段") or []) if b in ("灵感", "选题", "脚本")] # 守卫:只留合法业务阶段
|
|
k["业务阶段"] = [b for b in (k.get("业务阶段") or []) if b in ("灵感", "选题", "脚本")] # 守卫:只留合法业务阶段
|
|
|
|
|
+ if k.get("type") == "what" and k.get("kind") not in KINDS: # 守卫:what.kind 受控值,LLM 偶发变体归一
|
|
|
|
|
+ k["kind"] = KIND_FIX.get((k.get("kind") or "").strip(), k.get("kind"))
|
|
|
for s in k.get("steps", []): # 守卫:创作阶段只留合法 5 值,非法(如"定稿/输出")丢弃
|
|
for s in k.get("steps", []): # 守卫:创作阶段只留合法 5 值,非法(如"定稿/输出")丢弃
|
|
|
if s.get("创作阶段") not in CSTAGE:
|
|
if s.get("创作阶段") not in CSTAGE:
|
|
|
s["创作阶段"] = None
|
|
s["创作阶段"] = None
|