import os, re bases = { "A-内卷": "/app/working/workspaces/default/novels/r2-xi-tong-nei-juan", "B-替身": "/app/working/workspaces/default/novels/r2-quan-ji-di-ti-shen", "C-考研": "/app/working/workspaces/default/novels/r2-quan-ban-kao-yan", "D-修脚": "/app/working/workspaces/default/novels/r2-ai-xiu-jiao", } def get_num(f): m = re.search(r"第(\\d+)章", f) return int(m.group(1)) if m else 99 print("=" * 70) print("第二轮4部短故事 -- 最终质量验证") print("=" * 70) for name, base in bases.items(): files = sorted( [f for f in os.listdir(base) if f.endswith(".md") and f != "README.md"], key=get_num ) all_text = "".join(open(os.path.join(base, f)).read() for f in files) sizes = [len(open(os.path.join(base, f)).read().encode("utf-8")) for f in files] hanzi = len(re.findall(r"[\\u4e00-\\u9fff]", all_text)) # AI味 r = len(re.findall(r"燃点|【燃|(燃", all_text)) w = len(re.findall(r"第[一二三四五六七八九十百]+章.*完", all_text)) s = len(re.findall(r"深吸一口气|深呼一口气", all_text)) wo = len(re.findall(r"握紧|攥紧|捏紧", all_text)) d = len(re.findall(r"^\\s*——+\\s*$", all_text, re.MULTILINE)) m = len(re.findall(r"不对.*系统|这不是.*小说|作者注", all_text)) q = len(re.findall(r"(全书完)|(全文完)", all_text)) print() print("-" * 60) print(name) print("-" * 60) avg = sum(sizes) // 15 if len(sizes) == 15 else 0 print(f" 汉字:~{hanzi} | 均:{avg}b | 最短:{min(sizes)}b | 最长:{max(sizes)}b") print(f" 15章完整: {'OK' if len(files)==15 else 'ISSUE'}") flags = [] if r: flags.append(f"燃点({r})") if w: flags.append(f"章末标({w})") if s >= 3: flags.append(f"深吸气({s})") if wo >= 5: flags.append(f"握紧({wo})") if d: flags.append(f"——行({d})") if m: flags.append(f"meta自嘲({m})") if q: flags.append(f"全书完({q})") if flags: print(f" AI味残留: ⚠️ {' | '.join(flags)}") else: print(f" AI味残留: ✅ 零残留") if min(sizes) < 1200: print(f" 章节完整度: ⚠️ 最短仅{min(sizes)}b") else: print(f" 章节完整度: ✅ 全部>=1200b") score = 100 score -= r * 15 score -= w * 15 if s >= 3: score -= 10 if wo >= 5: score -= 10 score -= d * 5 score -= m * 10 score -= q * 15 if min(sizes) < 1200: score -= 5 print(f" 最终评分: {max(score, 0)}/100") if score >= 90: print(" 评级: S -- 可直接投番茄") elif score >= 75: print(" 评级: A -- 微调后可投") elif score >= 60: print(" 评级: B -- 需要修改") else: print(" 评级: C -- 不建议投") print() print("=" * 70) print("验证完成") print("=" * 70)