reset_demo.py 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. """reset_demo.py —— 把 4 条演示归纳与 26 条演示成果恢复到干净状态(仅用于本轮演示数据)。
  2. 重置后重新运行 enrich.py 得到一致的演示样本。
  3. 运行:PARSE_MASTER_KEY=... python3 tools/reset_demo.py"""
  4. import json
  5. import os
  6. import sys
  7. import urllib.request
  8. BASE = "https://kangshifu.fmode.cn/parse"
  9. H = {"X-Parse-Application-Id": "FKieRbIoGt_main", "Content-Type": "application/json"}
  10. MK = os.environ.get("PARSE_MASTER_KEY", "")
  11. if not MK:
  12. sys.exit("PARSE_MASTER_KEY 未设置")
  13. H["X-Parse-Master-Key"] = MK
  14. def call(m, p, b=None):
  15. r = urllib.request.Request(BASE + p, data=json.dumps(b).encode() if b is not None else None, headers=H, method=m)
  16. with urllib.request.urlopen(r, timeout=30) as resp:
  17. return json.loads(resp.read().decode() or "{}")
  18. arts = call("GET", "/classes/KfArtifact?limit=1000")["results"]
  19. for a in arts:
  20. call("PUT", f"/classes/KfArtifact/{a['objectId']}", {
  21. "sources": [], "layer": "process", "meta": {},
  22. "evidenceLevel": "supported" if a.get("evidenceLevel") == "verified" else a.get("evidenceLevel"),
  23. })
  24. print("artifacts reset:", len(arts))
  25. ins = call("GET", "/classes/KfInsight?limit=1000")["results"]
  26. for i in ins:
  27. call("PUT", f"/classes/KfInsight/{i['objectId']}", {
  28. "derivedFrom": ["KHEScCO5dT"] if i["title"] == "学生党价格带敏感" else
  29. (["KHEScCO5dT", "5icUD1vUVN"] if "露营" not in i["title"] else []),
  30. "crossRefCount": {"拌面酱包口味单一被反复提及": 7, "夜宵场景对低卡有明确诉求": 5,
  31. "学生党价格带敏感": 4, "露营场景渗透率低": 2}.get(i["title"], 0),
  32. "evidenceQuoteCount": 0, "owners": [], "citedWith": [], "layer": "sediment",
  33. })
  34. print("insights reset:", [i["title"] for i in ins])