Files
ewoooc/scripts/ops/run_pixelrag_platform_probe_worker.py
ogt 911369c119
Some checks failed
CD Pipeline / deploy (push) Has been cancelled
feat(ai): add PixelRAG platform probe worker
2026-07-10 09:50:30 +08:00

109 lines
3.2 KiB
Python
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 platform probe 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_platform_probe_worker_service import ( # noqa: E402
run_pixelrag_platform_probe_worker,
)
def main() -> int:
parser = argparse.ArgumentParser(
description="執行或 dry-run PixelRAG platform probe worker。"
)
parser.add_argument(
"--artifact-root",
help="PixelRAG visual evidence artifact root預設使用 production/container 設定。",
)
parser.add_argument(
"--vlm-receipt-root",
help="PixelRAG VLM replay receipt root預設使用 production/container 設定。",
)
parser.add_argument(
"--output-root",
help="Platform probe worker receipt output root。",
)
parser.add_argument(
"--capture-output-root",
help="Public-context capture artifact output root預設寫回 PixelRAG visual evidence 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="最多處理 probe candidate 數。",
)
parser.add_argument(
"--timeout",
type=int,
default=30,
help="public-context capture timeout 秒數。",
)
parser.add_argument(
"--settle-ms",
type=int,
default=800,
help="頁面載入後等待毫秒數。",
)
parser.add_argument(
"--max-tiles",
type=int,
default=12,
help="每次 public-context capture 最多切出的 tiles。",
)
parser.add_argument(
"--execute",
action="store_true",
help="真的執行 public-context capture 或 structured fallback package未指定時只做 no-write dry-run。",
)
parser.add_argument(
"--write-receipt",
action="store_true",
help="execute 後寫入 platform probe worker artifact receipt不寫 DB。",
)
args = parser.parse_args()
payload = run_pixelrag_platform_probe_worker(
artifact_root=args.artifact_root,
vlm_receipt_root=args.vlm_receipt_root,
output_root=args.output_root,
capture_output_root=args.capture_output_root,
platform=tuple(args.platforms or ()),
max_age_hours=args.max_age_hours,
limit=args.limit,
timeout=args.timeout,
settle_ms=args.settle_ms,
max_tiles=args.max_tiles,
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())