| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 |
- """M5 真实 e2e:把 5 个样例帖跑完整流水线,落 DB(INGEST_ENABLED=False),再回读校验。
- 须在能连 DB + OpenRouter 的云端跑(会有 crawler/Gemini/claude 调用费)。
- 用法:python scripts/run_batch.py [env_file] [content_id ...]
- """
- from __future__ import annotations
- import json
- import sys
- from creation_knowledge.config import PgConfig
- from creation_knowledge.integrations.db import CkStore
- from creation_knowledge.pipeline import run_pipeline
- DEFAULT_IDS = [
- "67e4bdf50000000006028a59", # HOW+WHAT 海狸
- "698481e1000000000a02a7c1", # HOW+WHAT Irvin
- "67e2e39b0000000003028ff0", # HOW 拾意
- "699308fa0000000016009697", # WHY 方圆
- "680659e8000000001a007a11", # HOW+WHY+WHAT 拾意
- ]
- def main() -> int:
- args = sys.argv[1:]
- env_file = args[0] if args and args[0].endswith(".env") else ".env"
- ids = [a for a in args if not a.endswith(".env")] or DEFAULT_IDS
- print(f"=== 跑流水线:{len(ids)} 个样例(ingest 关闭)===")
- results = run_pipeline(ids, env_file=env_file)
- for r in results:
- print(json.dumps(r, ensure_ascii=False))
- print("\n=== DB 回读校验 ===")
- store = CkStore(PgConfig.from_env(env_file))
- for r in results:
- pid = r.get("post_id")
- if not pid:
- print(f"{r['url']} -> {r['status']}")
- continue
- post = store.read_post(pid)
- items = store.read_items(pid)
- statuses = [it["ingest_status"] for it in items]
- print(f"{pid} stage={post['stage']} items={len(items)} ingest_status={statuses}")
- return 0
- if __name__ == "__main__":
- raise SystemExit(main())
|