| 1234567891011121314151617181920212223242526272829303132 |
- """Shared axes for formal creation-query families."""
- from __future__ import annotations
- import json
- from pathlib import Path
- ROOT = Path(__file__).resolve().parents[2]
- TREES = ROOT / "scope_trees" / "trees_index.json"
- ACTIONS = ["构思", "策划", "组织", "撰写", "改编", "润色"]
- STAGES = ["灵感", "选题", "脚本"]
- KTYPE_SUFFIX = {"what": "有哪些", "why": "为什么", "how": "怎么做"}
- def _nonleaf_d4(
- source_type: str,
- limit: int,
- under: str | None = None,
- *,
- tree_path: Path = TREES,
- ) -> list[str]:
- """Return level-4 non-leaf node names, preserving the legacy axis order."""
- idx = json.loads(tree_path.read_text("utf-8"))
- paths = {
- n.get("path") or ""
- for n in idx
- if n.get("source_type") == source_type
- and (not under or under in (n.get("path") or "").split("/"))
- }
- d4 = [p for p in paths if len([x for x in p.split("/") if x]) == 4]
- nonleaf = sorted(p for p in d4 if any(o != p and o.startswith(p + "/") for o in paths))
- return [p.split("/")[-1] for p in nonleaf][:limit]
|