Files
zk-data-agent/skills/online-mining-v2/scripts/elk_fetch_by_request_ids.py
T
2026-05-12 17:01:43 +08:00

62 lines
1.9 KiB
Python

from __future__ import annotations
from online_mining_common import (
compact_text,
emit_error,
emit_success,
extract_case,
fetch_one_by_request_id,
load_json_payload,
string_values,
write_optional_jsonl,
)
def main() -> int:
try:
payload = load_json_payload()
request_ids = string_values(payload.get("request_ids"))
if not request_ids:
raise ValueError("request_ids is required")
sources = payload.get("sources") or ["main", "pre_processing"]
date = payload.get("date")
rows = []
for request_id in request_ids:
item = {"request_id": request_id}
for source in sources:
doc = fetch_one_by_request_id(str(source), request_id, date)
item[str(source)] = extract_case(str(source), doc) if doc else None
rows.append(item)
output_path = write_optional_jsonl(str(payload.get("output_path") or ""), rows)
emit_success(
{
"date": date or "past-48h",
"count": len(rows),
"output_path": output_path,
"cases": [
{
source: (
{
key: compact_text(value, 1000)
for key, value in (case or {}).items()
if key != "raw" and value not in (None, "", [], {})
}
if isinstance(case, dict)
else case
)
for source, case in row.items()
}
for row in rows
],
}
)
return 0
except Exception as exc: # noqa: BLE001
emit_error(exc)
return 1
if __name__ == "__main__":
raise SystemExit(main())