Files
ewoooc/scripts/ops/run_pixelrag_source_contract_replay_worker.py
ogt 05296f20c5
Some checks failed
CD Pipeline / deploy (push) Has been cancelled
feat(ai): add PixelRAG source contract replay worker
2026-07-10 10:49:56 +08:00

83 lines
2.5 KiB
Python
Executable File
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/usr/bin/env python3
"""Run or dry-run the PixelRAG source-contract replay worker."""
from __future__ import annotations
import argparse
import json
import sys
from pathlib import Path
ROOT = Path(__file__).resolve().parents[2]
if str(ROOT) not in sys.path:
sys.path.insert(0, str(ROOT))
from services.pixelrag_source_contract_replay_worker_service import ( # noqa: E402
run_pixelrag_source_contract_replay_worker,
)
def main() -> int:
parser = argparse.ArgumentParser(
description="執行或 dry-run PixelRAG source-contract replay worker。"
)
parser.add_argument(
"--artifact-root",
help="PixelRAG visual evidence artifact root預設使用 production/container 設定。",
)
parser.add_argument(
"--platform-probe-worker-receipt-root",
help="PixelRAG platform probe worker receipt root預設使用 production/container 設定。",
)
parser.add_argument(
"--output-root",
help="Source-contract replay artifact receipt output root。",
)
parser.add_argument(
"--platform",
action="append",
dest="platforms",
help="限制平台,可重複指定,例如 --platform shopee_tw --platform coupang_tw。",
)
parser.add_argument(
"--max-age-hours",
type=int,
default=168,
help="receipt 最大新鮮度小時數。",
)
parser.add_argument(
"--limit",
type=int,
default=25,
help="最多處理 source-contract fallback receipt 數。",
)
parser.add_argument(
"--execute",
action="store_true",
help="執行 source-contract replay未指定時只做 no-write dry-run。",
)
parser.add_argument(
"--write-receipt",
action="store_true",
help="execute 後寫入 source-contract replay artifact receipt不寫 DB。",
)
args = parser.parse_args()
payload = run_pixelrag_source_contract_replay_worker(
artifact_root=args.artifact_root,
platform_probe_worker_receipt_root=args.platform_probe_worker_receipt_root,
output_root=args.output_root,
platform=tuple(args.platforms or ()),
max_age_hours=args.max_age_hours,
limit=args.limit,
execute=args.execute,
write_receipt=bool(args.write_receipt and args.execute),
)
print(json.dumps(payload, ensure_ascii=False, indent=2, sort_keys=True))
return 0 if payload.get("success") else 1
if __name__ == "__main__":
raise SystemExit(main())