cli.py 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. from __future__ import annotations
  2. import argparse
  3. import json
  4. from pathlib import Path
  5. from aigc_push_registry.registry import AigcPushRegistry, import_live_logs
  6. def main() -> None:
  7. parser = argparse.ArgumentParser(description="AIGC push registry")
  8. parser.add_argument("--env-file", default=".env", help="Project env file for CONTENT_SUPPLY_DB_*")
  9. sub = parser.add_subparsers(dest="command", required=True)
  10. sub.add_parser("init-db", help="Create AIGC push registry tables")
  11. import_parser = sub.add_parser("import-live-logs", help="Import only live AIGC push logs into DB")
  12. import_parser.add_argument("--log-dir", default="e2e_logs")
  13. upsert_parser = sub.add_parser("upsert", help="Upsert one manual pushed record JSON")
  14. upsert_parser.add_argument("--file", required=True)
  15. list_parser = sub.add_parser("list", help="List pushed records from DB")
  16. list_parser.add_argument("--platform")
  17. list_parser.add_argument("--demand-content-id", type=int)
  18. list_parser.add_argument("--run-id")
  19. list_parser.add_argument("--limit", type=int, default=200)
  20. args = parser.parse_args()
  21. registry = AigcPushRegistry.from_env(args.env_file)
  22. if args.command == "init-db":
  23. registry.init_db()
  24. print("created content_agent_aigc_push_* tables")
  25. return
  26. if args.command == "import-live-logs":
  27. registry.init_db()
  28. imported = import_live_logs(registry, Path(args.log_dir))
  29. print(json.dumps({"imported": len(imported), "push_record_ids": [row["push_record_id"] for row in imported]}, ensure_ascii=False, indent=2))
  30. return
  31. if args.command == "upsert":
  32. registry.init_db()
  33. payload = json.loads(Path(args.file).read_text(encoding="utf-8"))
  34. registry.upsert_record(payload)
  35. print(json.dumps({"upserted": payload.get("push_record_id")}, ensure_ascii=False))
  36. return
  37. if args.command == "list":
  38. payload = registry.list_records(
  39. platform=args.platform,
  40. demand_content_id=args.demand_content_id,
  41. run_id=args.run_id,
  42. limit=args.limit,
  43. )
  44. print(json.dumps(payload, ensure_ascii=False, indent=2))
  45. return
  46. if __name__ == "__main__":
  47. main()