55 lines
1.8 KiB
Python
55 lines
1.8 KiB
Python
|
|
#!/usr/bin/env python3
|
||
|
|
"""
|
||
|
|
把 9 套排查流程图 JSON 合并到一个数组,输出 00-all.json(便于一次性 import)。
|
||
|
|
用法:python build_all.py
|
||
|
|
"""
|
||
|
|
import json
|
||
|
|
import glob
|
||
|
|
import os
|
||
|
|
import sys
|
||
|
|
from pathlib import Path
|
||
|
|
|
||
|
|
HERE = Path(__file__).parent
|
||
|
|
|
||
|
|
def main():
|
||
|
|
# 1. 找 9 个单文件(排除 00-all.json 和 build_all.py)
|
||
|
|
files = sorted(HERE.glob("[0-9][0-9]-*.json"))
|
||
|
|
if not files:
|
||
|
|
print("❌ 没找到任何 0X-*.json 文件")
|
||
|
|
sys.exit(1)
|
||
|
|
|
||
|
|
print(f"📦 找到 {len(files)} 个模板文件:")
|
||
|
|
for f in files:
|
||
|
|
print(f" - {f.name}")
|
||
|
|
|
||
|
|
# 2. 逐个读 + 校验
|
||
|
|
templates = []
|
||
|
|
for f in files:
|
||
|
|
try:
|
||
|
|
with open(f, "r", encoding="utf-8") as fp:
|
||
|
|
tpl = json.load(fp)
|
||
|
|
# 简单校验
|
||
|
|
for required in ("name", "category", "root_node"):
|
||
|
|
if required not in tpl:
|
||
|
|
raise ValueError(f"缺少必要字段: {required}")
|
||
|
|
templates.append(tpl)
|
||
|
|
print(f" ✅ {f.name}: {tpl['name']} ({len(json.dumps(tpl, ensure_ascii=False))} 字符)")
|
||
|
|
except Exception as e:
|
||
|
|
print(f" ❌ {f.name}: {e}")
|
||
|
|
sys.exit(1)
|
||
|
|
|
||
|
|
# 3. 输出汇总文件
|
||
|
|
out = HERE / "00-all.json"
|
||
|
|
with open(out, "w", encoding="utf-8") as fp:
|
||
|
|
json.dump(templates, fp, ensure_ascii=False, indent=2)
|
||
|
|
|
||
|
|
print(f"\n✅ 已生成 {out.name} (共 {len(templates)} 套)")
|
||
|
|
print(f"\n💡 接下来你可以:")
|
||
|
|
print(f" 1. 打开 {out.name} 预览 9 套完整内容")
|
||
|
|
print(f" 2. 在 Admin 后台的「排查流程图」页 → 「导入 JSON」选择此文件")
|
||
|
|
print(f" 3. 或调用后端 API:")
|
||
|
|
print(f" for tpl in templates: POST /api/troubleshooting-templates")
|
||
|
|
|
||
|
|
if __name__ == "__main__":
|
||
|
|
main()
|