0.4.0 convex及界面修改
This commit is contained in:
@@ -0,0 +1,81 @@
|
||||
#!/usr/bin/env python3
|
||||
# -*- coding: utf-8 -*-
|
||||
"""
|
||||
从 Wolai 帮助中心导出语料中抽取 Markdown 大纲(仅标题行),用于快速定位“页面组成/页面操作”内容。
|
||||
|
||||
示例:
|
||||
python scripts/wolai_help_center/extract_outlines.py --out artifacts/wolai-help-center-v4 --title-keyword 页面
|
||||
"""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import argparse
|
||||
import json
|
||||
from pathlib import Path
|
||||
from typing import Any, Dict, List
|
||||
|
||||
|
||||
def read_front_matter(md: str) -> Dict[str, Any]:
|
||||
if not md.startswith("---"):
|
||||
return {}
|
||||
try:
|
||||
meta_json = md.split("---", 2)[1].strip()
|
||||
return json.loads(meta_json)
|
||||
except Exception:
|
||||
return {}
|
||||
|
||||
|
||||
def extract_headings(md_body: str) -> List[str]:
|
||||
lines: List[str] = []
|
||||
for line in md_body.splitlines():
|
||||
if line.startswith("#"):
|
||||
lines.append(line.rstrip())
|
||||
return lines
|
||||
|
||||
|
||||
def main() -> int:
|
||||
parser = argparse.ArgumentParser()
|
||||
parser.add_argument("--out", type=str, default="artifacts/wolai-help-center-v4", help="抓取输出目录")
|
||||
parser.add_argument("--title-keyword", type=str, default="页面", help="仅输出标题包含该关键词的页面")
|
||||
args = parser.parse_args()
|
||||
|
||||
out_dir = Path(args.out)
|
||||
index_path = out_dir / "index.json"
|
||||
if not index_path.exists():
|
||||
raise SystemExit(f"未找到 {index_path}")
|
||||
|
||||
index = json.loads(index_path.read_text(encoding="utf-8"))
|
||||
results: List[Dict[str, Any]] = index.get("results") or []
|
||||
keyword = args.title_keyword.strip()
|
||||
|
||||
blocks: List[str] = []
|
||||
for r in results:
|
||||
md_rel = str(r.get("md") or "")
|
||||
if not md_rel:
|
||||
continue
|
||||
md_path = out_dir / md_rel
|
||||
if not md_path.exists():
|
||||
continue
|
||||
text = md_path.read_text(encoding="utf-8", errors="replace")
|
||||
meta = read_front_matter(text)
|
||||
title = str(meta.get("title") or "")
|
||||
if keyword and keyword not in title:
|
||||
continue
|
||||
md_rel_norm = md_rel.replace("\\", "/")
|
||||
body = text.split("---", 2)[2] if text.startswith("---") and len(text.split("---", 2)) == 3 else text
|
||||
headings = extract_headings(body)
|
||||
blocks.append(f"## {title}\n\n- pageId: {meta.get('pageId')}\n- md: {md_rel_norm}\n")
|
||||
for h in headings:
|
||||
blocks.append(f"{h}\n")
|
||||
blocks.append("\n")
|
||||
|
||||
analysis_dir = out_dir / "analysis"
|
||||
analysis_dir.mkdir(parents=True, exist_ok=True)
|
||||
out_path = analysis_dir / f"outlines_{keyword or 'all'}.md"
|
||||
out_path.write_text("".join(blocks), encoding="utf-8")
|
||||
print(f"已写入:{out_path}")
|
||||
return 0
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
raise SystemExit(main())
|
||||
Reference in New Issue
Block a user