63 lines
2.5 KiB
Python
63 lines
2.5 KiB
Python
# -*- coding: utf-8 -*-
|
|
"""对 B 类(同名不同内容)细分:b1 同主题旧版本 / b2 同名不同主题(高危,删除即丢失)。"""
|
|
import json, os, re
|
|
|
|
ROOT = r"D:\资料\03-项目开发\wecom_it_smart_desk\docs"
|
|
data = json.load(open(r"D:\资料\03-项目开发\wecom_it_smart_desk\docs_cmp_result2.json", encoding="utf-8"))
|
|
|
|
TEXT_EXT = {".md", ".mermaid", ".txt", ".json", ".py", ".conf", ".yml", ".yaml"}
|
|
|
|
def first_title(p):
|
|
ext = os.path.splitext(p)[1].lower()
|
|
if ext not in TEXT_EXT:
|
|
return None
|
|
try:
|
|
with open(p, encoding="utf-8", errors="ignore") as f:
|
|
for _ in range(12):
|
|
line = f.readline()
|
|
if not line:
|
|
break
|
|
s = line.strip().lstrip("#%").strip()
|
|
if s and not s.startswith(("```", "---", ">")):
|
|
return s[:60]
|
|
except Exception:
|
|
pass
|
|
return None
|
|
|
|
b1, b2, unknown = [], [], []
|
|
for row in data["name_diff"]:
|
|
oldrel, _, osz, newrel, _, nsz = row
|
|
op = os.path.join(ROOT, oldrel)
|
|
np_ = os.path.join(ROOT, newrel)
|
|
ot, nt = first_title(op), first_title(np_)
|
|
if ot is None or nt is None:
|
|
unknown.append((oldrel, newrel, osz, nsz))
|
|
elif ot == nt:
|
|
b1.append((oldrel, newrel, osz, nsz, ot))
|
|
else:
|
|
b2.append((oldrel, newrel, ot, nt, osz, nsz))
|
|
|
|
print(f"B 类合计 {len(data['name_diff'])}")
|
|
print(f" b1 同名同主题(新结构为演进版,旧版可删): {len(b1)}")
|
|
print(f" b2 同名【不同主题】(⚠ 删除即丢失,必须改名抢救): {len(b2)}")
|
|
print(f" b3 无法自动判定(二进制/无标题): {len(unknown)}")
|
|
|
|
print("\n===== ⚠ b2 高危:同名不同主题 =====")
|
|
for oldrel, newrel, ot, nt, osz, nsz in b2:
|
|
print(f" 旧 {oldrel} [{osz/1024:.1f}KB]\n 主题: {ot}")
|
|
print(f" 新 {newrel} [{nsz/1024:.1f}KB]\n 主题: {nt}\n")
|
|
|
|
print("===== b1 同主题(新版通常更大=演进版) =====")
|
|
for oldrel, newrel, osz, nsz, t in b1:
|
|
mark = "新更大" if nsz > osz else ("旧更大⚠" if osz > nsz else "等大")
|
|
print(f" - {oldrel} 旧{osz/1024:.1f}KB / 新{nsz/1024:.1f}KB {mark}")
|
|
|
|
if unknown:
|
|
print("\n===== b3 需人工看 =====")
|
|
for oldrel, newrel, osz, nsz in unknown:
|
|
print(f" - {oldrel} [{osz/1024:.1f}KB] <-> {newrel} [{nsz/1024:.1f}KB]")
|
|
|
|
json.dump({"b1": b1, "b2": b2, "b3": unknown},
|
|
open(r"D:\资料\03-项目开发\wecom_it_smart_desk\docs_cmp_result3.json", "w", encoding="utf-8"),
|
|
ensure_ascii=False, indent=1)
|