"""命令行入口:python -m creation_knowledge.cli run --urls <...>""" from __future__ import annotations import argparse import json from creation_knowledge.pipeline import run_pipeline def build_parser() -> argparse.ArgumentParser: parser = argparse.ArgumentParser(prog="creation_knowledge") sub = parser.add_subparsers(dest="command", required=True) run = sub.add_parser("run", help="跑流水线:拉取->提取->筛选->拆分->解构->组装[->入库]") run.add_argument("--urls", nargs="+", required=True, help="帖子链接或 content_id") run.add_argument("--env-file", default=".env", help="环境变量文件路径") run.add_argument("--ingest", action="store_true", help="开启真实入库(默认关闭,只组装+存库)") return parser def main() -> int: args = build_parser().parse_args() if args.command == "run": results = run_pipeline( args.urls, env_file=args.env_file, ingest_enabled=True if args.ingest else False, ) for r in results: print(json.dumps(r, ensure_ascii=False)) ok = sum(1 for r in results if r["status"] == "done") rej = sum(1 for r in results if r["status"] == "rejected") fail = len(results) - ok - rej print(f"\n汇总:done={ok} rejected={rej} failed={fail} / 共 {len(results)}") return 0 if __name__ == "__main__": raise SystemExit(main())