Files
wecom_it_smart_desk/cmp_docs3.py

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)